我一直在试图创build一种方法来隐藏在防火墙后面的机器。 我使用Proxycommand /usr/bin/ncat -l 2000选项Proxycommand /usr/bin/ncat -l 2000设置我的ssh客户端,然后使用ncat <client> 2000 -c "sshd -i"在服务器ncat <client> 2000 -c "sshd -i"其连接到sshd。 它的工作原理是我可以在服务器上获得一个shell,但是服务器发送的不同于当我使用普通的ssh时的一个密钥。 所以问题是,为什么? 当sshd以这种不寻常的方式被调用时,关键是不同的?
在我的testing案例中,这并没有什么不同:
~$ ssh -v localhost debug1: Server host key: ECDSA 59:ca:86:5a:c0:01:f9:8e:31:3e:0b:8e:cf:ad:2b:fa ~$ ssh -v localhost -p 2000 debug1: Server host key: ECDSA 59:ca:86:5a:c0:01:f9:8e:31:3e:0b:8e:cf:ad:2b:fa
在2000端口上,从xinetd调用/usr/sbin/sshd -i 。
也许在你的情况下它读取不同的configuration文件? 尝试添加-f /etc/ssh/sshd_config到ncat命令行,看看是否有帮助。
解决scheme:显然,sshd在从ncat调用时使用了不同的密钥, sshd -i -h /etc/ssh/ssh_host_ecdsa_key完成了这个任务。
取消注释/etc/ssh/sshd_config的HostKey /etc/ssh/ssh_host_ecdsa_key行以使sshd -i使用正确的密钥。