chroot、gpg-agent 和 Ubuntu 18.04

chroot、gpg-agent 和 Ubuntu 18.04

为了通过 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

当我禁用chrootin时/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

相关内容