当您使用pscp将文件发送到一台机器时,这并不是什么大问题,因为您将得到rsa指纹提示一次,之后就再也不会了。但是如果你想连接200台机器,你肯定不想输入200次"yes“……
我在Windows机器上使用pscp,我真的不在乎指纹,我只想接受它。我正在使用亚马逊EC2,每次我重启机器时指纹都会改变...
如果有办法避免使用pscp或其他工具,请让我知道!
谢谢!
发布于 2013-12-12 00:09:16
请参阅Putty won't cache the keys to access a server when run script in hudson
在Windows系统中,你可以在你的命令前面使用前缀echo y |,这会让你每次都盲目地接受()任何主机密钥。但是,更安全的解决方案是第一次以交互方式运行,或者生成可以在任何客户端计算机上运行的.reg文件。
发布于 2012-10-18 05:59:34
我不完全同意最后一个答案。第一次接受SSH密钥时,您对远程主机一无所知,因此自动接受它没有任何区别。
我要做的是在您第一次连接到主机时自动接受密钥。我读过类似yes yes | ssh user@host的工作,但它不是这样的,因为它不从标准输入读取,而是从终端读取。
真正起作用是在您第一次连接时传递以下ssh选项(它对scp和ssh都有效:
scp -oStrictHostKeyChecking=no user@host1:file1 user@host2:file2这个命令会在你第一次运行它的时候添加密钥,但是如果像Eric说的那样,一旦你接受了密钥就添加它是危险的(中间人是不酷的)。如果我是您,我会将它添加到一个脚本中,该脚本签入~/.ssh/known_hosts,如果已经有一行对应于该主机,在这种情况下,我不会添加该选项。另一方面,如果没有行,我会这样做;)。
如果您正在处理known_hosts的加密版本,请尝试使用
ssh-keygen -F hostname下面是我实际使用的函数(接收以下参数的函数: user,host,source_file)
deployToServer() {
echo "Deployng to $1@$2 from $3"
if [ -z "`cat ~/.ssh/known_hosts | grep $2`" ] && [ -z "`ssh-keygen -F $2`" ]
then
echo 'Auto accepting SSH key'
scp -oStrictHostKeyChecking=no $3* $1@$2:.
else
scp $3* $1@$2:.
fi
}希望这能有所帮助;)
发布于 2011-10-04 02:24:24
如果您只是简单地重启或停止/启动实例,主机ssh密钥指纹不应该改变。如果是,则说明实例/AMI配置不正确,或者是其他原因(恶意?)是怎么回事。
良好的ssh AMI被设置为在第一次引导时创建随机主机EC2密钥。大多数流行的AMI会将指纹输出到控制台输出。出于安全性考虑,您应该通过ssh (命令行工具或控制台)请求实例控制台输出,并将其与EC2提示符中的指纹进行比较。
通过说你“不关心指纹”,你是在说你不关心加密你和实例之间的通信,并且你和实例之间的任何人都可以看到这种通信。中间人甚至有可能接管ssh会话并获得控制实例的权限。
对于Linux上的ssh,您可以使用命令行或配置文件选项关闭ssh指纹检查。我不愿公布如何做到这一点,因为这是不推荐的,并严重降低了您的连接的安全性。
一个更好的选择是让您的实例将它们自己的主机ssh密钥设置为您知道的保密值。您可以将主机ssh密钥的公共端保存在已知的主机文件中。这样,您的通信是加密和安全的,并且在连接到您自己的计算机时,您不必不断地回答有关指纹的提示。
https://stackoverflow.com/questions/7638741
复制相似问题