SSH(Secure Shell)는 원격 서버에 안전하게 접속해 명령어와 프로그램을 실행할 수 있도록 해주는 오픈소스 네트워크 프로토콜입니다. 또한 SCP나 rsync 명령어와 함께 사용하면 네트워크를 통해 컴퓨터 간 파일을 안전하게 전송할 수도 있습니다.
[함께 읽으면 좋은 글: OpenSSH 서버 보안 강화 방법]
SSH 키 기반 인증이 필요한 이유
이 글에서는 RHEL 계열(CentOS, Fedora, Rocky Linux, AlmaLinux)과 Debian 계열(Ubuntu, Mint) 리눅스 배포판에서 SSH 키를 이용해 원격 리눅스 서버에 비밀번호 입력 없이 자동으로 로그인하는 방법을 소개합니다.
SSH 키를 활용한 비밀번호 없는 로그인은 두 대의 리눅스 서버 간 신뢰 관계를 형성해 주기 때문에, 파일 동기화나 백업 자동화 작업을 훨씬 수월하게 만들어 줍니다.
실습 환경
SSH 클라이언트 : 192.168.0.12 ( Fedora 34 )
SSH 원격 호스트 : 192.168.0.11 ( CentOS 8 )
여러 대의 리눅스 원격 서버를 관리하고 있다면, SSH 비밀번호 없는 로그인은 스크립트를 활용한 자동 백업, SCP를 통한 파일 동기화, 원격 명령 실행 등 다양한 작업을 자동화하는 가장 효율적인 방법 중 하나입니다.
[함께 읽으면 좋은 글: 리눅스 시스템을 위한 백업 유틸리티 25선]
이번 예제에서는 192.168.0.12 서버의 tecmint 사용자가 192.168.0.11 서버의 sheena 사용자로 비밀번호 없이 자동 로그인하도록 설정해 보겠습니다.
1단계: SSH 키 생성 (192.168.0.12)
먼저 192.168.0.12 서버에 tecmint 사용자로 로그인한 뒤, 아래 명령어로 공개키/개인키 쌍을 생성합니다.
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tecmint/.ssh/id_rsa): [엔터 키 입력]
Created directory '/home/tecmint/.ssh'.
Enter passphrase (empty for no passphrase): [엔터 키 입력]
Enter same passphrase again: [엔터 키 입력]
Your identification has been saved in /home/tecmint/.ssh/id_rsa.
Your public key has been saved in /home/tecmint/.ssh/id_rsa.pub.
The key fingerprint is:
5f:ad:40:00:8a:d1:9b:99:b3:b0:f8:08:99:c3:ed:d3 admin@wsxdn.com
The key's randomart image is:
+--[ RSA 2048]----+
| ..oooE.++|
| o. o.o |
| .. . |
| o . . o|
| S . . + |
| . . . o|
| . o o ..|
| + + |
| +. |
+-----------------+
명령어를 실행하면 개인키(id_rsa)와 공개키(id_rsa.pub)가 ~/.ssh 디렉터리에 생성됩니다. 패스프레이즈(passphrase) 항목에서는 그냥 엔터 키를 눌러 빈 값으로 두면 됩니다.
2단계: 생성한 공개키를 원격 서버에 복사 (192.168.0.11)
다음으로 192.168.0.12 서버에서 새로 생성한 공개키(id_rsa.pub)를 192.168.0.11 서버의 sheena 사용자 홈 디렉터리 아래 .ssh/authorized_keys 파일로 업로드합니다. ssh-copy-id 명령어 하나면 간단히 처리할 수 있습니다.
$ ssh-copy-id admin@wsxdn.com
명령 실행 후 해당 사용자의 비밀번호를 한 번 입력하면, 공개키가 원격 서버의 authorized_keys 파일에 자동으로 등록됩니다.
3단계: 비밀번호 없는 SSH 로그인 테스트
설정이 완료되면 이제부터는 192.168.0.12 서버의 tecmint 사용자가 비밀번호 입력 없이 192.168.0.11 서버에 sheena 사용자로 바로 로그인할 수 있습니다.
$ ssh admin@wsxdn.com
접속 시 비밀번호를 묻지 않고 곧바로 셸에 진입한다면, SSH 키 기반 인증이 정상적으로 설정된 것입니다.
마무리
이번 글에서는 SSH 키를 활용해 비밀번호 없는 로그인을 설정하는 과정을 살펴보았습니다. 생각보다 간단하게 따라 할 수 있으며, 한 번 설정해 두면 서버 관리와 자동화 작업의 생산성이 크게 향상됩니다. 궁금한 점이 있다면 아래 댓글로 남겨주세요.