Google Compute Engine - 无需密码的 SSH 或 RSYNC

Google Compute Engine - 无需密码的 SSH 或 RSYNC

我有几个 Google Compute Engine (GCE) 实例正在运行。我有几个脚本从这些实例中提取信息(日志文件等),还有一些脚本推送文件。我想让这些操作更加自动化,但每次连接到计算引擎实例时,我都需要输入密码。

我如何设置 rsync 或 ssh 以便不需要密码,或者,如何将我的密码输入到这些程序中?

请注意,这是最初发布到 SO但后来搬到了这里。

答案1

GCE ssh 使用公钥认证而不是密码,因此您有以下选项:

  1. 使用gcloud compute copy-files如下所述这个答案。这可能更容易,因为它允许您以符号方式指定项目和主机名,因为 IP 地址可能会发生变化。

  2. sftp按照说明使用这个答案,即:

    sftp -o IdentityFile ~/.ssh/google_compute_engine user@host
    
  3. 使用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)。

    您可以在文档

相关内容