我正在按照这些说明设置 sftp 和 scp(尽管我也想添加 rsync),但是当被监禁的帐户登录时,它会立即断开连接,而不会出现任何我可以看到的错误。
文档说,如果发生这种情况,你需要这样做journalctl|grep jk_
,这给出了这个(也不是错误):
jk_chrootsh[3157425]: now entering jail /home/jail for user jailtest (1001) with arguments -c /usr/lib/openssh/sftp-server
我在 Jailkit 上找到的大多数(如果不是全部)信息似乎都相当陈旧,尽管我看到 Jailkit 本身已于 2021 年 10 月更新。有谁知道它是否仍然可以在 Ubuntu 上运行,或者我如何追踪正在发生的错误?
我过去曾在 Ubuntu 18 中成功使用 Jailkit。我开始认为 20 中发生了一些根本性的变化(也许是快照?),这在某种程度上禁用了 Jailkit。
/home/jail/etc/passwd:
jailtest:x:1001:1004:tester,,,:/home/jailtest:/usr/sbin/jk_lsh
/etc/jailkit/jk_lsh.ini:
[jailtest]
paths= /usr/bin, /usr/lib/openssh
executables= /usr/bin/scp, /usr/lib/openssh/sftp-server
ldd /usr/sbin/jk_lsh
linux-vdso.so.1 (0x00007ffce6d11000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f91ffee6000)
/lib64/ld-linux-x86-64.so.2 (0x00007f920011f000)
strace chroot /home/jail/ /usr/sbin/jk_lsh
而其他的东西似乎并没有表现出什么缺失。
scp -v ./test.txt [email protected]:/home/jailtest/
来自客户端的显示没有错误并且只是挂断:
debug1: Sending environment.
debug1: channel 0: setting env LANG = "en_GB.UTF-8"
debug1: Sending subsystem: sftp
debug1: pledge: fork
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype [email protected] reply 0
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 4172, received 4132 bytes, in 0.4 seconds
Bytes per second: sent 9390.9, received 9300.9
debug1: Exit status 3
scp: Connection closed
我的 sshd_config 是:
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
AllowGroups ssh-users # I've put the jailed user into this, removing it causes a permissions error