Почему я внезапно начал получать "Отказано в доступе" при SSHing в EC2?
Итак, я пытался подключиться к своему экземпляру EC2 и продолжаю получать страшную ошибку: Permission denied (publickey). Я знаю, что об этом спрашивали пару десятков раз, но я следил за каждым ответом, который смог найти, но безрезультатно. Я запускаю микроэкземпляр на EC2, пытаясь SSH с рабочего стола Ubuntu. Вот странная часть. Я следовал этому руководству на Ubuntu.com, и он изначально помог мне. Я вошел, настроил nginx и некоторые другие вещи. Однако при попытке восстановить соединение через некоторое время я получаю сообщение об ошибке выше. Я использую следующую команду SSH:
sudo ssh -v -v -i /home/user/.ec2/keypair.pem [email protected]
Keypair.pem - это закрытый ключ, который был создан, когда я впервые создал свой экземпляр, и который я использовал, когда смог успешно войти в систему. IP-адрес - это адрес Elastic IP, назначенный этому экземпляру (я также пробовал публичный DNS безрезультатно). У меня установлены инструменты API EC2, и я могу получить доступ к информации о своем экземпляре, поэтому я считаю, что сертификаты работают правильно. Вот еще одна странная вещь. Когда я пытаюсь подключиться с помощью ec2-пользователя, я просто получаю сообщение об ошибке отказа в доступе (publickey); однако, когда я пытаюсь подключиться как root (root@xxxx), он говорит:
Authentication succeeded (publickey)
Но потом:
Please login as the ec2-user user rather than root user.
И затем продолжает выгнать меня. Это заставило бы меня поверить, что публичный ключ действительно верен, но я не уверен. Я попытался воссоздать сертификаты снова (не уверен, что это даже помогает), но не повезло. Кроме того, я слышал о локальных проблемах с разрешениями, поэтому я попытался настроить разрешения для закрытого ключа на 600 и 700, но это не коснулось проблемы. Если вы заинтересованы в выводе SSH, вы можете найти его ниже:
OpenSSH_5.8p1 Debian-1ubuntu3, OpenSSL 0.9.8o 01 Jun 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to x.x.x.x [x.x.x.x] port 22.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug2: key_type_from_name: unknown key type '-----END'
debug1: identity file /home/user/.ec2/keypair.pem type -1
debug1: identity file /home/user/.ec2/keypair.pem-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.8p1 Debian-1ubuntu3
debug2: fd 3 setting O_NONBLOCK
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: [email protected],[email protected],ssh-rsa,[email protected],[email protected],[email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: mac_setup: found hmac-md5
debug1: kex: server->client aes128-ctr hmac-md5 none
debug2: mac_setup: found hmac-md5
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
debug2: dh_gen_key: priv key bits set: 134/256
debug2: bits set: 532/1024
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 06:09:47:f7:46:55:8a:b1:9a:18:e4:46:b6:6d:88:7e
debug1: Host 'x.x.x.x' is known and matches the RSA host key.
debug1: Found key in /root/.ssh/known_hosts:1
debug2: bits set: 505/1024
debug1: ssh_rsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/user/.ec2/keypair.pem ((nil))
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/user/.ec2/keypair.pem
debug1: read PEM private key done: type RSA
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
2 ответа
Когда вы выполняете ssh от A до B, вам нужна копия личного ключа пользователя, от которого вы общаетесь. Вам необходимо содержимое открытого ключа в файле.ssh / authorized_keys в домашнем каталоге пользователя, с которым вы общаетесь.
Так, например, если вы используете ssh от bob на machinea до fred на machineb, вам нужно, чтобы /home/bob/.ssh/some_key и /home/fred/.ssh/authorized_keys содержали копию открытого ключа bob.
Тот факт, что ssh для root работает, означает, что домашний каталог пользователя root имеет открытый ключ в своем файле author_keys. Тот факт, что вы не можете подключиться к другому пользователю, указывает на то, что у него нет копии открытого ключа в его файле author_keys.
Команда sudo работает только потому, что вы явно указываете файл ключа, обычно вы запускаете sudo от своего имени, потому что вы можете подключиться к любому пользователю из своей учетной записи (даже root), если вы правильно настроили ключи.
Итак, скопировали ли вы содержимое открытого ключа в файл author_keys пользователя ec2 на целевой машине?
Или вы, возможно, сгенерировали новую пару ключей и используете неправильный закрытый ключ?
Во-первых, почему вы используете sudo для запуска ssh?
Во-вторых, попробуйте это вместо:
sudo ssh -v -v -i /home/user/.ec2/keypair.pem -l ec2-user 107.20.201.235