Ubuntu 20.04에서 SSH 키를 추가하는 방법

SSH 키를 사용하여 원격 Ubuntu 서버에 안전한 암호 없는 로그인 설정

SSH는 클라이언트 컴퓨터가 원격 서버에 연결하고 통신하는 데 도움이 되는 보안 클라이언트-서버 네트워크 프로토콜입니다. SSH 연결은 터미널에 입력한 명령이 암호화된 채널을 통해 원격 서버로 전송되도록 합니다.

원격 서버에 연결하는 데 사용되는 인증 메커니즘에는 암호 기반 인증(무차별 대입 공격에 취약)과 SSH 키 기반 인증(매우 안전함)의 두 가지 유형이 있습니다.

SSH 키 기반 인증에서는 공개 키와 개인 키라고 하는 키 쌍이 클라이언트 컴퓨터에서 생성됩니다. 이 공개 키의 복사본은 원격 서버에서 사용할 수 있습니다. 클라이언트가 서버에 연결 요청을 보내면 서버는 임의의 문자열을 생성하고 공개 키를 사용하여 암호화합니다. 이 문자열은 클라이언트 컴퓨터에서 사용할 수 있는 개인 키를 통해서만 해독할 수 있습니다. 이 방법을 사용하면 개인 키를 포함하는 클라이언트만 서버에 액세스할 수 있습니다.

이 가이드에서는 Ubuntu 20.04 LTS 서버에서 SSH 키를 설정하는 방법을 살펴봅니다.

컴퓨터에 기존 SSH 키가 있는지 확인하십시오.

SSH 키 쌍이 컴퓨터에 이미 존재하는지 확인하려면 터미널에 이 명령을 입력하십시오.

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

위의 명령이 반환되면 해당 파일이나 디렉토리가 없습니다 또는 검색 결과가 없습니다, SSH 키 쌍이 존재하지 않음을 의미합니다.

기존 SSH 키 쌍이 있는 경우 동일한 키 쌍을 사용하여 두 개의 원격 서버에 액세스하거나 다른 이름을 가진 다른 키 쌍을 생성할 수도 있습니다. 다음 단계로 넘어가 두 경우 모두에 대해 SSH 키를 생성하는 방법을 살펴보겠습니다.

클라이언트 컴퓨터에서 SSH 키 생성

컴퓨터에서 새 SSH 키 쌍을 생성하려면 아래와 같이 명령을 입력하십시오.

SSH 키젠

기본적으로 SSH 키는 2048비트입니다. 더 나은 보안을 위해 더 높은 비트의 SSH 키를 생성하려면 다음 명령을 사용하십시오.

ssh-keygen -b 4096

명령이 성공적으로 실행되면 다음 메시지가 화면에 표시됩니다.

공개/개인 rsa 키 쌍을 생성합니다. 키를 저장할 파일 입력(/home/harshit/.ssh/id_rsa):

이제 컴퓨터에 기존 SSH 키 쌍이 없으면 다음을 누르십시오. 입력하다, 그러나 기존 SSH 키가 있는 경우 아래와 같이 다른 파일 이름으로 키를 저장합니다.

