-
카테고리
-
세부 분야
데브옵스 · 인프라
-
해결 여부
해결됨
vm 양방향 authorized_keys 와 known_hosts 등록 질문입니다.
20.03.19 18:31 작성 조회수 258
0
강의 잘 보고 있습니다. 감사합니다.
그런데 강의해주신대로 해서 server -> node 로 단방향은 ssh 접속이 잘 되는데요.. node -> server 도 ssh 접속이 그냥 되도록 authorized_keys 와 known_hosts 등록되는 방법이 있을까요?
양방향으로 node <-> server 되도록 authorized_keys 와 known_hosts 등록하는 앤서블 스크립트를 작성하는 방법이 궁금합니다...
감사합니다.
답변을 작성해보세요.
1
조훈(Hoon Jo)
지식공유자2020.03.20
안녕하세요
현재 작성된 방법은 사용자가 known_hosts를 생성하는 방법과 authorized_keys을 코드화 했다고 보시면 됩니다.
1. /usr/bin/ssh-keyscan -t ecdsa 를 통해서 known_hosts를 생성하고 이를 ~/.ssh/known_hosts 로컬에 저장
2. ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa 를 통해서 authorized_keys를 생성하고 각 노드에 저장
따라서 노드에서 이걸 구현하려면...각 노드마다 앤서블 코어가 모두 설치되어서 #1번과 #2번이 실행되어야 하고 앤서블 호스트(/etc/ansible/hosts)가 구현되어 있어야 하는데요. 효율적일지 모르겠습니다.
기본적으로 앤서블은 push 방식(서버에서 노드로 넣어줌) pull방식으로 구현도 가능하지만 어짜피 생성이후에 저장단계를 거치기 때문에 pull방식으로 구현한다고 해도 위의 방법에서 벗어나지 않을 것 같습니다.
앤서블은 아시겠지만, agentless로 서버에서 노드로 넣어주는 구조이기 때문에 역 구조를 앤서블에서 고려할 필요가 없어서요. 다만 kubespray와 같이 모든 노드(서버,노드)가 cross로 인증이 모두 처리되어야 있어야 하는 경우에는 저는 bash로 작성해서 모든 노드에서 실행하여 처리하였습니다. (고민을..하기가 번거로워서 --;;;;)
모든 노드에서의 인증 처리를 아래와 같은 bash 코드를 참고해 보시면 좋을꺼 같네요.
#Auto_Pass
#if you want to filter only ip then [grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}']
#make a directory
mkdir ~/.ssh
#Read hosts from file
readarray hosts < /etc/hosts
##1.known_hosts##
if [ ! -f ~/.ssh/known_hosts ]; then
for host in ${hosts[@]}; do
ssh-keyscan -t ecdsa ${host} >> ~/.ssh/known_hosts
done
fi
##2.authorized_keys
if [ ! -f ~/.ssh/id_rsa.pub ]; then
ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa -q -N ''
for host in ${hosts[@]}; do
sshpass -p vagrant ssh-copy-id -f ${host}
done
fi
조훈 드림
0
0
답변 3