Amazon EC2 인스턴스의 클라우드에서 실행 중인 애플리케이션 인스턴스가 있고 로컬 Ubuntu에서 해당 인스턴스에 연결해야 합니다. 하나의 로컬 우분투와 노트북에서도 잘 작동합니다. Permission denied (publickey).
SSH를 통해 EC2에 접속하려고 할 때 이 메시지를 받았습니다.다른로컬 우분투.
하나의 인스턴스에 대한 IP 액세스가 제한되어 있는 Amazon EC2의 보안 설정에 문제가 있을 수 있다고 생각합니다. 또는 인증서를 다시 생성해야 할 수도 있습니다.
권한 거부 오류에 대한 해결책을 아는 사람이 있나요?
답변1
이런 상황에서 가장 먼저 해야 할 일은 -v
to 옵션을 사용하는 것으로 ssh
, 어떤 종류의 인증이 시도되고 결과가 어떤지 확인할 수 있다. 그것이 상황을 밝히는 데 도움이 됩니까?
귀하의 질문에 대한 업데이트에서 "다른 로컬 우분투에서"를 언급하셨습니다. SSH 개인 키를 다른 시스템에 복사하셨나요?
답변2
명시적으로 언급되지 않았으므로 sshd는 기본적으로 파일에 대한 권한에 매우 엄격합니다 authorized_keys
. 그렇다면 만약 authorized_keys
에쓰기 가능사용자가 아닌 다른 사람을 위해 또는쓰기 가능하게 만들 수 있다사용자가 아닌 다른 사람에 의해 인증이 거부됩니다(sshd가 로 구성되지 않은 경우 StrictModes no
).
"쓰기 가능하게 만들 수 있다"는 말은 사용자 이외의 다른 사람이 상위 디렉터리에 쓸 수 있는 경우 해당 디렉터리를 수정하도록 허용된 사용자가 Authorized_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
이러한 종류의 파일 시스템 권한 문제는 로그 수준을 DEBUG로 설정할 때까지 sshd 로그(!)에 표시되지 않으며 ssh -v
sshd 로그에도 표시되지 않습니다.
- 편집하다
/etc/ssh/sshd_config
.LogLevel DEBUG
어딘가에서 읽는 줄을 원합니다 . 배포판에서 제공하는 메커니즘을 사용하여 SSH 서버를 다시 로드합니다. (service sshd reload
RHEL/CentOS/Scientific.) 정상 다시 로드는 기존 세션을 삭제하지 않습니다. - 다시 인증해 보세요.
- 인증 시설 로그가 어디에 있는지 알아보고 읽어보세요. (IIRC,
/var/log/auth.log
Debian 기반 배포판,/var/log/secure
RHEL/CentOS/Scientific)
파일 시스템 권한 오류가 포함된 디버그 출력에 어떤 문제가 있는지 파악하는 것이 훨씬 쉽습니다. /etc/ssh/sshd_config
완료되면 변경 사항을 되돌리는 것을 잊지 마세요 !
답변3
옵션을 추가하는 것을 잊어버렸기 때문에 이 오류가 발생했습니다 -l
. 내 로컬 사용자 이름이 원격 시스템의 사용자 이름과 동일하지 않았습니다.
이것은 귀하의 질문에 대한 답변이 아니지만 내 문제에 대한 답변을 찾기 위해 여기에 왔습니다.
답변4
ssh -v
(물론 제 생각에는) 것 보다 읽기 쉬운 것은 입니다 tail -f /var/log/auth.log
. 연결을 시도하는 동안 연결하려는 서버에서 실행되어야 합니다. 일반 텍스트로 오류가 표시됩니다.
이는 내 문제를 해결하는 데 도움이 되었습니다.
AllowGroups에 나열된 사용자 그룹이 없기 때문에 xx.yy.com의 사용자 [username]은 허용되지 않습니다.