AWS ssh access 'Permission denied (publickey)' проблема [закрыто]
Как подключиться к экземпляру AWS через ssh?
Я:
- зарегистрировался в AWS;
- создал открытый ключ и сертификат на веб-сайте AWS и сохранил их на диске;
зашел в консоль и создал переменные среды:
$ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/
$ export EC2_CERT=/home/default/aws/cert-EBAINCRNWHDSCWWIHSOKON2YWGJZ5LSQ.pem
$ export EC2_PRIVATE_KEY=/home/default/aws/pk-EBAINCRNWHDSCWWIHSOKON2YWGJZ5LSQ.pem
сказал AWS API использовать эту пару ключей и сохранил пару ключей в файл:
$ ec2-add-keypair ec2-keypair > ec2-keypair.pem
запуск экземпляра AWS Ubuntu 9 с помощью эта ключевая пара:
$ ec2-run-instances ami-ed46a784 -k ec2-keypair
попытка установить ssh-соединение с экземпляром:
$ ssh -v -i ec2-keypair.pem [email protected]
OpenSSH_5.1p1 Debian-5ubuntu1, OpenSSL 0.9.8g 19 Oct 2007
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to ec2-174-129-185-190.compute-1.amazonaws.com [174.129.185.190] port 22.
debug1: Connection established.
debug1: identity file ec2-keypair.pem type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5ubuntu1
debug1: match: OpenSSH_5.1p1 Debian-5ubuntu1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.1p1 Debian-5ubuntu1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc 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 'ec2-174-129-185-190.compute-1.amazonaws.com' is known and matches the RSA host key.
debug1: Found key in /home/default/.ssh/known_hosts:11
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: Trying private key: ec2-keypair.pem
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).
в чем может быть проблема и как заставить его работать?
20 ответов:
для экземпляров Ubuntu:
chmod 600 ec2-keypair.pem ssh -v -i ec2-keypair.pem [email protected]для других случаев, возможно, придется использовать
ec2-userвместоubuntu.большинство образов EC2 Linux, которые я использовал, имеют только корневого пользователя, созданного по умолчанию.
Смотрите также:http://www.youtube.com/watch?v=WBro0TEAd7g
релизы Canonical используют пользователя "ubuntu" по умолчанию для всех, кто приземляется здесь с изображением ubuntu, который сталкивается с той же проблемой.
Если вы используете изображение Bitnami, войдите в систему как "bitnami".
кажется очевидным, но что-то я упустил из виду.
Ubuntu 10.04 с openSSH
это точное использование:
ssh -v -i [yourkeypairfile] ec2-user@[yourdnsaddress]например:
ssh -v -i GSG_Keypair.pem [email protected]приведенный выше пример был взят непосредственно из учебника AWS для подключения к машине Linux/UNIX по адресу: http://docs.amazonwebservices.com/AWSEC2/latest/GettingStartedGuide/
Он также будет жаловаться, если разрешения файла pem слишком открыты. chmod файл до 600, чтобы исправить это.
Я также столкнулся с этим-оказывается, я использовал созданный сообществом AMI-и имя Пользователя по умолчанию было niehter root, а также не было ect-user или ubuntu. На самом деле, я понятия не имел, что это такое - пока не попробовал ' root и сервер любезно попросил меня войти как xxx здесь xxx - это все, что он говорит вам.
-ура!
использовать...
# chmod 400 ec2-keypair.pemНе используйте разрешение 600, иначе вы можете случайно перезаписать свой ключ.
вы должны иметь свой закрытый ключ в вашей локальной машине
вам нужно знать IP-адрес или DNS-имя вашего удаленного компьютера или сервера, вы можете получить это из консоли AWS
Если вы являетесь пользователем Linux
- убедитесь, что разрешения на закрытый ключ 600 (
chmod 600 <path to private key file>)- подключение к вашей машине с помощью ssh (
ssh -i <path to private key file> <user>@<IP address or DNS name of remote server>)Если вы являетесь пользователем Windows
- используйте замазку для создайте сеанс ssh (http://the.earth.li / ~sgtatham/putty/latest/x86/putty-0.66-installer.exe)
- если ваш закрытый ключ в файл .PEM-формате, конвертировать его в .ППК с помощью генератор puttygen
- запустите PuTTy, установите файл ppk, IP-адрес или DNS-имя удаленного сервера и запустите сеанс ssh
это сработало для меня:
ssh-keygen -R <server_IP>для удаления старых ключей, хранящихся на рабочей станции также работает с вместо
затем, делая тот же ssh снова это сработало:
ssh -v -i <your_pem_file> ubuntu@<server_IP>на экземплярах ubuntu имя пользователя: ubuntu на Amazon Linux AMI имя пользователя: ec2-user
мне не пришлось заново создавать экземпляр из образа.
Если вы используете AWS image от Bitnami. Имя пользователя будет об. Ура!
смотрите мою отладку и смотрите на последнюю:
*
ssh -v -i awsliferaysrta.pem.txt [email protected].*** OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011 debug1: Reading configuration data /etc/ssh_config debug1: /etc/ssh_config line 20: Applying options for * debug1: Connecting to 54.254.250.*** [54.254.250.***] port 22. debug1: Connection established. debug1: identity file awsliferaysrta.pem.txt type -1 debug1: identity file awsliferaysrta.pem.txt-cert type -1 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_6.2 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_5* 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: Server host key: RSA 05:5c:78:45:c9:39:3a:84:fe:f8:19:5d:31:48:aa:5f debug1: Host '54.254.250.***' is known and matches the RSA host key. debug1: Found key in /Users/macbookpro/.ssh/known_hosts:2 debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: Roaming not allowed by server debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey debug1: Next authentication method: publickey debug1: Trying private key: awsliferaysrta.pem.txt debug1: read PEM private key done: type RSA debug1: Authentication succeeded (publickey). Authenticated to 54.254.250.*** ([54.254.250.***]:22). debug1: channel 0: new [client-session] debug1: Requesting [email protected] debug1: Entering interactive session. debug1: Remote: Port forwarding disabled. debug1: Remote: Agent forwarding disabled. debug1: Remote: X11 forwarding disabled. debug1: Remote: Forced command. debug1: Sending environment. debug1: Sending env LANG = en_US.UTF-8 Please login as the user "bitnami" rather than the user "root".*
в моем случае (Mac OS X) проблема заключалась в типе разрыва файла. Попробуйте это:
1.- Открой .PEM-файл с скопируйте
2.- В нижней части приложения, проверьте, если тип разрыва " Windows (CRLF)".
его ec2-пользователь для Amazon Linux AMI и ubuntu для Ubuntu изображений. Кроме того, RHEL 6.4 и позже ec2-пользователь RHEL 6.3 и более ранний корень Федора ЕС2-пользователя Centos root
просто добавление в этот список. Сегодня утром у меня возникли проблемы с новым пользователем, только что добавленным в экземпляр AWS EC2. Чтобы сократить погоню, проблема была selinux (который находился в исполнение mode), вместе с тем, что мой пользователь home dir был на новом томе EBS. Почему-то я думаю, как SELinux не нравится, что другие тома. Мне потребовалось некоторое время, чтобы понять, как я просмотрел все другие обычные проблемы ssh (/etc / ssh/sshd_config был в порядке, конечно нет пароль разрешен, разрешения были правильными и т. д.)
исправить?
на данный момент (пока я не пойму, как разрешить пользователю ssh на другой том или как-то сделать этот том добросовестной домашней точкой dir):
sudo perl -pi -e 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config sudo setenforce 0вот и все. Теперь мой новый пользователь может войти в систему, используя свой собственный ключ id_rsa.
была та же проблема. Отказано в разрешении (publickey) при попытке войти в систему с помощью "ec2-user" или "root".
Googled номер AMI образа машины, и у него была информация для входа SSH прямо на странице Debian wiki.
надеюсь, что это помогает.
Если вы используете EBS, вы также можете попробовать подключить том EBS на работающем экземпляре. Затем смонтируйте его на этом запущенном экземпляре и посмотрите, что происходит в /home. Вы можете видеть такие вещи, как пользователь ubuntu или ec2-user ? или у него есть правильные открытые ключи под ~/.ssh / authorized_keys
есть 2 шага для подключения:
Chmod 400 на вашем закрытом ключе, как это другие не могут получить доступ к вашему ключу:
chmod 400 toto.pemчтобы подключиться к вашему экземпляру в SSH, вам нужно знать публичный IP-адрес вашего экземпляра:
ssh -i toto.pem [email protected]надеюсь, что это помогает !
Comments