Для доступа по SFTP к моему серверу я создал пользователя sftp, который ограничен рабочим каталогом с помощью chroot
.
Match User sftp-user
AuthorizedKeysFile /home/sftp-user/.ssh/authorized_keys
ChrootDirectory /var/www/domain
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
И эта запись в /etc/passwd
sftp-user:x:1003:1003::/html:/usr/sbin/nologin
Были некоторые проблемы с ключевым файлом, но установка для него абсолютного пути решила проблему. Вход по SFTP работал нормально до тех пор, пока - я точно не знаю - мониторинг сервера nagios не был установлен на сервере (VPS) и / или не были запущены обновления, и система не была перезагружена.
Теперь соединение не работает и syslog
показывает эту ошибку:
systemd[7590]: gpgconf: running /usr/bin/gpg-agent failed (exitcode=2): General error
systemd[7590]: gpgconf: fatal error (exit status 1)
Эта ошибка возникает независимо от того, осуществляется ли вход через ключевой файл или пароль. Итак, я попытался ответить на вопрос gpg-agent говорит, что агент существует, но gpg говорит, что агента не существует? чтобы сузить проблему.
$ gpg-agent --version
gpg-agent (GnuPG) 2.2.4
libgcrypt 1.8.1
Когда я начал gpg-agent
как пользователь (не пользователь sftp), он создает файл в домашнем каталоге при первом запуске:
$ gpg -d demo-file.asc
gpg: keybox '/home/username/.gnupg/pubring.kbx' created
Когда я отключаю chroot
в /etc/ssh/sshd_config
, логин работает правильно. Поэтому я предполагаю, что какой-то доступ в сеансе chroot не работает. Поскольку пользователю sftp не разрешено использовать оболочку, я не bind
любые каталоги в домашний каталог пользователя sftp.
На самом деле это был .gnupg
каталог, который не удалось создать. Домашний каталог, указанный в /etc/passwd
(/html
) является относительным во время сеанса SFTP, но понимается как абсолютный путь во время входа в систему. Следовательно...
.gnupg
в chroot + home = /var/www/domain/html
не помогло./html/.gnupg
(.gnupg
принадлежит sftp-user) удалил сообщение об ошибке из /syslog
.Чтобы решить дальнейшие проблемы (конечно, не сразу), я начал другой sshd
демон в подробном режиме и подключен к этому порту .... но здесь это приведет к не по теме.
sudo /usr/sbin/sshd -d -p 3321