SW/리눅스

Linux : Debian 10 : SSH Keys 설정 방법, 예제, 명령어

얇은생각 2022. 8. 9. 07:30
반응형

SSH(Secure Shell)는 클라이언트와 서버 간의 보안 연결에 사용되는 암호화 네트워크 프로토콜로 다양한 인증 메커니즘을 지원합니다. 암호화된 연결은 서버, X11 터널링, 포트 포워딩 등의 명령을 실행하는 데 사용할 수 있습니다.

암호와 공개 키 기반은 인증에 가장 일반적인 두 가지 메커니즘입니다.

공용키를 이용한 인증은 디지털서명 사용을 기반으로 하며, 기존 비밀번호 인증에 비해 보안성과 편의성이 뛰어납니다.

이 자료에서는 Debian 10 시스템에서 SSH 키를 생성하는 방법에 대해 설명합니다. 또한 SSH 키 기반 인증을 설정하고 암호를 입력하지 않고 원격 리눅스 서버에 연결하는 방법도 보여드리겠습니다.

 

 

Linux : Debian 10 : SSH Keys 설정 방법, 예제, 명령어

 

 

Debian에 SSH 키 생성

Debian 클라이언트 시스템에 SSH 키 쌍이 이미 있을 수 있습니다. 새 키 쌍을 생성하는 경우 이전 키 쌍을 덮어씁니다.

다음 ls 명령을 실행하여 키 파일이 있는지 확인합니다.

ls -l ~/.ssh/id_*.pub

 

 

위 명령의 출력에 해당 파일 또는 디렉토리가 없거나 일치하는 항목이 없는 경우 SSH 키가 없는 것이므로 다음 단계를 계속 진행하여 새 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_username 암호를 입력하라는 메시지가 표시됩니다.

사용자가 인증되면 공개 키 파일(~.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 암호 인증을 사용하지 않도록 설정할 수 있습니다.

비밀번호 인증을 사용 불가능으로 설정하기 전에 비밀번호 없이 서버에 로그인할 수 있는지, 로그인하려는 사용자에게 sudo 권한이 있는지 확인하십시오.

원격 서버에 로그인합니다.

ssh sudo_user@server_ip_address

 

 

SSH 서버 구성 파일 /etc/ssh/sshd_config를 엽니다.

sudo nano /etc/ssh/sshd_config

 

 

다음 지시문을 검색하고 다음과 같이 수정합니다.

# /etc/ssh/sshd_config

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

 

 

완료되면 파일을 저장하고 SSH 서비스를 다시 시작합니다.

sudo systemctl restart ssh

 

 

이때 암호 기반 인증이 사용되지 않도록 설정됩니다.

지금까지 새 SSH 키 쌍을 생성하고 SSH 키 기반 인증을 설정하는 방법을 보여드렸습니다. 동일한 키를 사용하여 여러 원격 서버를 관리할 수 있습니다. 또한 SSH 암호 인증을 비활성화하고 서버에 보안 계층을 추가하는 방법을 배웠습니다.

기본적으로 SSH는 포트 22에서 수신 대기합니다. 기본 SSH 포트를 변경하면 자동 공격의 위험이 줄어듭니다. 워크플로우를 간소화하려면 SSH 구성 파일을 사용하여 모든 SSH 연결을 정의합니다. 

 

 

 

참조

https://linuxize.com/post/how-to-set-up-ssh-keys-on-debian-10/

반응형