使用pscp自动接受rsa指纹

MrC*_*uer 1 rsa amazon-ec2 fingerprint

当您使用pscp将文件发送到单个计算机时,这不是什么大问题,因为您将获得一次rsa指纹提示,之后再也不会.但是如果你想连接200台机器,你肯定不想输入"是"200次....

我在Windows机器上使用pscp,我真的不关心指纹,我只想接受它.每次重启机器时,我都在使用Amazon EC2并更换指纹....

如果有办法避免使用pscp或其他工具,请告诉我!

谢谢!

Cla*_*lay 6

在hudson中运行脚本时,请参阅Putty不会缓存访问服务器的密钥

在Windows上,您可以echo y |在命令前使用前缀,每次都会盲目地接受任何主机密钥.但是,更安全的解决方案是第一次以交互方式运行,或生成可在任何客户端计算机上运行的.reg文件.


Ale*_*nez 5

我不完全同意最后一个答案。第一次接受 SSH 密钥时,您对远程主机一无所知,因此自动接受它没有什么区别。

我要做的是在您第一次连接到主机时自动接受密钥。我读过类似的事情yes yes | ssh user@host,但事实并非如此,因为 SSH 不是从标准输入读取,而是从终端读取。

有效的方法是在第一次连接时传递以下 ssh 选项(它适用于 scp 和 ssh:

scp -oStrictHostKeyChecking=no user@host1:file1 user@host2:file2
Run Code Online (Sandbox Code Playgroud)

这个命令会在你第一次运行它时添加密钥,但是,正如埃里克所说,一旦你接受了密钥就这样做是危险的(中间的人不酷)。如果我是你,我会将其添加到一个脚本中,~/.ssh/known_hosts如果该主机已有一行,则该脚本会签入,在这种情况下,我不会添加该选项。另一方面,如果没有线路,我会这样做;)。

如果您正在处理已知主机的加密版本,请尝试使用

ssh-keygen -F hostname
Run Code Online (Sandbox Code Playgroud)

这是我实际使用的东西(接收以下参数的函数: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
}
Run Code Online (Sandbox Code Playgroud)

希望这有帮助;)