본문 바로가기

Back-end

[리눅스] 키파일을 통한 비밀번호 없는 ssh접속과 디버그

[리눅스] 키파일을 통한 비밀번호 없는 ssh접속과 디버그

설정방법

우선 로컬와 원격서버 통신을 위해ssh key를 만들어줍니다. 패스워드를 입력해도 되지만 그렇게 되면 패스워드를 너무 자주 입력하게 됩니다.

ssh-keygen -t rsa

이후 3번의 질문을 하는데 각각 키파일명을 어떻게할지와 키파일에 비밀번호를 만들지 비밀번호를 만드는 경우 패스워드 컨펌입니다. 패스워드나 따로 이름을 입력하지 않는다면 엔터를 3번 따닥! 눌러주세요.

디폴트인 id_rsa이름으로 된경우

ssh-copy-id -i ~/.ssh/id_rsa.pub userName@ip

서버의 접속 아이디와 ip주소를 입력하여 접속한 후
패스워드를 입력하게되면 정상적으로 키파일을 옮기게 됩니다.

그 후 원격서버에 접속하여 ~/.ssh/authorized_keys 파일이
정상적으로 생성이 되었는지 확인해줍니다.

그 후 ssh userName@ip주소으로 접속하여줍니다.

디버깅노트

만약 계속 패스워드를 묻는다면 ssh -vvvi ~/.ssh/id_rsa.pub userName@ip주소와 같은 형식으로 접속하여 로그를 봅니다.

-v처럼 v가 하나인경우 1depth log -vv 두개인경우 2depth
3개일경우 3depth(max log)를 보여줍니다.

권한설정

원격서버에서 ~/.ssh는 0700, authrozied_key는 0600으로 설정되어있어야 하며 간혹 group이나 other가 더 높게 설정해야하는 경우도 있습니다.

서버측에서의 디버그노트

tail -f /var/log/secure

위 콘솔을 통하여 원격 서버로 들어오는 로그를 확인합니다.

서버 설정

/etc/ssh/sshd_config파일이 ssh configure 파일인데

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

상단 옵션들이 정상적으로 있는지 확인한 후

service sshd restart

서비스를 재시작하여줍니다.

restorecon

위의 방법들도 안된다면 원격서버에서
restorecon -Rv ~/.ssh 명령어를 입력해줍니다
restorecon의 경우 설정된 내용들을 default로 하여준후 지니다.