준호씨의 블로그

ssh known_hosts 등록. 처음 접속하는 호스트 yes/no 이슈 해결 본문

개발이야기

ssh known_hosts 등록. 처음 접속하는 호스트 yes/no 이슈 해결

준호씨 2017. 10. 1. 16:19
반응형

특정 호스트에 처음으로 ssh 로 접근 하려고 하면 아래 처럼 yes/no 를 물어 보게 된다.

$ ssh junho85.pe.kr
The authenticity of host 'junho85.pe.kr (111.111.111.xxx)' can't be established.
RSA key fingerprint is 2f:e1:a7:bd:e4:56:53:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)?

yes 하고 나면 ~/.ssh/known_hosts 에 아래 처럼 추가 되고 그 다음부터는 물어 보지 않게 된다.

junho85.pe.kr,111.111.111.xxx ssh-rsa AAAAB3NzaC...D0AV

다만 수많은 서버를 세팅 해야 된다거나 할 때 하나하나 하려면 번거롭다. 여러대를 미리 한번에 등록하는 방법을 정리해보자.

ssh-keyscan 이용하여 여러 호스트 등록 하는 방법

호스트 수가 적다면 하나하나 해도 되지만 미리 등록 해 두려면 호스트 리스트 파일을 만들고 (여기서는 hostlistfile 이라 만들었다) 다음 커맨드를 이용하면 된다.

ssh-keyscan -t rsa -f hostlistfile >> ~/.ssh/known_hosts

이 방법이 가장 좋고 편한 방법으로 보인다. 뒤에 소개 하는 내용은 그냥 참고만 하자. ssh -o StrictHostKeyChecking=no 이용 방법의 경우 이미 해당 서버로 접속 할 수 있는 권한이 있는 경우에 사용 가능한 (이미 ssh public key 가 배포 되어 있거나 kerberos 등 다른 인증을 한 경우) 방법이라 제한적으로 이용 가능하다.

ssh 의 StrictHostKeyChecking=no 이용하기

참고로 아래 커맨드를 이용하면 yes/no 를 물어 보지 않고 바로 추가 하면서 해당 서버에 접속 한다.

ssh -o StrictHostKeyChecking=no junho85.pe.kr

커맨드를 날리려면 뒤에 커맨드를 붙이면 된다.

ssh -o StrictHostKeyChecking=no junho85.pe.kr whoami

bash 스크립트로 여러 호스트 등록

bash 스크립트로 known_hosts 등록

#!/bin/bash
hosts=("junho85_1" "junho85_2" ... "junho85_99" )

for host in ${hosts[*]}; do
        ssh -o StrictHostKeyChecking=no $host echo $host
done

TODO hosts 를 배열로 미리 저장해 두고 쓰고 있는데 파일에서 불러 올 수록 개선하자

(실패) 한줄 커맨드로 여러 호스트 등록

cat hostlistfile | while read in; do ssh -o StrictHostKeyChecking=no $in echo $in; done

호스트 리스트 파일을 미리 만들어 둔 경우 한줄로 위와 같이 하면 될 거 같았는데 안됨; 원인은 좀 확인 해 봐야 겠음.

ssh 설정 바꾸기

보안상 권장 하는 방식은 아님. 보안이 중요한 곳에서는 가급적 사용하지 않도록 한다.

~/.ssh/config 설정에 다음 내용을 추가 해 주면 된다는데 해보지는 않았음.

Host *
    StrictHostKeyChecking no

config 파일을 처음 만들었다면 해당 파일의 권한을 400 으로 바꿔 주어야 한다.

sudo chmod 400 ~/.ssh/config

참고

How to disable strict host key checking in ssh? https://askubuntu.com/questions/87449/how-to-disable-strict-host-key-checking-in-ssh

반응형
Comments