리눅스 시스템 보안을 위해 일반적으로 계정 비밀번호를 사용하여 로그인합니다. 하지만 작업 편의성을 위해 SSH 무암호 로그인을 설정하는 경우가 많습니다.
SSH 기본 개념
SSH(Secure Shell)는 네트워크를 통해 원격 시스템과 안전하게 통신할 수 있는 프로토콜입니다.
사전 준비
3대의 CentOS 8 시스템이 필요합니다.
| 호스트명 | IP 주소 |
|---|---|
| master | 192.168.1.10 |
| worker1 | 192.168.1.11 |
| worker2 | 192.168.1.12 |
설정 단계
- 로컬 머신에서 공개/개인 키 쌍 생성
- 공개 키를 대상 머신에 업로드
- 무암호 로그인 테스트
1. 준비 작업
- 각 시스템에서 /etc/hosts 파일을 수정하여 IP와 호스트명을 매핑합니다.
- CentOS 8에서는 기본적으로 SSH 무암호 로그인이 활성화되어 있지 않을 수 있습니다. /etc/ssh/sshd_config 파일에서 다음 설정의 주석을 제거합니다.
AuthorizedKeysFile .ssh/authorized_keys PubkeyAuthentication yes
2. SSH 키 쌍 생성
각 서버에서 다음 명령어를 실행하여 키를 생성합니다. 비밀번호는 입력하지 않고 Enter 키를 누릅니다.
ssh-keygen -t rsa
이 명령은 /root/.ssh 디렉토리에 id_rsa(개인 키)와 id_rsa.pub(공개 키) 파일을 생성합니다.
3. 공개 키 통합 및 배포
master 서버에서 다음 명령어를 실행하여 모든 노드의 공개 키를 통합합니다.
# master 노드 자신의 공개 키 추가 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # worker1 노드의 공개 키 추가 ssh root@worker1 "cat ~/.ssh/id_rsa.pub" >> ~/.ssh/authorized_keys # worker2 노드의 공개 키 추가 ssh root@worker2 "cat ~/.ssh/id_rsa.pub" >> ~/.ssh/authorized_keys
통합된 authorized_keys 파일을 다른 노드에 복사합니다.
scp ~/.ssh/authorized_keys root@worker1:~/.ssh/ scp ~/.ssh/authorized_keys root@worker2:~/.ssh/ scp ~/.ssh/known_hosts root@worker1:~/.ssh/ scp ~/.ssh/known_hosts root@worker2:~/.ssh/
4. 무암호 로그인 테스트
이제 다음 명령어로 비밀번호 없이 로그인할 수 있어야 합니다.
ssh master ssh worker1 ssh worker2
5. 비루트 사용자를 위한 무암호 로그인 설정
비루트 사용자에게도 동일한 절차를 적용할 수 있지만, .ssh 디렉토리와 authorized_keys 파일의 권한을 설정해야 합니다.
chmod 700 ~/.ssh/ chmod 600 ~/.ssh/authorized_keys
6. SSH 서비스 재시작
설정 변경 후 SSH 서비스를 재시작합니다.
systemctl restart sshd service sshd restart
7. 무암호 로그인 종료
SSH 세션을 종료하려면 exit 명령을 사용합니다.
exit