为什么通过 netcat 连接时 sshd 会给出不同的标识?

为什么通过 netcat 连接时 sshd 会给出不同的标识?

我一直在尝试创建一种方法来 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 -ifrom 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_configsshd -i使用正确的键。

相关内容