Can't ssh to AWS EC2: Identity file not accessible
SshAmazon Ec2Ubuntu 12.04Ssh Problem Overview
I'm unable to ssh to my EC2 server and am getting the error:
ssh -i /Users/Skeniver/Keepass/skeniver.pem ubuntu@xx.xxx.xx.xxx
Identity file /Users/Skeniver/Keepass/skeniver.pem not accessible: No such file or directory
The file is definitely in the directory and I've chmod'd the directory to 755 and the file to 600:
drwxr-xr-x 14 Skeniver staff 476 28 Nov 2012 Keepass
-rw------- 1 Skeniver staff 1696 5 Oct 2012 skeniverkey.pem
I'm pretty sure it's a permissions problem, but can't figure out why...
Here is the output of the ssh command using -v, in case it's of any use:
Warning: Identity file /Users/Skeniver/Keepass/skeniver.pem not accessible: No such file or directory.
OpenSSH_5.2p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /etc/ssh_config
debug1: Connecting to xx.xxx.xx.xxx [xx.xxx.xx.xxx] port 22.
debug1: Connection established.
debug1: identity file /Users/Skeniver/.ssh/identity type -1
debug1: identity file /Users/Skeniver/.ssh/id_rsa type 1
debug1: identity file /Users/Skeniver/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.2
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'xx.xxx.xx.xxx' is known and matches the RSA host key.
debug1: Found key in /Users/Skeniver/.ssh/known_hosts:8
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /Users/Skeniver/.ssh/id_rsa
debug1: Authentications that can continue: publickey
debug1: Trying private key: /Users/Skeniver/.ssh/identity
debug1: Trying private key: /Users/Skeniver/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).
Ssh Solutions
Solution 1 - Ssh
You need the identity file to login to the box. Use the command:
ssh -i (identity_file) username@hostname"
This worked for me. Write just the filename (without any slashes), unlike Amazon EC2 tutorial which asks you to enter:
ssh -i /path/key_pair.pem ec2-user@public_dns_name
It worked for me after putting the identity file in the .ssh (hidden) folder on home. To view hidden folders on home, use ctrl+h
Solution 2 - Ssh
I had similar issue and found that there was hidden char in command, pasting to plain text editor and copy back helped me.
Solution 3 - Ssh
I was having this same issue. Storing the identity file in my ~/.ssh
directory and running cd ~/.ssh
before ssh -i (identity_file) username@hostname
worked. I only ran into the issue when trying to run the ssh command from outside the ~/.ssh
directory. Hopefully that helps
Solution 4 - Ssh
For your case just
just execute the following command to change permission
sudo chmod 400 /Users/Skeniver/Keepass/skeniver.pem
and then execute the command that will connect you to EC2
ssh -i /Users/Skeniver/Keepass/skeniver.pem [email protected]
Solution 5 - Ssh
I had the same problem and i found that the issue with the file path. Right click on the your key_pair.pem (identical file) go the properties and copy and now your comment is like
ssh -i /path/skeniver.pem user@your_public_ip
for example in my case command like
ssh -i /home/anil/.ssh/webKey.pem ec2-user@ec2-45-349-50-38.us-west-2.compute.amazonaws.com
Solution 6 - Ssh
chmod 600 ~/.ssh/public_key_file
solved for me
Solution 7 - Ssh
Looks like you typed the wrong filename. You're specifying the filename skeniver.pem
in your command, but it looks like your filename is actually skeniverkey.pem
.
Solution 8 - Ssh
There are multiple reasons to occurring this error. 1 you are trying to access from whatever path which is not match 2 either you do not have permission to do access 3 if you do not have access to that particular file you can try to change the mode of permission
like the above solution
sudo chmod 400 /Users/Skeniver/Keepass/skeniver.pem
even if not then you can co-ordinate with the network or your cloud team whoever manage your cloud server
Solution 9 - Ssh
This is weird, but in my case I was copying the command from a slack message and that repeatedly caused this error, even though I met all the above requirements. Typing the whole command without copying anything from clipboard worked for me. Posting this here and I hope this helps someone one day.
Solution 10 - Ssh
When connecting from a windows environment what did the trick for me was putting the path in quotation marks "
as follows:
ssh -i "C:\Users\XXXX\Desktop\XXXX\testing_amazon_linux.pem" ubuntu@XXXX.amazonaws.com
I replaced identifiable things with XXXX
but let the rest in place to improve example clarity.
Solution 11 - Ssh
run the command from .ssh directory i.e/Users/
this worked for me after many failed attempt.
note: please make sure .pem file has necessary permission chmod 400 <.pem file> before executing the command
Solution 12 - Ssh
I got here while solving same or similar problem. After trying a few things this works for me eventually. I am on MacBook Pro and trying to connect to Ec2 Amazon Linux 2 using VSCode Remote SSH.
I have to update this file
> /Users/MrRobot/.ssh/config
There is a config in the file like below.
> IdentityFile xx.pem
I have to update this to full path wherever your id_rsa or pem file is.
> IdentityFile /Users/MrRobot/.ssh/xx.pem
Solution 13 - Ssh
my solution is move it to the path which is all the english chars
(i am a chinese, and use the chinese windows, when i run the command from the path which contains the chinese chars, it will return "Warning: Identity file debao-visa.pem not accessible: No such file or directory.")
Solution 14 - Ssh
A similar issue occurred and the problem was that the file extension was hidden.
So the real filename was skeniver.pem.txt
instead of skeniver.pem
A simple way to determine this is to press tab while typing the filename. So type part of the filename like skenive
then hit tab, it should print the rest of the file in the terminal and you should see if it has any part after .pem
like .pem.txt
.
Try
ssh -i /Users/Skeniver/Keepass/skeniver.pem.txt [email protected]
or remove the .txt
or any other extension from the name.
Solution 15 - Ssh
You can try a different idea, here's what I did. I couldn't upload to a folder, so I put the uploaded folder to “ [email protected]:/tmp ” ,then I uploaded successfully and cp the file on the server afterwards.
Solution 16 - Ssh
Try using
ssh -i Users/Skeniver/Keepass/skeniver.pem ubuntu@xx.xxx.xx.xxx
instead of
ssh -i **/**Users/Skeniver/Keepass/skeniver.pem [email protected]
Solution 17 - Ssh
You need the identity file to login to the box. Use the command
ssh -i (identity_file) username@hostname