클라우드에서 실행되는 Ubuntu 서버가 있습니다. 사용자 ( git
)를 만들었습니다 . 폴더 /home/git
에서 .ssh/
디렉토리와 authorized_keys
파일을 만들었습니다 .
그러나 SSH 공개 키를 authorized_keys
파일 에 넣으면 서버에서 계속 암호를 묻습니다.
내가 뭘 잘못 했어?
클라우드에서 실행되는 Ubuntu 서버가 있습니다. 사용자 ( git
)를 만들었습니다 . 폴더 /home/git
에서 .ssh/
디렉토리와 authorized_keys
파일을 만들었습니다 .
그러나 SSH 공개 키를 authorized_keys
파일 에 넣으면 서버에서 계속 암호를 묻습니다.
내가 뭘 잘못 했어?
답변:
서버 측에서 ssh 데몬은에 오류를 기록 /var/log/auth.log
하므로보고 된 내용을 보려면 해당 파일을 확인하십시오.
클라이언트 측에서 연결을 설정할 때 -v
플래그 (또는 -vv
또는 -vvv
)를 추가하여 자세한 정보를 표시 할 수 있습니다 . 이런 식으로 문제를 식별 할 수 있습니다.
확인해야 할 다른 사항이 있습니다.
/home/git/.ssh/authorized_keys
소유 인지 확인하십시오 git
./home/git/.ssh/authorized_keys
600 ( -rw-------
) 모드 인지 확인하십시오 .또한 /etc/ssh/sshd_config
파일을 확인 하십시오.
PubkeyAuthentication
로 설정해야합니다 yes
AuthorizedKeysFile
인증 된 키의 위치를 결정 하는 지시문 도 있습니다. 주석 처리되었거나 기본값으로 설정되어 있는지 확인하십시오 %h/.ssh/authorized_keys
./var/log/auth.log
파일 이 보이지 않으면 어떻게합니까? 이것을 켜는 방법이 있습니까?
sudo service ssh restart
또한 사용자 홈 디렉토리 (귀하의 경우, / home / git)가 귀하 만 쓸 수 있는지 확인하십시오. 내 홈 디렉토리가 그룹 쓰기 가능했기 때문에이 문제가 한 번 발생했습니다. /var/log/auth.log는 "인증 거부 : 디렉토리 / home / chuck에 대한 소유권 또는 모드가 잘못되었습니다"라고 말했습니다. (이것은 다른 사람이 엉망이었던 authorized_keys 파일을 사용하지 않도록하는 것입니다!)
이를 해결하는 방법에는 여러 가지가 있습니다 . 비밀번호 인증을 사용하지 않도록 sshd
(서버 측) 또는 ssh
(클라이언트 측)을 구성 할 수 있습니다 . 서버에서 비밀번호 인증을 비활성화하면 서버가 더 안전 해지지 만 키를 풀면 문제가 발생할 수 있습니다.
ssh
pubkey 인증을 사용하여 (클라이언트 측) 을 만들려면 ssh
명령에 몇 가지 옵션을 추가하십시오 .
ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X git@server
이것이 작동하면 시스템 전체 또는 사용자 별 PasswordAuthentication=no
ssh 클라이언트 구성 파일에서 옵션을 영구적으로 설정할 수 있습니다 (자세한 내용은 참조 )./etc/ssh/ssh_config
~/.ssh/config
man ssh_config
/etc/ssh/ssh_config
으로 Debian / Ubuntu 시스템의 모든 SSH 클라이언트 구성 ( )은 이미 상세 모드에서 호출 할 때 표시되는 것을 먼저 선호 PubkeyAuthentication
하고 시도 ssh
합니다.
홈 폴더가 암호화되어 있으면 authorized_keys
로그인하기 전에 파일을 읽을 수 없습니다. 집 밖으로 옮겨야합니다.
여기에 설명 및 수행 방법 : https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Troubleshooting
확인해야 할 또 다른 사항은 공개 키에 추가 캐리지 리턴이 있는지 여부입니다. 위의 조언에 따라 /var/log/auth.log를 검토하고 키를 읽을 때 오류가 발생했습니다. 열쇠는 4 줄이 아닌 2 줄 정도였습니다. 키에 추가 캐리지 리턴이 포함되었습니다.
vi 편집기를 사용할 때 shift-j를 사용하여 행을 결합하고 키 문자열에서 여분의 공간을 지우십시오.
sshd_config
. 30 분 동안 내 머리를 벽에 부딪쳤다. 이것은 나의 실수였다! 어쨌든, 나는 편집 한 모든 파일을 추가 줄 바꿈으로 끝내는 습관을 들었습니다. 끝에 하나의 키와 캐리지 리턴이 있어도 인증을 망칠 수 있습니다.
그래서 나에게 일어난 일은 로컬 컴퓨터에서 액세스 할 수있는 2 개의 VM이 있다는 것입니다 (2 개의 키 id_rsa.pub 및 id_rsa2.pub). 내 ssh 연결이 ssh user@xx.xx.xx.xx 연결에 기본적으로 id_rsa.pub을 사용하고 있음을 깨달았습니다. 구성 파일을 추가하고 다음과 같이 모든 호스트에 사용할 ID를 지정하여 문제를 해결했습니다.
vi ~/.ssh/config
Add both hostnames and their identity file as follows:
Host server1.nixcraft.com
IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
IdentityFile /backup/home/aymen/.ssh/id_rsa2