AWS ssh 액세스 '권한 거부 (퍼블릭 키)'문제 [닫기]


284

SSH를 통해 AWS 인스턴스에 연결하는 방법은 무엇입니까?

나는 가지고있다:

  1. AWS에 가입했습니다.
  2. AWS 웹 사이트에서 퍼블릭 키와 인증서를 생성하여 디스크에 저장했습니다.
  3. 내 콘솔로 가서 환경 변수를 만들었습니다.

    $ 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
    
  4. 이 키 페어를 사용하도록 AWS API를 말하고 키 페어를 파일에 저장했습니다.

    $ ec2-add-keypair ec2-keypair > ec2-keypair.pem
    
  5. 이 키 페어를 사용하여 AWS Ubuntu 9 인스턴스를 시작했습니다.

    $ ec2-run-instances ami-ed46a784 -k ec2-keypair
    
  6. 인스턴스에 ssh 연결을 설정하려고 시도했습니다.

    $ ssh -v -i ec2-keypair.pem ubuntu@ec2-174-129-185-190.compute-1.amazonaws.com
    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).
    

    무엇이 문제이고 어떻게 작동하게 할 수 있습니까?


2
아이러닉은 "루트"를 사용자 이름으로 사용하지만 "우분투"(당신이 언급 한 것)는 내 AMI의 올바른 이름이며 게시물에 감사드립니다!
realjin

답변:


512

우분투 인스턴스의 경우 :

chmod 600 ec2-keypair.pem
ssh -v -i ec2-keypair.pem ubuntu@ec2-174-129-185-190.compute-1.amazonaws.com

다른 경우에는 ec2-user대신 대신 사용해야 할 수도 있습니다 ubuntu.

내가 사용한 대부분의 EC2 Linux 이미지에는 기본적으로 루트 사용자 만 생성됩니다.

참조 : http://www.youtube.com/watch?v=WBro0TEAd7g


6
당신은 바위! 너무 간단합니다!
Alex

50
당신은 -i 옵션 드롭 할 수 있도록 당신은 또한 SSH-추가 EC2-keypair.pem을 사용할 수 있습니다
AdamK

12
root를 시도하고 "루트 사용자가 아닌 ec2-user 사용자로 로그인하십시오."라는 메시지 가 표시되면 root 대신 ec2-user 를 사용하십시오 .
Tony

8
그리고 일부 우분투 이미지에는 "우분투"사용자 만있는 것 같습니다. (뿌리에 sudo 할 수있는)
Falken 교수 교수

1
매우 유용합니다.
NSCoder

93

이제는 :

ssh -v -i ec2-keypair.pem ec2-user@[yourdnsaddress]

감사. 이것을 알아내는 데는 오랜 시간이 걸렸습니다. 콘솔의 연결 정보에는 언급되어 있지 않습니다! 루트를 사용하려고 할 때 알려주지 만 ec2-user는 내 사용자 이름에 대한 참조라고 생각했습니다. 도!
Adrian Mouat

1
오 이런 찾기가 쉽지 않습니다. 감사!
vroomfondel

고마워요, 쉬운 일이 아니야

아주 좋아요! 감사합니다!
viana

46

Canonical의 릴리스는 기본적으로 사용자 'ubuntu'를 사용하여 동일한 문제가 발생하는 우분투 이미지로 여기에 방문하는 모든 사람에게 사용됩니다.


2
이것을 찾기가 쉽지 않습니다.
Gustav

17

Bitnami 이미지를 사용하는 경우 'bitnami'로 로그인하십시오.

명백해 보이지만 내가 간과 한 것.


당신의 대답은 나의 하루를 구했습니다!
Surya

2
를 의미 한거야? Seems <sarcasm>obvious</sarcasm>
Bob Stein

데이터베이스 비밀번호를 찾는 방법을 포함한 Bitnami 지침 .
Bob Stein

8

내 우분투 이미지의 경우 실제로는 우분투 사용자이며 ec2-user는 아닙니다.)


5

openSSH가 포함 된 Ubuntu 10.04

이것은 정확한 사용법입니다.

ssh -v -i [yourkeypairfile] ec2-user@[yourdnsaddress]

예를 들면 다음과 같습니다.

ssh -v -i GSG_Keypair.pem ec2-user@ec2-184-72-204-112.compute-1.amazonaws.com

위의 예제는 http://docs.amazonwebservices.com/AWSEC2/latest/GettingStartedGuide/ 에서 Linux / UNIX 머신에 연결하기위한 AWS 자습서에서 직접 가져 왔습니다.


ssh -i 스위치를 사용하면 .pem 파일 만 사용할 수 있습니다.
ABHAY JOHRI

5

또한 pem 파일 권한이 너무 열려 있는지 불평합니다. 이를 수정하려면 파일을 600으로 chmod하십시오.


이 팁에 감사드립니다-많은 도움이되었습니다
Billy Moon

4
초보자의 경우. 이렇게하는 명령은 다음과 같습니다.chmod 600 your_file.pem
dano

5

