system("ssh test.host.com");
要求永久添加密钥?
我想自动它应该说是!
答案 0 :(得分:8)
即使未检查主持人的公钥,ssh
询问您是否要连接,这是StrictHostKeyChecking ask
(或yes
)/etc/ssh/ssh_config
(或~/.ssh/config
)的结果1}}或no
。如果要将未知主机密钥自动添加到known_hosts
文件,可以将其设置为system("ssh -o StrictHostKeyChecking=no test.host.com");
。如果您不想对此进行永久性配置更改,也可以在命令行中使用它:
ssh
在任何一种情况下,{{1}}都会对主机密钥不匹配发出警告,并且会因为可能的中间人攻击而禁用密码身份验证。您仍然可以使用公钥验证登录。
答案 1 :(得分:4)
有人必须同意第一个密钥有效。您可以要求用户手动将相关信息添加到〜/ .ssh / known_hosts(或自己动手)。
答案 2 :(得分:1)
在启动应用程序之前运行SSH Agent并使用它来添加密钥(Windows上的菜单中的选项或在Unix上的命令行中使用ssh-add
。)
答案 3 :(得分:1)
正如Nathon提到的,解决这个问题的正确方法是将主机密钥放入已知密钥列表中。简单的方法是手动ssh到主机并回答是,然后密钥将缓存在$HOME/.ssh/known_hosts
中。必须为将要连接的每个主机以及将运行该程序的每个用户执行此操作。如果您拥有系统管理员权限,那么您运行的ssh也可以将主机密钥添加到/etc/ssh/ssh_known_hosts
,以便所有用户都可以使用。
如果您不知道脚本将连接到哪个主机,您可能需要查看像Expect
这样的模块来监视并响应主机密钥提示。虽然自动执行此步骤会颠覆一些安全性ssh提供的功能。