Amazon EC2 인스턴스의 클라우드에서 실행중인 애플리케이션 인스턴스가 있으며 로컬 Ubuntu에서 연결해야합니다. 로컬 우분투 중 하나와 랩톱에서도 잘 작동합니다. 다른 로컬 우분투에서 SSH를 EC2에 액세스하려고 할 때 “Permission denied (publickey)”메시지가 나타납니다. 나에게 너무 이상하다.
하나의 인스턴스에 대한 IP 액세스가 제한되는 Amazon EC2의 보안 설정과 관련된 일종의 문제 또는 인증서를 재생성해야한다고 생각합니다.
누구든지 해결책을 알고 있습니까?
답변
이 상황에서 가장 먼저해야 할 일은 -v
옵션 을 사용하여 ssh
시도한 인증 유형과 결과를 확인할 수 있습니다. 그것이 상황을 밝게하는 데 도움이됩니까?
귀하의 질문에 대한 업데이트에서 “다른 로컬 우분투”에 대해 언급했습니다. ssh 개인 키를 다른 시스템으로 복사 했습니까?
답변
명시 적으로 언급되지 않았으므로 sshd는 기본적으로 authorized_keys
파일 에 대한 권한에 매우 엄격 합니다. 따라서 사용자 이외의 다른 사람 authorized_keys
이 쓸 수 있거나 사용자 이외의 다른 사람 이 쓸 수있는 경우 인증을 거부합니다 (sshd가로 구성되지 않은 경우 StrictModes no
)
“쓰기 가능하게 할 수있다”는 말은 부모 디렉토리 중 하나라도 사용자 이외의 다른 사람이 쓸 수있는 경우 해당 디렉토리를 수정하도록 허용 된 사용자는 authorization_keys를 수정 / 대체 할 수있는 방식으로 권한 수정을 시작할 수 있다는 것입니다.
또한 /home/username/.ssh
사용자가 디렉토리를 소유하지 않아서 사용자에게 키를 읽을 수있는 권한이없는 경우 문제가 발생할 수 있습니다.
drwxr-xr-x 7 jane jane 4096 Jan 22 02:10 /home/jane
drwx------ 2 root root 4096 Jan 22 03:28 /home/jane/.ssh
jane는 .ssh
파일을 소유하지 않습니다 . 이것을 통해 수정
chown -R jane:jane /home/jane/.ssh
이러한 종류의 파일 시스템 권한 문제는로 표시 ssh -v
되지 않으며 로그 수준을 DEBUG로 설정할 때까지 sshd 로그 (!)에도 표시되지 않습니다.
- 편집
/etc/ssh/sshd_config
.LogLevel DEBUG
어딘가에 읽는 줄을 원합니다 . 배포판에서 제공하는 메커니즘을 사용하여 SSH 서버를 다시로드하십시오. (service sshd reload
RHEL / CentOS / Scientific에서) 정상적으로 다시로드해도 기존 세션이 삭제되지 않습니다. - 인증을 다시 시도하십시오.
- 인증 시설 로그의 위치를 파악하고 읽으십시오. (IIRC,
/var/log/auth.log
데비안 기반 배포판;/var/log/secure
RHEL / CentOS / Scientific.)
파일 시스템 권한 오류가 포함 된 디버그 출력의 문제점을 훨씬 쉽게 해결할 수 있습니다. /etc/ssh/sshd_config
완료되면 변경 사항을 되 돌리십시오 !
답변
-l
옵션 추가를 잊었 기 때문에이 오류가 발생했습니다 . 내 로컬 사용자 이름이 원격 시스템과 다릅니다.
이것은 귀하의 질문에 대한 답변이 아니지만 여기 내 문제에 대한 답변을 찾고 있습니다.
답변
우분투 AMI를 기반으로 한 새로운 인스턴스 에서이 메시지를 받았습니다. PEM을 제공하기 위해 -i 옵션을 사용하고 있었지만 여전히 “Permission denied (publickey)”가 표시되었습니다.
내 문제는 올바른 사용자를 사용하지 않았다는 것입니다. ubuntu @ ec2로 ssh를 실행하면 정상적으로 작동합니다.
답변
ssh -v
(물론 내 의견으로는) 보다 읽기 쉬운 것이 tail -f /var/log/auth.log
입니다. 연결을 시도하는 동안 연결하려는 서버에서 실행해야합니다. 일반 텍스트로 오류가 표시됩니다.
이것은 내 문제를 해결하는 데 도움이되었습니다.
xx.yy.com의 사용자 [username]은 AllowGroups에 사용자 그룹이 없기 때문에 허용되지 않습니다.
답변
/ etc / ssh / sshd_config 파일을 확인하십시오 . 거기에서 말하는 줄을 찾으십시오.
PasswordAuthentication no
이 줄은 no 대신 yes로 수정해야합니다. 또한 나중에 sshd 서버를 다시 시작하십시오.
sudo /etc/init.d/ssh restart
답변
아마도 현재 포스터와 관련이 없지만 비슷한 상황에 대한 답변을 검색 할 때이를 찾는 다른 사람들을 도울 수 있습니다. Amazon이 ssh 키 쌍을 생성하도록하는 대신, 자신의 표준 기본 공개 ssh 키를 Amazon에 업로드하고 EC2 인스턴스를 실행할 때이를 지정하는 것이 좋습니다.
이를 통해 ssh에서 “-i”유형 구문을 삭제하고 표준 옵션과 함께 rsync를 사용할 수 있으며 모든 EC2 리전에서 동일한 ssh 키를 사용할 수 있습니다.
이 프로세스에 대한 기사를 여기에 썼습니다.
Amazon EC2에 개인 ssh 키 업로드
http://alestic.com/2010/10/ec2-ssh-keys