SSH(Secure Shell)는 클라이언트와 서버 간의 보안 연결에 사용되는 암호화 네트워크 프로토콜로, 다양한 인증 메커니즘을 지원합니다.
가장 널리 사용되는 두 가지 메커니즘은 암호 기반 인증과 공용 키 기반 인증입니다. SSH 키를 사용하는 것이 기존 암호 인증보다 더 안전하고 편리합니다.
Debian 9 시스템에서 SSH 키를 생성하는 방법에 대해 설명합니다. 또한 SSH 키 기반 인증을 설정하고 암호를 입력하지 않고 원격 리눅스 서버에 연결하는 방법을 보여 줍니다.
Debian에서 SSH 키 생성
새 SSH 키 쌍을 먼저 생성하기 전에 Debian 클라이언트 시스템에서 기존 SSH 키를 확인하십시오. 다음 ls 명령을 실행하여 이 작업을 수행할 수 있습니다.
ls -l ~/.ssh/id_*.pub
위의 명령 출력에 해당 파일 또는 디렉토리가 없거나 일치하는 항목을 찾을 수 없다는 것은 SSH 키가 없음을 의미하며, 다음 단계를 계속하여 새 SSH 키 쌍을 생성할 수 있습니다.
기존 키가 있는 경우 이 키를 사용하여 다음 단계를 건너뛰거나 이전 키를 백업하고 새 키를 생성할 수 있습니다.
다음 명령을 사용하여 이메일 주소를 주석으로 사용하여 새 4096비트 SSH 키 쌍을 생성하는 것으로 시작하십시오.
ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"
# Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):
Enter 키를 눌러 기본 파일 위치와 파일 이름을 사용합니다.
그런 다음 보안 암호를 입력하라는 메시지가 표시됩니다. 암호를 사용할지 여부는 사용자에게 달려 있습니다. 암호를 사용하면 키에 추가 보안 계층이 추가됩니다.
Enter passphrase (empty for no passphrase):
암호를 사용하지 않으려면 Enter 키를 누르십시오.
SSH 키 쌍이 생성되었는지 확인하려면 다음을 입력합니다.
ls ~/.ssh/id_*
출력은 다음과 같아야 합니다.
/home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub
공용 키를 서버에 복사
SSH 키 쌍이 있으므로 다음 단계는 관리하려는 서버에 공용 키를 복사하는 것입니다.
공용 키를 원격 서버에 복사하는 가장 쉽고 권장되는 방법은 ssh-copy-id 도구를 사용하는 것입니다.
로컬 시스템 터미널에서 다음 명령을 실행합니다.
ssh-copy-id remote_username@server_ip_address
# remote_username@server_ip_address's password:
remote_dister@server_ip_address의 비밀번호는 다음과 같습니다.
사용자가 인증되면 공개 키 ~/.ssh/id_rsa.pub가 원격 사용자 ~/.ssh/authorized_keys 파일에 추가되고 연결이 닫힙니다.
# Number of key(s) added: 1
#
# Now try logging into the machine, with: "ssh 'username@server_ip_address'"
# and check to make sure that only the key(s) you wanted were added.
로컬 시스템에서 ssh-copy-id 유틸리티를 사용할 수 없는 경우 다음 명령을 사용하여 공용 키를 복사할 수 있습니다.
cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
SSH 키를 사용하여 서버 로그인
이때 암호를 입력하라는 메시지가 표시되지 않고 원격 서버에 로그인할 수 있어야 합니다.
테스트하려면 SSH를 통해 서버에 연결해 보십시오.
ssh remote_username@server_ip_address
암호를 설정하지 않은 경우 즉시 로그인됩니다. 그렇지 않으면 암호를 입력하라는 메시지가 표시됩니다.
SSH 암호 인증을 사용하지 않도록 설정
서버에 추가 보안 계층을 추가하려면 SSH에 대한 암호 인증을 사용하지 않도록 설정할 수 있습니다.
SSH 암호 인증을 사용하지 않도록 설정하기 전에 암호 없이 서버에 로그인할 수 있는지, 그리고 로그인하는 사용자는 sudo 권한을 가지고 있어야 합니다.
원격 서버에 로그인합니다.
ssh sudo_user@server_ip_address
SSH 구성 파일 /etc/ssh/sshd_config를 엽니다.
sudo vim /etc/ssh/sshd_config
다음 지시사항을 검색하고 다음과 같이 수정합니다.
/etc/ssh/sshd_config
# PasswordAuthentication no
# ChallengeResponseAuthentication no
# UsePAM no
완료되면 다음 명령을 사용하여 파일을 저장하고 SSH 서비스를 다시 시작합니다.
sudo systemctl restart ssh
이 때 암호 기반 인증은 사용할 수 없습니다.
'SW > 리눅스' 카테고리의 다른 글
Debian 9 : Yarn 설치하는 방법, 예제, 명령어 (0) | 2021.02.19 |
---|---|
Linux : Grep 명령어 사용하는 방법, 예제, 명령어 (파일들의 내용 찾는 방법) (0) | 2021.02.18 |
Ubuntu 18.04 : Apache Maven 설치하는 방법, 예제, 명령어 (0) | 2021.02.16 |
Ubuntu 18.04 : Django 설치하는 방법, 예제, 명령어 (0) | 2021.02.15 |
Debian 9 : Let's Encrypt로 Apache 보안 설정하는 방법, 예제, 명령어 (0) | 2021.02.14 |