20221025 Ssh

SSH Key를 이용한 터미널 접속

SSH 개인키/공개키를 이용하여 서버에 접속할 수 있다. 전체적인 순서는 다음과 같다.

  1. 클라이언트에서 SSH Key 생성
  2. 서버에 클라이언트의 공개키 등록
  3. 접속 테스트

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]

참조