为了通过 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 登录工作正常,直到 - 我不完全清楚 - 在服务器(VPS)上安装了 nagios 服务器监控和/或运行了更新,并且系统重新启动。
现在,连接失败并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
in时/etc/ssh/sshd_config
,登录可以正常工作。因此,我假设 chroot 会话中的某些访问失败。由于不允许 sftp 用户使用 shell,因此我没有将bind
任何目录放入 sftp 用户的主目录中。
答案1
实际上是.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