Linux 如何处理ssh密钥?

Linux 如何处理ssh密钥?,linux,perl,ssh,Linux,Perl,Ssh,是否要求永久添加密钥 我想它应该说是的 在启动应用程序之前运行并使用它添加密钥(在Windows上的菜单中的选项或在Unix上的命令行中使用ssh add)必须有人同意第一个密钥有效。您可以要求用户手动将相关信息添加到~/.ssh/known_hosts(或自己添加)。正如Nathon提到的,解决此问题的正确方法是在已知密钥列表中获取hosts密钥。简单的方法是手动ssh到主机一次并回答yes,然后将密钥缓存在$HOME/.ssh/known_hosts中。必须为您要连接到的每个主机以及将运行该

是否要求永久添加密钥


我想它应该说是的

在启动应用程序之前运行并使用它添加密钥(在Windows上的菜单中的选项或在Unix上的命令行中使用
ssh add

必须有人同意第一个密钥有效。您可以要求用户手动将相关信息添加到~/.ssh/known_hosts(或自己添加)。

正如Nathon提到的,解决此问题的正确方法是在已知密钥列表中获取hosts密钥。简单的方法是手动ssh到主机一次并回答yes,然后将密钥缓存在
$HOME/.ssh/known_hosts
中。必须为您要连接到的每个主机以及将运行该程序的每个用户执行此操作。如果您对运行ssh的系统拥有管理员权限,您还可以将主机密钥添加到
/etc/ssh/ssh\u known\u hosts
,以使所有用户都可以使用它们


如果您不知道脚本将连接到哪个主机,您可能需要查看一个模块,如
Expect
,以监视并响应主机键提示。尽管自动化此步骤会破坏ssh提供的一些安全性。

即使主机的公钥尚未检查,
ssh
也会询问您是否要连接,这是由于在
/etc/ssh/ssh\u config
~/.ssh/config
中使用
strichHostKeyChecking ask
(或
yes
)的结果。如果要自动将未知主机密钥添加到
已知\u主机
文件,可以将其设置为
。如果您不想使此更改成为永久性的配置更改,也可以在命令行上使用它:

system(“ssh-o strichostkeychecking=no test.host.com”)


在任何一种情况下,
ssh
都会在主机密钥不匹配时发出警告,并且会由于可能的中间人攻击而禁用密码身份验证。您仍然可以使用公钥身份验证登录。

首先,请阅读ssh为什么会这样做,以及总是回答“是”的安全含义。然后决定你是否接受这些。然后问怎么做。我不明白这个答案和被问的问题有什么关系,也不明白为什么它得到了被接受的答案。问题是如何将主机的公钥添加到本地已知的\u hosts文件中。ssh add命令用于客户端对服务器的公钥身份验证,而不是验证服务器的主机密钥。+1对您来说:我必须同意;不知怎的,我被奇怪的语法弄糊涂了。
system("ssh test.host.com");