키를 저장할 파일 입력(/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_xxx

교체 트리플 엑스 아래와 같이 적절한 이름으로 파일 이름 끝에 입력하다.

키를 저장할 파일 입력(/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_client_1

다음 프롬프트는 임의 길이의 암호를 입력하라는 메시지를 표시하며 장치에서 2단계 보안을 보장합니다.

암호 입력(암호가 없는 경우 비어 있음): 동일한 암호를 다시 입력합니다.

이 암호를 입력하면 개인 키에 액세스하는 사람이 있더라도 이 암호가 없으면 원격 서버에 액세스할 수 없습니다.

전체 프로세스가 완료되면 다음 메시지가 화면에 나타납니다.

ssh-keygen -b 4096 전체 과정의 SSH 키 생성이 완료되면 다음과 같은 메시지가 화면에 나타납니다.

SSH 키가 시스템에 생성되었습니다. 이제 원격 서버에서 공개 키를 복사할 차례입니다.

원격 Ubuntu 서버에 공개 키 복사

공개 키를 원격 서버에 복사하는 가장 쉽고 빠른 방법은 다음을 사용하는 것입니다. SSH 복사 ID 공익 사업. 그러나 어떤 이유로 인해 이 유틸리티를 컴퓨터에서 사용할 수 없는 경우 이 섹션에서 제공하는 다른 방법을 사용할 수도 있습니다.

ssh-copy-id 유틸리티 사용

그만큼 SSH 복사 ID 유틸리티는 기본적으로 장치에서 원격 Ubuntu 시스템의 적절한 디렉토리로 공개 키를 복사하는 Ubuntu 시스템에서 사용할 수 있습니다.

공개 ssh 키를 복사하려면 아래와 같이 터미널에 명령을 입력하기만 하면 됩니다.

ssh-copy-id 사용자 이름@호스트 이름

교체 사용자 이름 그리고 호스트 이름 위의 명령에서 서버의 사용자 이름과 호스트 이름으로

호스트에 처음 연결하는 경우 터미널에 다음 메시지가 표시됩니다. 그리고 누르다 입력하다.

호스트 '172.105.XX.XX(172.105.XX.XX)'의 인증을 설정할 수 없습니다. ECDSA 키 지문은 xx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xx입니다. 계속 연결하시겠습니까(예/아니요)? 

이제 SSH 복사 ID 유틸리티는 이름이 있는 파일을 검색합니다. id_rsa.pub 공개 SSH 키가 포함되어 있습니다. 스캔 프로세스가 완료되면 아래와 같이 원격 서버의 암호를 입력하라는 메시지가 표시됩니다. 암호를 입력하고 누르십시오 입력하다.

/usr/bin/ssh-copy-id: INFO: 이미 설치된 것을 필터링하기 위해 새 키로 로그인을 시도합니다. /usr/bin/ssh-copy-id: INFO: 1 key(s) ) 계속 설치해야 합니다 -- 메시지가 표시되면 새 키 [email protected]를 설치하라는 메시지가 표시됩니다.

키가 추가되면 터미널에 다음 메시지가 출력으로 나타납니다.

추가된 키 수: 1 이제 "ssh '[email protected]'"로 시스템에 로그인하고 원하는 키만 추가되었는지 확인하십시오.

클라이언트 컴퓨터에 여러 SSH 키가 있는 경우 적절한 공개 키를 원격 컴퓨터에 복사하려면 아래에 표시된 패턴으로 명령을 입력하십시오.

ssh-copy-id -i id_rsa_xxx.pub 사용자 이름@호스트

💡 팁

터미널에 입력할 때 파일 이름 끝에 .pub를 넣는 것을 잊지 마십시오.

파이핑 방식으로 공개 키 복사

다음과 같은 경우 터미널에 다음 명령을 입력하십시오. SSH 복사 ID 유틸리티를 사용할 수 없습니다. 이 명령은 조금 더 길어 보이지만 적절하게 작동합니다.

고양이 ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && 터치 ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && 고양이 >> ~/.ssh/authorized_keys"

바꾸다 원격 사용자 이름 그리고 서버 IP 주소 사용자 이름과 IP 주소로.

컴퓨터에서 사용할 수 있는 SSH 키가 여러 개인 경우 id_rsa.pub 선택한 공개 SSH 키 파일로 예를 들어, id_rsa_client_1.pub.

메시지가 표시되면 원격 사용자 암호를 입력하고 입력하다.

[email protected]의 비밀번호:

비밀번호를 입력하면, id_rsa.pub 파일이 복사됩니다 Authorized_keys 원격 서버의 파일.

공개 키 수동 복사

암호 인증을 통해 원격 시스템에 액세스할 수 없는 경우 이 방법을 사용합니다.

열기 id_rsa.pub 파일을 사용하여 고양이 터미널에서 명령. 텍스트 편집기에서 열 수도 있습니다. 목적은 파일 내용을 복사하는 것입니다.

고양이 ~/.ssh/id_rsa.pub

파일의 내용은 아래와 같이 표시됩니다.

SSH-RSA AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6Hy / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH your_name군요 @ your_PC

이제 원격 서버에 로그인하고 아래 표시된 명령을 사용하여 복사한 내용을 붙여넣습니다. 교체 위_문자열 복사한 내용으로.

echo above_string >> ~/.ssh/authorized_keys

여러 SSH 키 구성(선택 사항)

이 단계는 클라이언트 컴퓨터에 여러 SSH 키를 설정한 사용자를 위한 것입니다. SSH 키 설정이 하나만 있는 경우 이 섹션을 건너뛰십시오.

여러 SSH 키를 관리하기 위해 이제 구성 내부의 파일 .ssh 아래 표시된 명령을 사용하여 디렉토리.

cd ~/.ssh vim 구성

유형 다음 예와 같이 명령 모드로 들어가 여러 호스트의 세부 정보를 입력합니다.

호스트 원격 우분투 서버 호스트 이름 172.105.XX.XX 사용자 루트 IdentityFile ~/.ssh/id_rsa_client_1 호스트 원격 우분투 서버 호스트 이름 172.106.XX.XX 사용자 루트 IdentityFile ~/.ssh/id_rsa_client_2

마찬가지로 다른 원격 서버와 해당 키의 세부 정보를 입력합니다. 프로세스가 완료되면 ESC 그리고 :wq 저장하고 종료합니다.

이제 후속 프로세스는 클라이언트 컴퓨터에 단일 또는 다중 SSH 키가 있는 경우 모두 동일합니다.

SSH 키를 사용하여 원격 서버에 로그인

공개 키 복사 프로세스가 완료되면 아래와 같이 명령을 입력하여 원격 서버에 로그인합니다.

ssh remote_username@server_ip_address

키 쌍을 생성하는 동안 암호를 제공한 경우 암호를 입력하라는 메시지가 표시됩니다. 인증 프로세스가 완료되면 새 세션이 열립니다.

이제 원격 서버에서 SSH 키 기반 인증을 성공적으로 구성했습니다. 그러나 암호 기반 인증은 서버에서 여전히 활성 상태이므로 원격 서버가 여전히 무차별 대입 공격에 취약하다는 것을 의미합니다.

이제 원격 서버에서 비밀번호 기반 로그인 메커니즘을 완전히 비활성화합니다.

암호 기반 로그인 메커니즘 비활성화

변경하기 전에 원격 계정에 대한 루트 사용자 또는 sudo 사용 가능 사용자가 SSH 키 기반 인증 시스템을 사용하여 서버에 액세스할 수 있는지 확인하십시오. 이 단계는 비밀번호 기반 로그인을 완전히 잠그거나 비활성화하므로 최소한 한 명의 사용자 루트 권한이 SSH 키를 통해 서버에 액세스할 수 있어야 합니다.

원격 Ubuntu 서버에 로그인하고 아래 표시된 명령을 입력하십시오.

sudo vim /etc/ssh/sshd_config
  • 누르다 ESC, / 'PasswordAuthentication'을 입력하고 시작하다.
  • 지금 누르십시오 그리고 'PasswordAuthentication yes' 값을 'PasswordAuthentication no'로 변경합니다.
  • 누르다 ESC 위의 과정을 반복하여 'ChallengeResponseAuthentication', 'UsePAM'을 찾아 값을 다음으로 변경합니다. 아니요 또한.
PasswordAuthentication no ChallengeResponse인증 없음 UsePAM 없음

모든 값이 다음으로 설정되면 아니요, 누르다 ESC, 유형 :wq 그리고 치다 시작하다.

모든 변경 사항을 활성화하려면 다시 시작하십시오. SSH 아래 명령을 사용하여 서비스를 제공합니다.

sudo systemctl ssh 재시작

이제 컴퓨터에서 새 터미널 창을 열고 현재 세션을 닫기 전에 SSH 키 인증이 제대로 작동하는지 확인하십시오.

확인 프로세스가 완료되면 실행 중인 모든 세션을 닫습니다.

이제 Ubuntu 20.04 서버에서 SSH 키 기반 인증을 성공적으로 구성했습니다. 이제 아무도 암호 기반 로그인 메커니즘을 사용하여 서버에 로그인할 수 없습니다.