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