我有几个 Google Compute Engine (GCE) 实例正在运行。我有几个脚本从这些实例中提取信息(日志文件等),还有一些脚本推送文件。我想让这些操作更加自动化,但每次连接到计算引擎实例时,我都需要输入密码。
我如何设置 rsync 或 ssh 以便不需要密码,或者,如何将我的密码输入到这些程序中?
请注意,这是最初发布到 SO但后来搬到了这里。
答案1
GCE ssh 使用公钥认证而不是密码,因此您有以下选项:
使用
gcloud compute copy-files
如下所述这个答案。这可能更容易,因为它允许您以符号方式指定项目和主机名,因为 IP 地址可能会发生变化。sftp
按照说明使用这个答案,即:sftp -o IdentityFile ~/.ssh/google_compute_engine user@host
使用
ssh
,但要使用在 GCE 中注册的密钥文件的完整路径。此命令会在运行时打印出来,gcloud compute ssh <instance>
因此您可以直接复制粘贴并在以后使用。它应该类似于以下内容:ssh -i ~/.ssh/google_compute_engine \ -o UserKnownHostsFile=/dev/null \ -o CheckHostIP=no \ -o StrictHostKeyChecking=no \ USER@IP_ADDRESS
请注意,这里您必须使用精确的 IP 地址,因此请考虑使用静态 IP 地址或 DNS 为可能变化的 IP 地址创建一个常量名称(如果您使用动态 IP)。
您可以在文档。