SSH 키 복사, 암호 없는 자동 로그인

로컬 호스트의 SSH 공개키를 리모트 호스트에 등록하면,
해당 리모트 호스트에 암호 없이 로그인 할 수 있습니다.



키 생성하기

https://zetawiki.com/wiki/리눅스_ssh-keygen


키 복사하기

리모트 호스트에 로컬 호스트의 공개키 복사하기

방법 1. ssh-copy-id 이용

자주 사용하는 SSH 호스트 alias 설정을 통해 서버 목록파일이 설정된 경우

ssh-copy-id exp-01

(참고) https://zetawiki.com/wiki/리눅스_ssh-copy-id

(참고) https://zetawiki.com/wiki/리눅스_SSH_패스워드_없이_자동_로그인


방법 2. 직접 등록

(1번째 줄) gildong 호스트의 공개키를 터미널에 출력하여 Ctrl C 로 복사
(3번째 줄) exp-01 호스트에 접속
(5번째 줄) exp-01 호스트의 허용된 공개키 목록(authorized_keys)을 vi 로 열어, 1번째 줄에서 복사한 내용을 붙여넣기

gildong ~$ cat ~/.ssh/id_rsa.pub

gildong ~$ ssh exp-01

exp-01 ~$ vi ~/.ssh/authorized_keys


여러 리모트 서버에 한번에 키 등록하기

여러 호스트의 암호가 동일한 경우, 로컬호스트의 키를 리모트 호스트에 한번에 등록할 수 있음

보안상 문제가 될 수 있으니, key를 등록한 이후 pass.txt 는 삭제할 것

pass.txt
YOUR_PASSWORD
copy-key.sh
sshpass -f pass.txt ssh-copy-id log-01
sshpass -f pass.txt ssh-copy-id log-02
sshpass -f pass.txt ssh-copy-id log-03
sshpass -f pass.txt ssh-copy-id exp-01
sshpass -f pass.txt ssh-copy-id exp-02
sshpass -f pass.txt ssh-copy-id exp-03
./copy-key.sh

(참고) https://zetawiki.com/wiki/리눅스_sshpass_사용법

(참고) 다수의 호스트에 키 등록을 안전하게 하려면 ansible 과 ansible vault 를 이용하면 됨


보안 유의사항

해당 호스트가 해킹되면, 다수의 리모트 호스트에 암호 없이 접속이 가능합니다. 해당 호스트의 보안에 각별히 유의해야 합니다.