回答
有人必须同意第一个键是有效的。您可以要求用户手动添加相关信息到〜/ .ssh/known_hosts(或者自己动手)。
正如Nathon提到的解决这个问题的正确方法是获取已知密钥列表中的主机密钥。简单的方法是手动ssh到主机,然后回答yes,然后密钥将被缓存在$HOME/.ssh/known_hosts
中。必须为每个将连接到的主机以及将运行该程序的每个用户执行此操作。如果您在系统上拥有管理员权限,则从您运行的ssh还可以将主机密钥添加到/etc/ssh/ssh_known_hosts
以使其可供所有用户使用。
如果您不知道脚本将连接到哪个主机,则可能需要查看Expect
这样的模块来监视和响应主机密钥提示。虽然自动化这一步颠覆了ssh提供的一些安全性。
是ssh
询问您是否想即使主机的公钥不检查尚未连接的事实是你/etc/ssh/ssh_config
或~/.ssh/config
有StrictHostKeyChecking ask
(或yes
)的结果。如果您想自动将未知主机密钥添加到您的known_hosts
文件中,您可以将其设置为no
。如果你不想让这永久的配置更改,您也可以使用它的命令行:
system("ssh -o StrictHostKeyChecking=no test.host.com");
在这两种情况下,ssh
将发布关于主机密钥不匹配的将禁用密码警告由于可能的中间人攻击而进行身份验证。您仍然可以使用公钥认证进行登录。
+1:对我来说这是正确的答案,而不是接受的答案! – Lars 2010-07-17 12:39:14
为你+1:我必须同意;不知何故,我被这个奇怪的语法搞糊涂了。 – 2010-07-19 07:03:46
- 1. Docker,如何处理SSH密钥,known_hosts和authorized_keys
- 2. GNU如何处理相同的密钥?
- 3. 共享SSH密钥
- 4. 保护SSH密钥
- 5. AWS EC2 SSH密钥
- 6. 在Jenkins中为Git管理SSH密钥
- 7. 使用TeamCity管理多个SSH密钥
- 8. 如何让SSH密钥自动接受?
- 9. 如何查看github的SSH密钥?
- 10. Git:如何添加ssh密钥?
- 11. 如何在Windows中生成ssh密钥?
- 12. 密钥处理例程
- 13. Android中的密钥处理
- 14. ssh密钥转发无ssh-add
- 15. SSH密钥GitHub问题
- 16. 永久添加SSH密钥
- 17. Ansible:更改SSH密钥
- 18. 未找到Git SSH密钥
- 19. Linux的SSH密钥使用
- 20. Git设置ssh密钥
- 21. Git ssh私钥密码
- 22. 调试SSH共享密钥
- 23. Git-ssh密钥/ IP地址
- 24. Net :: SCP/Net :: SCP :: Expect - 如何处理密码与密钥认证
- 25. JSch:如何使用SSH密钥ssh进入服务器
- 26. SSH密钥在Gitlab上询问密码
- 27. 创建SSH秘密kubernetes密钥文件
- 28. Vagrant SSH默认密钥密码?
- 29. Perl Net :: SSH ::任何与密钥交换
- 30. 如何使eclipse记住ssh密钥密码?
首先,阅读* why * ssh询问以及总是回复yes的安全含义。然后决定这些是否可以接受。然后问如何去做。 – ysth 2010-07-16 17:34:42