이번 포스트에서는 ansible을 하며 aws에서 control node와 server node를 만드는데, ssh 통신으로 노드간 접속해본 것을 기록해보려 합니다.
목표
1. control 1개, server 3개로, 총 4개를 만든다.
2. 모든 노드에 jawoo라는 유저를 만든다.
3. control의 jawoo 유저가 server a, b, c 의 jawoo유저로 ssh통신이 가능하게 한다.
* OS는 amazon linux 2를 사용했습니다.
유저를 만드는 방법은 간단합니다.
sudo su -
useradd jawoo
vi /etc/group
visudo -f /etc/sudoers
루트 계정으로 접속해서 jawoo 유저계정을 만들어주고, /etc/group에 들어가서 wheel 그룹에 jawoo를 추가해줍니다. 그 후, sudoers의 110번 줄로 가서 비밀번호 없이 sudo 명령어를 사용할 수 있도록 설정을 바꿔줍니다.
control의 jawoo가 server의 jawoo로 통신하기 위해서는, server에서 control의 퍼블릭키를 가지고 있어야 합니다.
첫째로, server에서 ssh-keygen를 사용해 .ssh디렉토리를 만든 후, authorized_keys를 만들어 control의 퍼블릭키값을 복사/붙여넣기 해주는 것입니다.
ssh jawoo@10.0.0.x
안내문구에 yes를 치면 별 탈 없이 ssh 통신이 실행됩니다.
둘째로는, ssh-copy-id를 사용해 control의 키를 복사해 주는 것입니다. ssh접속이 가능하도록 퍼블릭키를 그대로 복사해서 복사명령어 사용 후 따로 해줘야 할 것이 없어서 편합니다. 다만, ssh-copy-id 역시 ssh 통신을 통한 복사이기 때문에, ssh통신이 가능한 상태여야 합니다. 그래서 키페어인증방식의 ssh접속이 아닌 비밀번호인증을 통해 접속해야 합니다.
기본적으로 csp에서 인스턴스를 만들게 되면 키페어로 ssh인증을 합니다. 그래서 ssh설정파일(/etc/ssh/sshd_config)에서 ssh접속 시에 패스워드 사용이 no로 되어있죠. yes로 바꿔줍니다.
sudo vi /etc/ssh/sshd_config
sudo systemctl restart sshd
ssh 데몬을 재시작 해줍니다. 이제 비밀번호로 인증이 가능하니 ssh-copy-id로 control의 퍼블릭키를 넘겨줍니다.