SSH ChrootDirectory 登录失败,错误:/dev/pts/2:没有此文件或目录

SSH ChrootDirectory 登录失败,错误:/dev/pts/2:没有此文件或目录

我在 Ubuntu 中创建了一个用户并为他们提供了密码验证访问权限,以便他们可以使用 ssh 登录,但我想限制他们的使用范围,位于以下位置的自定义主文件夹:

/var/www/daniel (is a root folder with correct permissions)
/var/www/daniel/home (which is owned by daniel:daniel and 755 permissions) 

/etc/ssh/sshd_config (i've enabled internal sftp)

Match User daniel
  PasswordAuthentication yes
  AllowTCPForwarding no
  ForceCommand internal-sftp
  ChrootDirectory %h
  X11Forwarding no

重新启动 ssh 服务

然后当我尝试登录时,我可以看到

auth.log

用户登录成功,但随后会根据此错误终止会话

Accepted password for daniel ssh2
pam_unix(sshd:session): session opened for user daniel by (uid=0)
systemd-logind[508]: New session 63 of user daniel.
pam_unix(systemd-user:session): session opened for user daniel by (uid=0)
error: /dev/pts/2: No such file or directory
pam_unix(sshd:session): session closed for user daniel
Session 63 logged out. Waiting for processes to exit.

有任何想法吗?

更新

我已经执行了下面的操作https://unix.stackexchange.com/questions/160461/chroot-gone-wrong-cant-ssh-with-user

mount --bind /dev /var/daniel/dev
mount --bind /dev/pts /var/daniel/dev/pts

错误似乎已经消失,但授权后它直接将我注销

Accepted password for daniel
pam_unix(sshd:session): session opened for user daniel by (uid=0)
systemd-logind[508]: New session 130 of user daniel.
systemd: pam_unix(systemd-user:session): session opened for user daniel by (uid=0)
pam_unix(sshd:session): session closed for user daniel
systemd-logind[508]: Session 130 logged out. Waiting for processes to exit.

答案1

查看/etc/passwd

通常是用户主目录/home/USER,在这种情况下变量%h映射到文件路径/home/daniel

/bin/bash如果用户能够通过 SSH 登录,您还需要提供 chroot 内的路径或类似的 shell。

答案2

在 Ubuntu 上已经使用这个好几年了。

Subsystem sftp /usr/lib/openssh/sftp-server
Match Group sftp
    AllowTcpForwarding no
    ChrootDirectory %h
    ForceCommand internal-sftp
    PasswordAuthentication yes
    X11Forwarding no

chroot 目录必须由 root 拥有,并且用户无权写入。内部目录可以写入。这样做是为了避免主文件可以更改库预加载。但如果这是错误的,您将在 auth.log 中收到错误。

您还必须将客户端限制为 sftp,而不是使用终端打开正常的 ssh 会话。

相关内容