如何强制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
#删除旧密钥
ssh keygen-R$target\u主机
#添加新密钥
ssh密钥扫描$target\u host>>~/.ssh/known\u hosts
因为您正试图通过在执行ssh的主机上运行bash脚本,并假设:
- 您不希望忽略主机密钥,因为这会带来额外的安全风险
- 您正在ssh连接到的主机上的主机密钥很少更改,如果更改,则有一个很好的众所周知的原因,例如“目标主机已重建”
- 您希望运行此脚本一次,将新密钥添加到
,然后让known_hosts
单独运行known_hosts
#删除旧密钥
ssh keygen-R$target\u主机
#添加新密钥
ssh密钥扫描$target\u host>>~/.ssh/known\u hosts
您只需更新从服务器发送的当前指纹即可。只要输入以下内容,您就可以开始了:)
您只需更新从服务器发送的当前指纹。只要输入以下内容,你就可以很好地