또한 커뮤니티에서 생성 된 AMI를 사용하고있는 것으로 나타났습니다. 기본 사용자 이름은 루트 나 루트 사용자이거나 우분투도 아니 었습니다. 내가 '시도까지 - 사실, 나는 그것이 무엇인지 아무 생각이 없었다 루트 '서버가 친절로 로그인 부탁 XXX 여기서 xxx는 당신을 알려줍니다 어떤입니다.

-건배!


4

로컬 컴퓨터에 개인 키가 필요합니다

원격 머신 또는 서버의 IP 주소 또는 DNS 이름을 알아야합니다. AWS 콘솔에서 얻을 수 있습니다.

당신이 리눅스 사용자라면

  • 개인 키에 대한 권한이 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 사용자 인 경우

  • PuTTy를 사용하여 ssh 세션을 작성하십시오 ( http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.66-installer.exe )
  • 개인 키 파일이 .pem 형식 인 경우 puttygen을 사용하여 .ppk로 변환하십시오.
  • PuTTy를 시작하고 원격 서버의 ppk 파일, IP 주소 또는 DNS 이름을 설정하고 ssh 세션을 시작하십시오

chmod를 400 <PEM 키>를 사용하여 파일의 권한 변경
하기 Vaibhav 자이나교

3

사용하다...

# chmod 400 ec2-keypair.pem

600 권한을 사용하지 않으면 실수로 키를 덮어 쓸 수 있습니다.


2

이것은 나를 위해 일했다 :

ssh-keygen -R <server_IP>

워크 스테이션에 저장된 이전 키를 삭제하는 대신

그런 다음 같은 ssh를 다시 수행하면 효과가 있습니다.

ssh -v -i <your_pem_file> ubuntu@<server_IP>

우분투 인스턴스에서 사용자 이름은 Amazon Linux AMI에서 우분투입니다. 사용자 이름은 ec2-user입니다.

이미지에서 인스턴스를 다시 만들 필요가 없었습니다.



2

연결해야 할 두 단계가 있습니다.

개인 키의 Chmod 400은 다른 사람이 귀하의 키에 액세스 할 수 없습니다.

chmod 400 toto.pem

SSH에서 인스턴스에 연결하려면 인스턴스의 퍼블릭 IP 주소를 알아야합니다.

ssh -i toto.pem ec2-user@XX.XX.XX.XXX

그것이 도움이되기를 바랍니다!


1

EBS를 사용하는 경우 실행중인 인스턴스에 EBS 볼륨을 마운트 할 수도 있습니다. 그런 다음 실행중인 인스턴스에 마운트하고 / home에서 진행중인 작업을 확인하십시오. 당신은 user ubuntu 또는 ec2-user와 같은 것을 볼 수 있습니다? 또는 ~ / .ssh / authorized_keys 아래에 올바른 공개 키가 있습니까?



1

Bitnami에서 AWS 이미지를 실행중인 경우 사용자 이름은 bitnami입니다. 건배!

내 디버그를보고 마지막 디버그를보십시오.

*

ssh -v -i awsliferaysrta.pem.txt root@54.254.250.***
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 no-more-sessions@openssh.com
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".

*


1

필자의 경우 (Mac OS X) 문제는 파일의 중단 유형이었습니다. 이 시도:

1.- TextWrangler로 .pem 파일을 엽니 다

2.- 앱 하단에서 중단 유형이 "Windows (CRLF)"인지 확인합니다.


1

Amazon Linux AMI의 ec2-user 및 우분투 이미지의 ubuntu 또한 RHEL 6.4 이상 ec2-user RHEL 6.3 및 이전 루트 Fedora ec2-user Centos 루트


0

이 목록에 추가하기 만하면됩니다. 오늘 아침에 새로운 사용자가 AWS EC2 인스턴스에 추가되어 문제가 발생했습니다. 추격을 줄이기 위해 문제는 selinux ( 강제 모드에 있음)와 사용자 홈 디렉토리가 새로운 EBS 첨부 볼륨에 있다는 사실과 함께였습니다. 어떻게 든 selinux가 다른 볼륨을 좋아하지 않는다고 생각합니다. 다른 모든 일반적인 ssh 문제 (/ etc / ssh / sshd_config는 괜찮 았으며 물론 암호가 허용되지 않고 권한이 옳았습니다.)를 살펴보면서 잠시 알아 냈습니다.

수정?

지금은 (사용자가 다른 볼륨으로 ssh하는 방법을 이해하거나 어떻게 든 그 볼륨을 진정한 홈 디렉토리로 만들 수있을 때까지) :

sudo perl -pi -e 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
sudo setenforce 0

그게 다야. 이제 새 사용자는 자신의 id_rsa 키를 사용하여 로그인 할 수 있습니다.


0

같은 문제가 있었다. 'ec2-user'또는 'root'로 로그인 할 때 권한이 거부되었습니다 (공개 키).

머신 이미지의 AMI 번호를 검색했으며 데비안 위키 페이지에 SSH 로그인 정보가 있습니다.

도움이 되었기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.