준호씨의 블로그
ssh known_hosts 등록. 처음 접속하는 호스트 yes/no 이슈 해결 본문
특정 호스트에 처음으로 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
'개발이야기' 카테고리의 다른 글
rsh -> ssh 변경 가이드 (0) | 2017.10.02 |
---|---|
perl - yyyy-mm-dd hh:mm:ss 만들기. yyyymmddhhmmss (0) | 2017.10.02 |
python - dictionary 의 key, value 를 출력 하는 방법. dictionary loop (2) | 2017.10.01 |
git commit 대신 ci - alias 기능 으로 타이핑 줄이기 (0) | 2017.09.27 |
redis 서버 외부 접근 오픈 및 password 설정 (0) | 2017.09.27 |