我一直在尝试创建一种方法来 ssh 进入隐藏在防火墙后面的机器。我使用选项设置了我的 ssh 客户端Proxycommand /usr/bin/ncat -l 2000
,然后使用 将其连接到ncat <client> 2000 -c "sshd -i"
服务器上的 sshd。它可以工作,因为我可以在服务器上获取 shell,但服务器发送的密钥与我使用普通 ssh 时不同。所以问题是,为什么?当以这种不寻常的方式调用 sshd 时,密钥是否不同?
答案1
在我的测试案例中,没有什么不同:
~$ 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 上它被调用为/usr/sbin/sshd -i
from xinetd
。
也许在你的情况下它读取了不同的配置文件?尝试添加-f /etc/ssh/sshd_config
到 ncat 命令行,看看是否有帮助。
解决方案:显然,从 ncat 调用时,sshd 使用了不同的密钥,sshd -i -h /etc/ssh/ssh_host_ecdsa_key
这样就可以了。
答案2
取消注释该HostKey /etc/ssh/ssh_host_ecdsa_key
行/etc/ssh/sshd_config
以sshd -i
使用正确的键。