gcloud

ERROR: (gcloud.compute.scp) [/usr/bin/scp] exited with return code [1]


I'm just trying to move a simple text file from the local host to the remote host. I'm using Google's Cloud computing and more specifically, I'm using the gcloud command line tool. Here are the instructions and errors I received:

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].

I then tried putting root@ in front of the remote path and got the following error:

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':

It was then clear that the program was caught in an infinite loop of some kind.


UPDATE


Also, I want to make it clear that my problem is not a linux problem but a gcloud problem. A lot of people who have this problem recommend putting the files in the /tmp folder. On the remote Linux computer that I'm connected to it seems that I have all of the necessary permissions. I've created folders and files on this remote machine and I've moved the files around with terminal, so I think that rules out the possibility that my problem lies with the permissions of the Linux computer itself.


Solution

  • Reason of the message:

    This message means that the network connection from the client to the server is working, and that SSH is running. However, key-based authenticatication failed.


    Troubleshooting steps:

    run gcloud auth login [IAM-USER] then try gcloud compute ssh again.

    • Verify that persistent SSH Keys metadata for gcloud is set for either the project or instance.

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

    • It's possible that you lost the private key, mismatched a keypair, etc. You can force gcloud to generate a new SSH keypair by doing the following:
    1. If present, by moving ~/.ssh/google_compute_engine and ~/.ssh/google_compute_engine.pub. For example:

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

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

    2. Try gcloud compute ssh [INSTANCE-NAME] again. A new keypair will be created and the public key will be added to the SSH keys metadata.

    • Verify that the Linux Guest Environment scripts are installed and running. If the Linux Guest Environment is not installed, re-install it.