我已经使用设置了反向 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)确实将密钥与端口和主机存储在一起,因此这一切都有效。