SSH 反向隧道 - 使用密钥身份验证时禁用密码请求

SSH 反向隧道 - 使用密钥身份验证时禁用密码请求

我已经使用设置了反向 ssh 隧道

ssh -R 22100:127.0.0.1:22 remoteuser@remotehost

在机器 1 上。该机器使用密钥与遥控器进行身份验证。

远程主机使用以下 sshd_config 选项:

...
PubkeyAuthentification yes
PasswordAuthentification no
...

这对于其密钥被远程服务器识别的第三台机器来说效果很好。即,它使用 正确登录到最初设置隧道的机器 1 ssh remoteuser@remotehost -p 22100

但是,当我尝试从没有远程服务器识别的密钥的第四台计算机登录时,仍然要求我输入密码。即在第四台机器上,它看起来像这样:

ssh remoteuser@remotehost
# returns Permission denied (publickey)

ssh remoteuser@remotehost -p 22100
# is asking for password for remoteuser@remotehost

为什么在尝试连接到反向隧道端口时会出现密码选项?不过我似乎无法使用密码。如果没有识别到​​密钥,如何才能禁用甚至要求输入密码的功能?

答案1

当隧道建立后,任何到“remotehost”上端口 22100 的连接都会变成到“machine 1”端口 22 的连接,特别是这适用于在ssh remoteuser@remotehost -p 22100“第四台机器”上运行。因此,重要的参数是在“机器 1”的端口 22 上运行的 sshd 的参数。

OP 指出系统要求输入远程用户@远程主机的密码,但这反映了请求的连接所要求的内容。 ssh 程序不知道端口 22100 正在被转发。然而,正在检查的主机密钥是“机器 1”而不是“远程机器”的主机密钥。已知主机数据库(通常〜/.ssh/known_hosts)确实将密钥与端口和主机存储在一起,因此这一切都有效。

相关内容