2

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

我在 Windows 机器上使用 pscp,我真的不在乎指纹,我只想接受它。我正在使用 Amazon EC2,每次重新启动机器时指纹都会发生变化......

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

谢谢!

4

4 回答 4

8

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

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

于 2013-12-11T16:09:16.077 回答
5

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

我要做的是在您第一次连接到主机时自动接受密钥。我读过类似的yes yes | ssh user@host工作,但它没有,因为 SSH 不是从标准输入读取,而是从终端读取。

起作用的是在您第一次连接时通过以下 ssh 选项(它适用于 scp 和 ssh:

scp -oStrictHostKeyChecking=no user@host1:file1 user@host2:file2

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

如果您正在处理 known_hosts 的加密版本,请尝试使用

ssh-keygen -F hostname

这是我实际使用的东西(函数接收以下参数:用户、主机、源文件)

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
}

希望这有帮助;)

于 2012-10-17T21:59:34.403 回答
1

如果您只是重新启动或停止/启动实例,则主机 ssh 密钥指纹不应更改。如果是这样,则说明实例/AMI 配置不正确或发生了其他事情(恶意?)。

良好的 EC2 AMI 设置为在首次启动时创建随机主机 ssh 密钥。大多数流行的 AMI 会将指纹输出到控制台输出。为了安全起见,您应该通过 EC2 API(命令行工具或控制台)请求实例控制台输出,并将其与 ssh 提示符中的指纹进行比较。

通过说您“不关心指纹”,您是在说您不关心加密您自己和实例之间的流量,并且您和实例之间的任何人都可以看到该通信。中间人甚至有可能接管 ssh 会话并获得控制您的实例的访问权限。

在 Linux 上使用 ssh,您可以使用命令行或配置文件选项关闭 ssh 指纹检查。我不愿发布如何执行此操作,因为不推荐这样做,并且严重降低了连接的安全性。

更好的选择是让您的实例将自己的主机 ssh 密钥设置为您知道的秘密值。您可以将主机 ssh 密钥的公共端保存在已知主机文件中。通过这种方式,您的流量被加密且安全,您无需在连接到自己的机器时不断回答有关指纹的提示。

于 2011-10-03T18:24:24.413 回答
0

我创建了一个包含以下命令的期望文件:

spawn ssh -i ec2Key.pem ubuntu@ec2IpAddress 期望“您确定要继续连接(是/否)?” {发送“是\n”}交互

我能够在不禁用 rsa 指纹的情况下通过 ssh 进入 ec2 控制台。我的机器被添加到这个 ec2 的已知主机中。

我希望它有帮助。

于 2015-09-30T10:17:02.670 回答