Я настраиваю SFTP для группы пользователей, которым я хочу иметь доступ только к SFTP, для загрузки файлов на сервер. Я уже заключил их в свои домашние каталоги и заблокировал вход в оболочку. В каждом домашнем каталоге есть подпапка для получения загрузок. Я хотел бы, чтобы SFTP-соединения автоматически менялись на эту папку загрузки при входе в систему. Довольно стандартный.
я использую ForceCommand
для успешного достижения этого на старом сервере.Однако на новом сервере, который я сейчас готовлю, это не работает. Почему?
/etc/ssh/sshd_config.d/sftpgroup.conf
Соответствие группы ftpgroup
# Следующие две директивы заставляют ftpgroup стать chroot
# и иметь только SFTP. Никакой другой настройки chroot не требуется.
ChrootDirectory /home/ftp_users/%u
ForceCommand внутренний sftp -u 0002
# Для дополнительной паранойи запретите все типы переадресации портов.
AllowTcpForwarding нет
GatewayPorts нет
X11Номер переадресации
# Принудительное локальное ведение журнала
ForceCommand /usr/lib/openssh/sftp-server -l ПОДРОБНО
# Изменить каталог по умолчанию на ~/upload
ForceCommand cd /upload
/var/log/auth.log с LogLevel DEBUG3
9 марта 15:18:03 MyServer sshd [393644]: debug1: userauth-запрос для пользователя myuser service метод ssh-соединения нет [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug1: попытка 0 сбоев 0 [предварительная проверка]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_getpwnamразрешить ввод [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_send ввод: введите 8 [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_getpwnamallow: ожидание MONITOR_ANS_PWNAM [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect ввод: введите 9 [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive ввод [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive ввод
9 марта 15:18:03 MyServer sshd[393644]: debug3: monitor_read: проверка запроса 8
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_answer_pwnamallow
9 марта 15:18:03 MyServer sshd[393644]: debug2: parse_server_config_depth: config reprocess config len 383
9 марта 15:18:03 MyServer sshd[393644]: debug2: parse_server_config_depth: config /etc/ssh/sshd_config.d/sftpgroup.conf len 228
9 марта 15:18:03 MyServer sshd[393644]: debug3: проверка совпадения для пользователя «Группа ftpgroup,! sftpgroup» myuser host 1.2.3.4 addr 1.2.3.4 laddr 10.0.0.4 lport 22
9 марта 15:18:03 MyServer sshd[393644]: debug1: пользователь myuser не соответствует списку групп ftpgroup,!sftpgroup в строке 4
9 марта, 15:18:03 MyServer sshd[393644]: debug3: совпадение не найдено
9 марта 15:18:03 MyServer sshd [393644]: debug3: проверка соответствия для пользователя «Группа ftpgroup» myuser host 1.2.3.4 addr 1.2.3.4 laddr 10.0.0.4 lport 22
9 марта 15:18:03 MyServer sshd[393644]: debug1: пользователь myuser соответствует списку групп ftpgroup в строке 9
9 марта 15:18:03 MyServer sshd[393644]: debug3: совпадение найдено
9 марта 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:12 настройка ChrootDirectory /home/ftp_users/%u
9 марта 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:13 настройка ForceCommand internal-sftp -u 0002
9 марта 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:15 параметр AllowTcpForwarding нет
9 марта 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:16 параметр GatewayPorts нет
9 марта 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:17 установка X11Forwarding нет
9 марта 15:18:03 MyServer sshd[393644]: debug3: /etc/ssh/sshd_config.d/sftpgroup.conf:21 настройка ForceCommand cd /upload
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_answer_pwnamallow: отправка MONITOR_ANS_PWNAM: 1
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_send ввод: введите 9
9 марта 15:18:03 MyServer sshd[393644]: debug2: monitor_read: 8 используется один раз, сейчас отключается
9 марта 15:18:03 MyServer sshd[393644]: debug2: input_userauth_request: настройка authctxt для myuser [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_start_pam ввод [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_send ввод: введите 100 [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_inform_authserv, ввод [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_send ввод: тип 4 [предварительная авторизация]
9 марта, 15:18:03 MyServer sshd[393644]: debug2: input_userauth_request: попробуйте метод none [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: user_specific_delay: пользовательская задержка 0,000 мс [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: sure_minimum_time_since: истекло 2,862 мс, задержка 4,136 мс (запрошено 6,998 мс) [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive ввод
9 марта 15:18:03 MyServer sshd[393644]: debug3: monitor_read: проверка запроса 100
9 марта 15:18:03 MyServer sshd[393644]: debug1: PAM: инициализация для «myuser»
9 марта 15:18:03 MyServer sshd[393644]: debug1: PAM: установка PAM_RHOST на «1.2.3.4»
9 марта 15:18:03 MyServer sshd[393644]: debug1: PAM: установка PAM_TTY на «ssh»
9 марта, 15:18:03 MyServer sshd[393644]: debug2: monitor_read: 100 используется один раз, сейчас отключается
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive ввод
9 марта 15:18:03 MyServer sshd[393644]: debug3: monitor_read: проверка запроса 4
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_answer_authserv: service=ssh-connection, style=, role=
9 марта, 15:18:03 MyServer sshd[393644]: debug2: monitor_read: 4 используется один раз, сейчас отключается
9 марта 15:18:03 MyServer sshd[393644]: debug3: userauth_finish: частичное сбой = 0 следующие методы = "publickey, пароль" [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: отправить пакет: тип 51 [предварительная проверка]
9 марта 15:18:03 MyServer sshd[393644]: debug3: получить пакет: тип 2 [preauth]
9 марта, 15:18:03 MyServer sshd[393644]: debug3: получен SSH2_MSG_IGNORE [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: получить пакет: тип 50 [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug1: userauth-запрос для пользователя myuser service пароль метода ssh-соединения [preauth]
9 марта, 15:18:03 MyServer sshd[393644]: debug1: попытка 1 сбой 0 [предварительная проверка]
9 марта 15:18:03 MyServer sshd[393644]: debug2: input_userauth_request: попробуйте пароль метода [preauth]
9 марта, 15:18:03 MyServer sshd[393644]: debug3: ввод пароля mm_auth_password [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_send ввод: введите 12 [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_auth_password: ожидание MONITOR_ANS_AUTHPASSWORD [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect ввод: введите 13 [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive ввод [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive ввод
9 марта 15:18:03 MyServer sshd[393644]: debug3: monitor_read: проверка запроса 12
9 марта 15:18:03 MyServer sshd[393644]: debug3: PAM: sshpam_passwd_conv вызван с 1 сообщением
9 марта 15:18:03 MyServer sshd[393644]: debug1: PAM: аутентификация по паролю принята для myuser
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_answer_authpassword: результат отправки 1
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_send ввод: введите 13
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect ввод: введите 102
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive ввод
9 марта 15:18:03 MyServer sshd[393644]: debug1: do_pam_account: вызывается
9 марта 15:18:03 MyServer sshd[393644]: debug2: do_pam_account: информация аутентификации в SSH_AUTH_INFO_0
9 марта 15:18:03 MyServer sshd[393644]: debug3: PAM: do_pam_account pam_acct_mgmt = 0 (Успех)
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_send ввод: введите 103
9 марта 15:18:03 MyServer sshd[393644]: Принят пароль для myuser с порта 1.2.3.4 55095 ssh2
9 марта 15:18:03 MyServer sshd[393644]: debug1: monitor_child_preauth: мой пользователь прошел проверку подлинности привилегированным процессом
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_get_keystate: Ожидание новых ключей
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect ввод: введите 26
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive ввод
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_get_keystate: ПОЛУЧИЛ новые ключи
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_auth_password: пользователь аутентифицирован [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: user_specific_delay: пользовательская задержка 0,000 мс [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: sure_minimum_time_since: истекло 7,172 мс, задержка 6,825 мс (запрошено 6,998 мс) [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_do_pam_account ввод [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_send ввод: введите 102 [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive_expect ввод: введите 103 [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_receive ввод [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_do_pam_account возвращает 1 [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: отправить пакет: тип 52 [предварительная проверка]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_request_send ввод: введите 26 [preauth]
9 марта 15:18:03 MyServer sshd[393644]: debug3: mm_send_keystate: состояние отправки завершено [предварительная проверка]
9 марта 15:18:03 MyServer sshd[393644]: debug1: monitor_read_log: дочерний журнал fd закрыт
9 марта 15:18:03 MyServer sshd[393644]: debug3: ssh_sandbox_parent_finish: завершено
9 марта 15:18:03 MyServer sshd[393644]: debug1: PAM: установка учетных данных
9 марта 15:18:03 MyServer sshd[393644]: debug3: PAM: открытие сеанса
9 марта, 15:18:03 MyServer sshd[393644]: debug2: do_pam_session: информация об аутентификации в SSH_AUTH_INFO_0
9 марта 15:18:03 MyServer sshd[393644]: pam_unix(sshd:session): сеанс открыт для пользователя myuser(uid=1001) пользователем (uid=0)
9 марта 15:18:03 MyServer systemd-logind[607]: новый сеанс 530 пользователя myuser.
9 марта 15:18:03 MyServer systemd: pam_unix(systemd-user:session): сеанс открыт для пользователя myuser(uid=1001) пользователем (uid=0)
9 марта 15:18:03 MyServer sshd[393644]: debug3: PAM: sshpam_store_conv вызван с 1 сообщением
9 марта 15:18:03 MyServer sshd[393644]: debug3: PAM: sshpam_store_conv вызван с 1 сообщением
9 марта 15:18:03 MyServer sshd[393644]: дочерний пользователь находится на pid 393672
9 марта 15:18:03 MyServer sshd[393672]: debug1: поддержка SELinux отключена
9 марта 15:18:03 MyServer sshd[393672]: debug1: PAM: установка учетных данных
9 марта 15:18:03 MyServer sshd[393672]: debug3: safe_chroot: проверка '/'
9 марта 15:18:03 MyServer sshd[393672]: debug3: safe_chroot: проверка '/home/'
9 марта 15:18:03 MyServer sshd[393672]: debug3: safe_chroot: проверка '/home/ftp_users/'
9 марта 15:18:03 MyServer sshd[393672]: debug3: safe_chroot: проверка '/home/ftp_users/myuser'
9 марта 15:18:04 MyServer sshd[393644]: debug3: mm_request_receive входит
9 марта 15:18:04 MyServer sshd[393644]: debug3: monitor_read: проверка запроса 113
9 марта 15:18:04 MyServer sshd[393644]: debug3: mm_answer_audit_command ввод
ssh -V
Старый сервер:
- OpenSSH_7.9p1 Debian-10+deb10u2, OpenSSL 1.1.1d 10 сентября 2019 г.
Новый сервер:
- OpenSSH_8.4p1 Debian-5, OpenSSL 1.1.1k 25 марта 2021 г.
Обновлять
Оказывается, в старой системе это действительно работало из-за манипулирования домашними папками и символическими ссылками, а не из-за ForceCommand
директива в этой системе (даже если эта директива существует).
ln -s /home/ftp_users/мой пользователь /home/мой пользователь
usermod -d /home/мой пользователь мой пользователь
ln -s ../upload /home/ftp_users/myuser/home/myuser
Поэтому, когда пользователь входит в систему и переходит на ~
это идет к /дом/мой пользователь
который является символической ссылкой для /загрузить
. При сопоставлении настройки домашней папки со старой системой новая система теперь правильно маршрутизируется при входе в систему. Немного хакерский и определенно неоптимальный (пытался избежать этого, правда), но он «работает».
Тогда возникает вопрос, почему не ForceCommand
отменить это? Он вообще выполняется? Как я могу сказать?