SSH失败的监狱帐户

我试图设置一个用户帐户的chroot监狱,我专门为ssh设置。

我设置了它,它似乎昨天工作正常,但今天它不工作。 它似乎并不是一个SSH问题,因为我可以与其他用户帐户SSH很好。 这里是详细的SSH加上我得到的错误

OpenSSH_6.9p1, LibreSSL 2.1.8 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 20: Applying options for * debug1: /etc/ssh/ssh_config line 102: Applying options for * debug1: Connecting to 130.191.240.69 [130.191.240.69] port 22. debug1: Connection established. debug1: key_load_public: No such file or directory debug1: identity file /Users/client/.ssh/id_rsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/client/.ssh/id_rsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/client/.ssh/id_dsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/client/.ssh/id_dsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/client/.ssh/id_ecdsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/client/.ssh/id_ecdsa-cert type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/client/.ssh/id_ed25519 type -1 debug1: key_load_public: No such file or directory debug1: identity file /Users/client/.ssh/id_ed25519-cert type -1 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_6.9 debug1: Remote protocol version 2.0, remote software version OpenSSH_5.2 debug1: match: OpenSSH_5.2 pat OpenSSH_5* compat 0x0c000000 debug1: Authenticating to 130.191.240.69:22 as 'jaileduser' debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-ctr [email protected] none debug1: kex: client->server aes128-ctr [email protected] none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<3072<8192) sent debug1: got SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: got SSH2_MSG_KEX_DH_GEX_REPLY debug1: Server host key: ssh-rsa SHA256:I7TPrpH1RDXr2pnfVc8xpjHiZ9okuzsIJkAm4dBOHHI debug1: Host '130.191.240.69' is known and matches the RSA host key. debug1: Found key in /Users/client/.ssh/known_hosts:2 debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: Roaming not allowed by server debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey,keyboard-interactive debug1: Next authentication method: publickey debug1: Trying private key: /Users/client/.ssh/id_rsa debug1: Trying private key: /Users/client/.ssh/id_dsa debug1: Trying private key: /Users/client/.ssh/id_ecdsa debug1: Trying private key: /Users/client/.ssh/id_ed25519 debug1: Next authentication method: keyboard-interactive Password: debug1: Authentication succeeded (keyboard-interactive). Authenticated to 130.191.240.69 ([130.191.240.69]:22). debug1: channel 0: new [client-session] debug1: Requesting [email protected] debug1: Entering interactive session. debug1: channel 0: free: client-session, nchannels 1 Connection to 130.191.240.69 closed by remote host. Connection to 130.191.240.69 closed. Transferred: sent 2840, received 2344 bytes, in 0.5 seconds Bytes per second: sent 6236.2, received 5147.1 debug1: Exit status -1 

据我可以告诉我能够连接,然后立即closures连接。 我怀疑这可能是在chroot监狱内丢失的东西,但我一直无法弄清楚。 任何帮助将不胜感激

注释ChrootDirectory命令将让用户松动,并允许连接,但权限是正确的与链接修复,所以我不认为这是问题。 我也没有在我的输出中的错误。

我想我也应该为/ usr / sbin / sshd -d添加输出,希望能够添加更多有用的信息

 /usr/sbin/sshd -d debug1: sshd version OpenSSH_5.2p1 Could not load host key: /etc/ssh_host_rsa_key Could not load host key: /etc/ssh_host_dsa_key debug1: setgroups() failed: Operation not permitted debug1: rexec_argv[0]='/usr/sbin/sshd' debug1: rexec_argv[1]='-d' debug1: Bind to port 22 on 0.0.0.0. Bind to port 22 on 0.0.0.0 failed: Permission denied. debug1: Bind to port 22 on ::. Bind to port 22 on :: failed: Permission denied. Cannot bind any address. 

Chroot你的SSH连接监狱的一切,包括你试图启动的shell。 所以首先,/ bin / bash(或者/ bin / zsh或者你喜欢的任何shell)需要存在。 其次,运行shell所需的所有库也必须存在。

要提供所有需要的文件,您需要将一些绑定挂载添加到您的chroot目录。 究竟这些可能从分配到分配都是不同的,但通常这些至less是:

  • /箱
  • / lib(或/ lib64,甚至可能是两者)
  • / usr / lib(/ usr / lib64)

您可能还想提供/ usr / bin。

注意:虽然您需要/ usr / lib,可能还需要/ usr / bin,但通常不需要/ usr本身。 只需创build一个空目录,并将两个需要的子目录放在里面。

要为/ bin创build绑定装入,请创build文件夹/ chrootdir / bin(用您的实际位置replace/ chrootdir),然后装入

 mount -o bind /bin /chrootdir/bin 

对于其他需要的目录也是如此。

在旁边注意:您的sshddebugging尝试失败,因为守护程序无法绑定到端口22.您可以从消息中看到。 我假设你没有以root权限启动它。

所以我find了解决我的问题这是一个相当愚蠢的监督:

 sudo chmod 755 /Users/jaileduser/jail/ 

我昨天已经设置了这些权限,不知何故他们被修改,我不清楚如何发生,但不pipe我有ssh jaileduser工作。

非常感谢那些试图帮助的人