리눅스에서 SSH 키 기반 인증을 사용하면 비밀번호를 입력하지 않고도 서버에 로그인할 수 있습니다. SSH 키 기반 인증을 사용하려면 먼저 클라이언트와 서버에 SSH 키를 생성하고, 서버에 클라이언트의 SSH 키를 등록해야 합니다.
다음은 SSH 키 기반 인증을 확인하는 방법에 대한 예제입니다.
클라이언트에서 SSH 키 생성
클라이언트에서 SSH 키를 생성하려면 다음 명령어를 사용합니다.
$ ssh-keygen
이 명령어는 다음과 같은 질문을 합니다.
- 암호화 알고리즘을 선택하십시오. (RSA)
- 암호를 입력하십시오. (비어 둘 수 있습니다.)
- 암호를 다시 입력하십시오. (비어 둘 수 있습니다.)
암호화 알고리즘으로 RSA를 선택하고, 암호는 비어 둘 수 있습니다. 암호를 비어 두면 비밀번호를 입력하지 않고 SSH 키를 사용할 수 있습니다.
SSH 키가 생성되면 다음과 같은 파일이 생성됩니다.
~/.ssh/id_rsa
(개인 키)~/.ssh/id_rsa.pub
(공개 키)
클라이언트에서 SSH 키 서버에 등록
클라이언트에서 생성한 SSH 키를 서버에 등록하려면 다음 명령어를 사용합니다.
$ ssh-copy-id student@server
이 명령어는 서버의 ~/.ssh/authorized_keys
파일에 클라이언트의 공개 키를 추가합니다.
서버에서 SSH 키 기반 인증 사용 설정
서버에서 SSH 키 기반 인증을 사용하려면 /etc/ssh/sshd_config
파일에서 다음 설정을 변경합니다.
PasswordAuthentication no
이 설정을 변경하면 비밀번호를 사용하여 SSH로 로그인할 수 없게 됩니다.
서버에서 SSH 키 확인
서버에서 SSH 키를 확인하려면 다음 명령어를 사용합니다.
$ cd ./.ssh/ ; ls authorized_keys
이 명령어는 authorized_keys
파일의 내용을 출력합니다. 출력 결과에 클라이언트의 공개 키가 포함되어 있으면 SSH 키 기반 인증이 성공적으로 설정된 것입니다.
리눅스 SSH 키 기반 인증 실습 예제
다음은 desktop과 server에서 SSH 키 기반 인증을 설정하고 확인하는 예제입니다.
desktop
# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/student/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/student/.ssh/id_rsa.
Your public key has been saved in /home/student/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
server
# vim /etc/ssh/sshd_config
#PasswordAuthentication yes
PasswordAuthentication no
#
#Save the file and exit the editor.
#
#Reload the SSH daemon.
#
#systemctl reload sshd
desktop
# ssh-copy-id student@server
The authenticity of host 'server (192.168.1.10)' can't be established.
ECDSA key fingerprint is SHA256:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'server,192.168.1.10' (ECDSA) to the list of known hosts.
student@server's password:
server
# cd ./.ssh/ ; ls authorized_keys
student@desktop's public key
이 예제에서 desktop의 student 사용자는 server에 ssh key 기반 인증을 사용하여 로그인할 수 있습니다.