Reputation: 471
After creating the instance, I can login using gcutil or ssh. I tried copy/paste from the ssh link listed at the bottom of the instance and get the same error message.
Upvotes: 47
Views: 201888
Reputation: 2011
cat ~/.ssh/id_rsa.pub
ssh login from Git bash on your computer
ssh -i ~/.ssh/id_rsa [email protected]
Upvotes: 1
Reputation: 76
The trick here is to use the -C (comment) parameter to specify your GCE userid. It looks like Google introduced this change last in 2018.
If the Google user who owns the GCE instance is [email protected] (which you will use as your login userid), then generate the key pair with (for example)
ssh-keygen -b521 -t ecdsa -C myname -f mykeypair
When you paste mykeypair.pub into the instance's public key list, you should see "myname" appear as the userid of the key.
Setting this up will let you use ssh, scp, etc from your command line.
Upvotes: 0
Reputation: 114
I found this error while connecting ec2 instance with ssh. and it comes if i write wrong user name.
eg. for ubuntu I need to use ubuntu as user name and for others I need to use ec2-user.
Upvotes: 1
Reputation: 161
I followed everything from here: https://cloud.google.com/compute/docs/instances/connecting-to-instance#generatesshkeypair
But still there was an error and SSH keys in my instance metadata wasn't getting recognized.
Solution: Check if your ssh key has any new-line. When I copied my public key using cat, it added into-lines into the key, thus breaking the key. Had to manually check any line-breaks and correct it.
Upvotes: 0
Reputation: 81
You need to follow this instructions https://cloud.google.com/compute/docs/instances/connecting-to-instance#generatesshkeypair
If get "Permission denied (publickey)." with the follow command
ssh -i ~/.ssh/my-ssh-key [USERNAME]@[IP_ADDRESS]
you need to modify the /etc/ssh/sshd_config file and add the line
AllowUsers [USERNAME]
Then restart the ssh service with
service ssh restart
if you get the message "Could not load host key: /etc/ssh/ssh_host_ed25519_key" execute:
ssh-keygen -A
and finally restart the ssh service again.
service ssh restart
Upvotes: 0
Reputation: 57766
I was facing this issue for long time. Finally it was issue of ssh-add. Git ssh credentials were not taken into consideration.
Check following command might work for you:
ssh-add
Upvotes: 5
Reputation: 31
Ensure that the permissions on your home directory and on the home directory of the user on the host you're connecting to are set to 700 ( owning user rwx only to prevent others seeing the .ssh subdirectory ).
Then ensure that the ~/.ssh directory is also 700 ( user rwx ) and that the authorized_keys is 600 ( user rw ) .
Private keys in your ~/.ssh directory should be 600 or 400 ( user rw or user r )
Upvotes: 3
Reputation: 212
I just experienced a similar message [ mine was "Permission denied (publickey)"] after connecting to a compute engine VM which I just created. After reading this post, I decided to try it again.
That time it worked. So i see 3 possible reasons for it working the second time,
I suspect the last is unlikely :)
Upvotes: 1
Reputation: 19664
You haven't accepted an answer, so here's what worked for me in PuTTY:
Without allowing username changes, i got this question's subject as error on the gateway machine.
Upvotes: 1
Reputation: 451
I had the same problem and for some reason The sshKeys was not syncing up with my user on the instance.
I created another user by adding --ssh_user=anotheruser to gcutil command.
The gcutil looked like this
gcutil --service_version="v1" --project="project" --ssh_user=anotheruser ssh --zone="us-central1-a" "inst1"
Upvotes: 2
Reputation: 3493
The permission denied error probably indicates that SSH private key authentication has failed. Assuming that you're using an image derived from the Debian or Centos images recommended by gcutil, it's likely one of the following:
-i
option.There's a script that runs every minute on the standard Compute Engine Centos and Debian images which fetches the 'sshKeys' metadata entry from the metadata server, and creates accounts (with sudoers access) as necessary. This script expects entries of the form "account:\n" in the sshKeys metadata, and can put several entries into authorized_keys for a single account. (or create multiple accounts if desired)
In recent versions of the image, this script sends its output to the serial port via syslog, as well as to the local logs on the machine. You can read the last 1MB of serial port output via gcutil getserialportoutput
, which can be handy when the machine isn't responding via SSH.
gcutil ssh
works:gcutil ssh
does the following:
$HOME/.ssh/google_compute_engine
, and calls ssh-keygen
to create one if not present.sshKeys
for an entry that looks like ${USER}:$(cat $HOME/.ssh/google_compute_engine.pub)
gcutil ssh
invokes ssh
with a few command-line arguments to connect to the VM.sshKeys
, the console and command line tool won't realize that modifying sshKeys
doesn't work, and a lot of the automatic magic above can get broken.ssh
, it may not find your .ssh/google_compute_engine
key. You can fix this by using gcutil ssh
, or by copying your ssh public key (ends in .pub
) and adding to the sshKeys
entry for the project or instance in the console. (You'll also need to put in a username, probably the same as your local-machine account name.)gcutil ssh
, you probably don't have a .ssh/google_compute_engine.pub
file. You can either use ssh-keygen
to create a new SSH public/private keypair and add it to sshKeys
, as above, or use gcutil ssh
to create them and manage sshKeys
.sshKeys
entry doesn't match your local username, you may need to supply the -l
argument to SSH.Upvotes: 47