개요
오랜만에 데스크탑을 새로 장만했다. 재택근무를 하기 위해서 다시 개발 환경을 세팅하는 과정에서 sshpass로 서버 접속이 되지 않았던 경험을 남겨본다. (진짜 별거 아닌 문제였다.)
문제 상황
이전에 sshpass 접속 내용을 alias로 등록해서 간편하게 접속했었기 때문에 해당 내용을 그대로 지금 PC에도 등록했다. 그런데 sshpass를 실행해도 특별한 문구가 나오는 것도 아니고 아무 반응도 없었다.
$ sshpass -p [비번] ssh [계정]@[주소]
# 반응 없음..
원인과 해결 방안
ssh를 처음 접속하게 될 경우 새로운 호스트의 SSH 키를 확인하고, 이를 사용자의 known_hosts 파일에 저장한다. 아마 처음 ssh로 접속해봤다면 아래와 같은 내용을 본 적이 있을 것이다.
$ ssh [계정]@[주소] -p 22
The authenticity of host 'somehost ([주소])' can't be established.
RSA key fingerprint is SHA256:[암호화된내용].
Are you sure you want to continue connecting (yes/no)?
이 메시지는 SSH 클라이언트가 서버의 공개 키를 신뢰할 수 없음을 나타낸다. yes를 입력하고 연결을 계속하면 서버의 키가 ~/.ssh/known_hosts 파일에 저장된다. 이 후에는 sshpass를 사용하여 비밀번호를 자동으로 입력해도 문제가 발생하지 않는다.
하지만, 초기 키 확인 과정을 거치고 싶지 않다면 StrictHostKeyChecking=no 옵션을 추가해주면 된다.
$ sshpass -p [비번] ssh -o StrictHostKeyChecking=no [계정]@[주소]
위처럼 입력할 경우 매번 해당 옵션을 추가해줘야 하기 때문에 구성 파일에 해당 옵션을 추가해두면 더 편리하다.
또는 SSH 클라이언트의 구성 파일(~/.ssh/config)에 아래와 같이 설정하여, 매번 명령어에 옵션을 추가하지 않아도 된다.
$ vim ~/.ssh/config
Host [호스트] # 모든 호스트에 적용하고 싶다면 [호스트] 대신 *을 넣는다.
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
# 추가 설정이 필요한 경우 여기에 추가할 수 있다.
이렇게 설정하면 지정한 호스트에 대해 SSH 키 확인을 비활성화하고, known_hosts 파일에 기록하지 않도록 할 수 있다.
참조
'OS' 카테고리의 다른 글
Linux - 알아두면 좋은 Firewall-cmd 명령어 (2) | 2023.11.14 |
---|