【问题标题】:ERROR: (gcloud.compute.scp) [/usr/bin/scp] exited with return code [1]错误:(gcloud.compute.scp)[/usr/bin/scp] 退出并返回代码 [1]
【发布时间】:2019-10-15 10:30:14
【问题描述】:

我只是想将一个简单的文本文件从本地主机移动到远程主机。我正在使用 Google 的云计算,更具体地说,我正在使用 gcloud 命令行工具。以下是我收到的说明和错误:

Admins-MacBook-Pro-4:downloads kylefoley$ gcloud compute scp lst_calc.txt instance-1:/home/kylefoley76/hey.txt
No zone specified. Using zone [us-central1-a] for instance: [instance-1].
Updating project ssh metadata...⠧Updated [https://www.googleapis.com/compute/v1/projects/atomic-drake-250022].
Updating project ssh metadata...done.                                             
Waiting for SSH key to propagate.
Warning: Permanently added 'compute.1494876250178113937' (ECDSA) to the list of known hosts.
Enter passphrase for key '/Users/kylefoley/.ssh/google_compute_engine': 
Enter passphrase for key '/Users/kylefoley/.ssh/google_compute_engine': 
scp: /home/kylefoley76/hey.txt: Permission denied
ERROR: (gcloud.compute.scp) [/usr/bin/scp] exited with return code [1].

然后我尝试将root@ 放在远程路径前面并得到以下错误:

Admins-MacBook-Pro-4:downloads kylefoley$ gcloud compute scp lst_calc.txt root@instance-1:/home/kylefoley76/hey.txt
No zone specified. Using zone [us-central1-a] for instance: [instance-1].
Updating project ssh metadata...⠛Updated [https://www.googleapis.com/compute/v1/projects/atomic-drake-250022].
Updating project ssh metadata...done.                                             
Waiting for SSH key to propagate.
Enter passphrase for key '/Users/kylefoley/.ssh/google_compute_engine': 
root@35.193.247.37: Permission denied (publickey).
Enter passphrase for key '/Users/kylefoley/.ssh/google_compute_engine': 
root@35.193.247.37: Permission denied (publickey).
Enter passphrase for key '/Users/kylefoley/.ssh/google_compute_engine': 
root@35.193.247.37: Permission denied (publickey).
Enter passphrase for key '/Users/kylefoley/.ssh/google_compute_engine': 
root@35.193.247.37: Permission denied (publickey).
Enter passphrase for key '/Users/kylefoley/.ssh/google_compute_engine':

很明显,程序陷入了某种无限循环。


更新


另外,我想澄清一下,我的问题不是 linux 问题,而是 gcloud 问题。许多遇到此问题的人建议将文件放在/tmp 文件夹中。在我连接的远程 Linux 计算机上,我似乎拥有所有必要的权限。我已经在这台远程机器上创建了文件夹和文件,并用终端移动了文件,所以我认为这排除了我的问题出在 Linux 计算机本身的权限的可能性。

【问题讨论】:

    标签: gcloud


    【解决方案1】:

    留言原因:

    此消息表示从客户端到服务器的网络连接正在工作,并且 SSH 正在运行。但是,基于密钥的身份验证失败。


    故障排除步骤:

    运行gcloud auth login [IAM-USER],然后再次尝试gcloud compute ssh

    • 验证是否为项目或实例设置了 gcloud 的持久 SSH 密钥元数据。

    gcloud compute project-info describe --format flattened | grep commonInstanceMetadata.items | grep ssh | grep -v expireOn

    • 可能是您丢失了私钥、密钥对不匹配等。您可以通过执行以下操作强制 gcloud 生成新的 SSH 密钥对:
    1. 如果存在,请移动 ~/.ssh/google_compute_engine~/.ssh/google_compute_engine.pub。例如:

      mv ~/.ssh/google_compute_engine.pub ~/.ssh/google_compute_engine.pub.old

      mv ~/.ssh/google_compute_engine ~/.ssh/google_compute_engine.old

    2. 再试一次gcloud compute ssh [INSTANCE-NAME]。将创建一个新的密钥对,并将公钥添加到 SSH 密钥元数据中。

    • 验证Linux Guest Environment 脚本是否已安装并且 跑步。如果 Linux 来宾 环境没有安装,重新安装吧。

    【讨论】:

    • 你确定吗?我输入命令gcloud compute scp -rp -i /Users/kylefoley/.ssh/google_compute_engine lst_calc.txt instance-1:/home/kylefoley76/hey.txt 并返回错误消息,它无法识别参数-rpi。然后我在没有这些参数的情况下输入命令并得到相同的错误消息。
    • 我还尝试了创建一个名为tmp 的目录并将文件放入其中的解决方法,但没有奏效。但无论如何,如果这样的变通办法奏效,将是不可接受的,因为我需要了解为什么我不能执行这个非常简单的任务。
    • 你好@kylefoley76,我明白了。就像我之前提到的,您位于~/.ssh/google_compute_engine 的公钥阻止了对您文件的访问。您是否尝试过删除旧密钥 rm ~/.ssh/google_compute_engine* 并重试?之后密钥传播可能需要几秒钟。让我知道。这是某些人的解决方案here
    • 我没有文件~/.ssh/google_compute_engine 我有一个名为~/.ssh/google_compute_known_hosts 的文件。您是否建议在我每次销毁虚拟机实例时删除它?
    • 不确定我是否理解您的问题,但您不需要销毁您的 VM 实例。这个post 建议删除旧keys are located 所在的文件,并在运行gcloud compute scp commands 时尝试生成新文件。请查看我与您分享的链接以获取更多信息。
    【解决方案2】:

    在您的实例中使用 chmod 777 在您的家下创建一个 tmp 目录并将文件发送到该目录。

    gcloud compute scp ./app.tar.gz my-vm:~/tmp
    

    【讨论】:

      猜你喜欢
      • 2014-11-29
      • 2012-02-29
      • 2015-05-26
      • 1970-01-01
      • 2011-10-27
      • 2011-12-08
      • 2010-11-08
      • 2015-08-21
      • 1970-01-01
      相关资源
      最近更新 更多