当服务器仅允许键盘交互式身份验证时,有没有办法进行 SSH 无密码登录?

当服务器仅允许键盘交互式身份验证时,有没有办法进行 SSH 无密码登录?

假设我有一个服务器foo.com只允许键盘交互身份验证,而且我无法更改这一点。这意味着我可以这样做,

sshpass -p PASSWORD ssh foo.com

但我无法创建公钥/私钥来进行无密码登录。

如果我想自动访问此服务器,即无需密码的 ssh,我可以创建一个alias ssh_foo="sshpass -p PASSWORD ssh foo.com",但随后我必须为scp、为创建别名sftp,并且通常它不适用于使用这些的任何其他程序,例如基于sftp其挂载远程文件夹的图形程序。所以我正在寻找一个更通用的解决方案。

具体来说,在这种情况下,有没有办法设置我的.ssh/config文件以允许无密码登录?这应该适用于所有情况。我觉得ProxyCommand和的一些巧妙的组合LocalCommand可能会做到这一点,但我不知道是什么。

(请注意,我确实了解这其中的安全隐患,我只是好奇你是否能做到这一点)

答案1

ssh -p用于指定远程端口,SSH 不会从命令行或文件获取密码。

实现这一点的最简单方法是多路复用连接,使用ssh -fN以下方式登录一次(可能可通过管道传输密码实现自动化)这将创建控制主控,并使用此连接来多路复用所有其他控制主控。查看您友好的 中的ControlMaster和选项。ControlPathman 5 ssh_config

否则使用终端管理器阿拉 tmux/terminator可能是您唯一的选择,但这将要求包装所有依赖于 SSH 的命令。

相关内容