SW/리눅스

Linux : 암호 없이 SSH Login : 설정하는 방법, 예제, 명령어

얇은생각 2020. 10. 30. 07:30
반응형

SSH(Secure Shell)는 클라이언트와 서버 간의 보안 연결에 사용되는 암호화 네트워크 프로토콜로, 다양한 인증 메커니즘을 지원합니다. 가장 많이 사용되는 두 가지 메커니즘은 암호 기반 인증과 공용 키 기반 인증입니다.

SSH 키 기반 인증을 설정하는 방법과 암호를 입력하지 않고 Linux 서버에 연결하는 방법에 대해 설명합니다.

 

 

 

SSH 무암호 로그인 설정

Linux에서 암호 없는 SSH 로그인을 설정하려면 공용 인증 키를 생성하여 원격 호스트 ~/.ssh/authorized_keys 파일에 추가하기만 하면 됩니다. 

다음 단계에서는 암호가 없는 SSH 로그인을 구성하는 프로세스에 대해 설명합니다.

 

01. 기존 SSH 키 쌍을 확인합니다.

새 SSH 키 쌍을 생성하기 전에 먼저 기존 키를 덮어쓰지 않기 때문에 클라이언트 시스템에 SSH 키가 이미 있는지 확인합니다. 

다음 ls 명령을 실행하여 기존 SSH 키가 있는지 확인합니다.

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

 

 

기존 키가 있는 경우 이러한 키를 사용하여 다음 단계를 건너뛰거나 이전 키를 백업하고 새 키를 생성할 수 있습니다.

해당 파일 또는 디렉터리가 없거나 일치하는 항목이 없으면 SSH 키가 없으므로 다음 단계를 진행하여 새 키를 생성할 수 있습니다.

 

 

02. 새 SSH 키 쌍을 생성합니다. 

다음 명령은 새 4096비트 SSH 키 쌍을 생성하고 이메일 주소를 주석으로 생성합니다.

ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"

 

 

Enter 키를 눌러 기본 파일 위치와 파일 이름을 사용합니다.

Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):

 

 

그런 다음 ssh-keygen 도구에서 보안 암호를 입력하라는 메시지가 표시됩니다. 암호를 사용할지 여부는 사용자에게 달려 있습니다. 암호를 사용할 경우 추가 보안 계층이 제공됩니다. 대부분의 경우 개발자와 시스템 관리자는 완전히 자동화된 프로세스에 유용하기 때문에 암호 없이 SSH를 사용합니다. 암호를 사용하지 않으려면 Enter 키를 누르기만 하면 됩니다.

Enter passphrase (empty for no passphrase):

 

 

전체 동작은 다음과 같습니다.

 

 

 

SSH 키가 생성되었는지 확인하기 위해 새 개인 키와 공용 키를 다음 목록에 나열할 수 있습니다.

# ls ~/.ssh/id_*

/home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub

 

 

03. 공용 키를 복사합니다.

SSH 키 쌍을 생성했으므로 암호 없이 서버에 로그인하려면 관리하려는 서버에 공용 키를 복사해야 합니다.

공용 키를 서버에 복사하는 가장 쉬운 방법은 ssh-copy-id라는 명령을 사용하는 것입니다. 로컬 컴퓨터 터미널에서 다음을 입력합니다.

ssh-copy-id remote_username@server_ip_address

 

 

remote_username 암호를 입력하라는 메시지가 표시됩니다.

remote_username@server_ip_address's password:

 

 

 

사용자가 인증되면 공개 키가 원격 사용자 인증_keys 파일에 추가되고 연결이 닫힙니다.

로컬 컴퓨터에서 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"

 

 

 

04. SSH 키를 사용하여 서버에 로그인합니다. 

위의 단계를 완료하면 암호를 입력하라는 메시지가 표시되지 않고 원격 서버에 로그인할 수 있습니다.

테스트하려면 SSH를 통해 서버에 로그인하기만 하면 됩니다.

ssh remote_username@server_ip_address

 

 

모든 것이 잘 진행되었으면 즉시 로그인됩니다.

 

 

 

SSH 암호 인증을 사용하지 않도록 설정

서버에 추가 보안 계층을 추가하려면 SSH에 대한 암호 인증을 사용하지 않도록 설정할 수 있습니다.

SSH 암호 인증을 사용하지 않도록 설정하려면 먼저 암호 없이 서버에 로그인할 수 있으며 로그인하는 사용자에게 sudo 권한이 있어야 합니다.

 

01. sudo 권한 또는 루트를 가진 사용자로 SSH 키를 사용하여 원격 서버에 로그인합니다.

ssh sudo_user@server_ip_address

 

 

 

02. SSH 구성 파일 /etc/ssh/sshd_config를 열고 다음 지시문을 검색한 후 다음과 같이 수정합니다.

# /etc/ssh/sshd_config

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

 

 

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

Ubuntu 또는 Debian 서버에서 다음 명령을 실행합니다.

sudo systemctl restart ssh

 

 

CentOS 또는 Fedora 서버에서 다음 명령을 실행합니다.

sudo systemctl restart sshd

 

 

 

 

결론

이 튜토리얼에서는 SSH 키 기반 인증을 설정하는 방법을 학습하여 사용자 암호를 제공하지 않고도 원격 서버에 로그인할 수 있습니다. 여러 원격 서비스에 동일한 키를 추가할 수 있습니다.

또한 SSH 암호 인증을 사용하지 않도록 설정하고 서버에 보안 계층을 추가하는 방법을 보여 주었습니다.

반응형