20221025 Ssh
SSH Key를 이용한 터미널 접속
SSH 개인키/공개키를 이용하여 서버에 접속할 수 있다. 전체적인 순서는 다음과 같다.
- 클라이언트에서 SSH Key 생성
- 서버에 클라이언트의 공개키 등록
- 접속 테스트
1. 클라이언트에서 SSH Key 생성
ssh-keygen를 이용하여 키쌍을 생성한다
ssh-keygen -t $ALGORITHM
별도로 패스를 지정하지 않으면 키는 다음 경로에 생성된다
- 개인키 : ~/.ssh/id_rsa
- 공개키 : ~/.ssh/id_rsa.pub
ssh-copy-id
로컬에서 생성한 공개키를 서버에 등록 요롷게 밀어 넣으면 암호를 입력하지 않고 해당 서버에 접속할 수 있다.
# 공개키 등록ssh-copy-id -i $PUBLIC_KEY_FILE_PATH -p $SSH_PORT $SSH_USER_ID@$SERVER_IP# 접속 테스트ssh -i $PRIVATE_KEY_FILE_PATH $SSH_USER_ID@SERVER_IP -p $SSH_PORT
암호를 물어봄?
해당 작업 완료후에도 비밀번호를 물어보면 원격 폴더의 권한 문제일 수 있다. 서버에 접속하여 아래 두 파일의 권한을 확인해보자.
chmod 700 ~/.ssh/chmod 600 ~/.ssh/authorized_keys
기타
sudo 명령의 수행을 위하여 SSH_USER_ID는 sudoers파일에 NOPASSWD로 잡아두는게 좋다
sshpass
아이디/비번 방식으로도 접속할 수 있다. sshpass를 쓸 경우 스크립트에 평문으로 암호가 노출될 일이 많으니 툴의 도움을 적극 이용하자.
다음은 sshpass로 암호를 던져 $RUN_COMMAND를 실행하는 예제이다.
sshpass -p [$PASSWORD] ssh -o StricHostKeyCheking=no $SSH_USER_ID@SERVER_IP -p $SSH_PORT [$RUN_COMMAND]