SSH(Secure Shell)는 클라이언트와 서버 간에 보안 연결을 만들기 위한 네트워크 프로토콜입니다. SSH를 사용하면 원격 시스템에서 명령을 실행하고 터널을 생성하며 포트를 전달하는 등의 작업을 수행할 수 있습니다.
SSH는 다양한 인증 메커니즘을 지원합니다. 가장 일반적인 두 가지 인증은 암호와 공용 키 기반 인증입니다.
공용 키를 사용한 인증은 디지털 서명을 기반으로 하며, 기존 암호 인증보다 더 안전하고 편리합니다.
이 문서에서는 Ubuntu 20.04 시스템에서 SSH 키를 생성하는 방법을 설명합니다. 또한 SSH 키 기반 인증을 설정하고 암호를 입력하지 않고 원격 Linux 서버에 연결하는 방법도 보여 줍니다.
Ubuntu에서 SSH 키 생성
Ubuntu 클라이언트 시스템에 SSH 키 쌍이 이미 있을 수 있습니다. 새 키 쌍을 생성하면 이전 키 쌍을 덮어씁니다. 키 파일이 있는지 확인하려면 다음 ls 명령을 실행합니다.
ls -l ~/.ssh/id_*.pub
명령이 No such file or directory 또는 no matches와 같은 항목을 반환하는 경우 이는 사용자에게 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 키를 누릅니다.
Enter passphrase (empty for no passphrase):
전체 교호작용은 다음과 같습니다.
새 SSH 키 쌍이 생성되었는지 확인하려면 다음과 같이 입력합니다.
ls ~/.ssh/id_*
# /home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub
Ubuntu 클라이언트 컴퓨터에서 SSH 키 쌍을 생성했습니다.
원격 서버에 공용 키를 복사
이제 SSH 키 쌍이 생겼으므로 다음 단계는 공용 키를 관리할 원격 서버에 복사하는 것입니다.
공용 키를 서버에 복사하는 가장 쉽고 권장되는 방법은 ssh-copy-id 도구를 사용하는 것입니다. 로컬 시스템에서 다음을 입력합니다.
ssh-copy-id remote_username@server_ip_address
# remote_username@server_ip_address's password:
원격 사용자 암호를 입력하라는 메시지가 표시됩니다.
사용자가 인증되면 공용 키 ~/.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
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
완료되면 다음과 같이 입력하여 파일을 저장하고 SSH 서비스를 다시 시작합니다.
sudo systemctl restart ssh
이 시점에서 암호 기반 인증이 실행 중지됩니다.
지금까지 새 SSH 키 쌍을 생성하고 SSH 키 기반 인증을 설정하는 방법을 보여드렸습니다. 동일한 키를 사용하여 여러 원격 서버를 관리할 수 있습니다. 또한 SSH 암호 인증을 사용하지 않도록 설정하고 서버에 보안 계층을 추가하는 방법도 배웠습니다.
기본적으로 SSH는 포트 22에서 수신합니다. 기본 SSH 포트를 변경하면 자동 공격의 위험이 줄어듭니다.
워크플로우를 간소화하려면 SSH 구성 파일을 사용하여 모든 SSH 연결을 정의합니다.
'SW > 리눅스' 카테고리의 다른 글
Linux : CentOS 8 : Gitea 설치 방법, 예제, 명령어 (0) | 2022.11.22 |
---|---|
Linux : Ubuntu 20.04 : Nagios 설치 방법, 예제, 명령어 (0) | 2022.11.21 |
Linux : CentOS 8 : Apache Cassandra 설치 방법, 예제, 명령어 (0) | 2022.11.19 |
Linux : SFTP Port 변경 방법, 예제, 명령어 (0) | 2022.11.18 |
Linux : cURL : POST 요청 방법, 예제, 명령어 (0) | 2022.11.17 |