Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何强制ssh从命令行接受新的主机指纹?_Ssh_Arguments_Command Line Arguments_Sftp - Fatal编程技术网

如何强制ssh从命令行接受新的主机指纹?

如何强制ssh从命令行接受新的主机指纹?,ssh,arguments,command-line-arguments,sftp,Ssh,Arguments,Command Line Arguments,Sftp,我拿到标准了 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed.

我拿到标准了

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is

错误消息。但是,执行命令的系统(Appworx)(我认为sftp并不重要)是自动化的,我不能轻易接受新密钥,即使在与第三方供应商确认这是一个有效的更改之后也是如此。我可以添加一个可以从同一系统(和用户)执行的新shell脚本,但似乎没有命令或命令行参数告诉ssh接受密钥。我在手册页或谷歌上找不到任何东西。当然这是可能的?

下面是如何告诉您的客户信任密钥。更好的方法是提前给它密钥,我在第二段中已经描述过。这是针对Unix上的OpenSSH客户端的,因此我希望它与您的情况相关

您可以设置
strichHostKeyChecking
参数。它有选项
yes
no
ask
。默认设置为
ask
。要在系统范围内进行设置,请编辑
/etc/ssh/ssh_config
;要仅为您设置,请编辑
~/.ssh/config
;要为单个命令设置它,请在命令行上提供选项,例如

ssh -o "StrictHostKeyChecking no" hostname
如果您可以访问远程系统的主机密钥,另一种方法是提前将它们添加到
已知的\u hosts
文件中,以便SSH知道它们,并且不会问问题。如果这是可能的,那么从安全的角度来看会更好。毕竟,这个警告可能是对的,你真的可能会受到中间人的攻击

例如,以下脚本将检索密钥并将其添加到已知的\u hosts文件:

ssh -o 'StrictHostKeyChecking no' hostname cat /etc/ssh/ssh_host_dsa_key.pub >>~/.ssh/known_hosts

下面是如何告诉您的客户信任密钥。更好的方法是提前给它密钥,我在第二段中已经描述过。这是针对Unix上的OpenSSH客户端的,因此我希望它与您的情况相关

您可以设置
strichHostKeyChecking
参数。它有选项
yes
no
ask
。默认设置为
ask
。要在系统范围内进行设置,请编辑
/etc/ssh/ssh_config
;要仅为您设置,请编辑
~/.ssh/config
;要为单个命令设置它,请在命令行上提供选项,例如

ssh -o "StrictHostKeyChecking no" hostname
如果您可以访问远程系统的主机密钥,另一种方法是提前将它们添加到
已知的\u hosts
文件中,以便SSH知道它们,并且不会问问题。如果这是可能的,那么从安全的角度来看会更好。毕竟,这个警告可能是对的,你真的可能会受到中间人的攻击

例如,以下脚本将检索密钥并将其添加到已知的\u hosts文件:

ssh -o 'StrictHostKeyChecking no' hostname cat /etc/ssh/ssh_host_dsa_key.pub >>~/.ssh/known_hosts
添加以下文件

~/.ssh/config
而这在文件中作为内容

StrictHostKeyChecking no
此设置将确保ssh不再要求指纹检查。 应非常小心地添加此文件,因为这将非常危险,并允许访问所有指纹。

添加以下文件

~/.ssh/config
而这在文件中作为内容

StrictHostKeyChecking no
此设置将确保ssh不再要求指纹检查。
这应该非常小心地添加,因为这将非常危险,并且允许访问所有指纹。

这里的答案是可怕的建议。在任何现实世界的系统中,你都不应该关闭StrictHostKeyChecking(例如,如果你只是在自己的本地家庭网络上玩,这可能没关系,但对于其他任何事情,不要这样做)

而是使用:

ssh-keygen -R hostname
这将强制更新
known_hosts
文件,以便仅删除已更新其密钥的一台服务器的旧密钥

然后,当您使用:

ssh user@hostname

它会要求您确认指纹–就像对任何其他“新”服务器(即以前未看到的)一样。

这里的答案是可怕的建议。在任何现实世界的系统中,你都不应该关闭StrictHostKeyChecking(例如,如果你只是在自己的本地家庭网络上玩,这可能没关系,但对于其他任何事情,不要这样做)

而是使用:

ssh-keygen -R hostname
这将强制更新
known_hosts
文件,以便仅删除已更新其密钥的一台服务器的旧密钥

然后,当您使用:

ssh user@hostname

它将要求您确认指纹–就像对任何其他“新”(即以前未看到的)服务器一样。

因为您正试图通过在执行ssh加密的主机上运行bash脚本来实现自动化,并假设:

  • 您不希望忽略主机密钥,因为这会带来额外的安全风险
  • 您正在ssh连接到的主机上的主机密钥很少更改,如果更改,则有一个很好的众所周知的原因,例如“目标主机已重建”
  • 您希望运行此脚本一次,将新密钥添加到
    known_hosts
    ,然后让
    known_hosts
    单独运行
在bash脚本中尝试以下操作:

#删除旧密钥
ssh keygen-R$target\u主机
#添加新密钥
ssh密钥扫描$target\u host>>~/.ssh/known\u hosts

因为您正试图通过在执行ssh的主机上运行bash脚本,并假设:

  • 您不希望忽略主机密钥,因为这会带来额外的安全风险
  • 您正在ssh连接到的主机上的主机密钥很少更改,如果更改,则有一个很好的众所周知的原因,例如“目标主机已重建”
  • 您希望运行此脚本一次,将新密钥添加到
    known_hosts
    ,然后让
    known_hosts
    单独运行
在bash脚本中尝试以下操作:

#删除旧密钥
ssh keygen-R$target\u主机
#添加新密钥
ssh密钥扫描$target\u host>>~/.ssh/known\u hosts

您只需更新从服务器发送的当前指纹即可。只要输入以下内容,您就可以开始了:)


您只需更新从服务器发送的当前指纹。只要输入以下内容,你就可以很好地