Rocky Linux 9에서 SSH 키를 설정하는 방법
소개
SSH 또는 보안 셸은 서버를 관리하고 서버와 통신하는 데 사용되는 암호화된 프로토콜입니다. Rocky Linux 서버로 작업할 때 SSH를 통해 서버에 연결된 터미널 세션에서 대부분의 시간을 보낼 가능성이 있습니다.
이 가이드에서는 Rocky Linux 9 서버용 SSH 키 설정에 중점을 둘 것입니다. SSH 키는 서버에 로그인하는 간단하고 안전한 방법을 제공하며 모든 사용자에게 권장됩니다.
1단계 - RSA 키 쌍 생성
첫 번째 단계는 클라이언트 시스템(일반적으로 로컬 컴퓨터)에 키 쌍을 생성하는 것입니다.
- ssh-keygen
기본적으로 ssh-keygen
은 대부분의 사용 사례에 충분히 안전한 2048비트 RSA 키 쌍을 생성합니다(선택적으로 -b 4096
플래그를 더 큰 4096비트 키 생성).
명령을 입력하면 다음 프롬프트가 표시됩니다.
OutputGenerating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):
ENTER
를 눌러 키 쌍을 홈 디렉토리의 .ssh/
하위 디렉토리에 저장하거나 대체 경로를 지정하십시오.
이전에 SSH 키 쌍을 생성한 경우 다음 프롬프트가 표시될 수 있습니다.
Output/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?
디스크의 키를 덮어쓰도록 선택하면 더 이상 이전 키를 사용하여 인증할 수 없습니다. 되돌릴 수 없는 파괴적인 프로세스이므로 예를 선택할 때 매우 주의하십시오.
그러면 다음 프롬프트가 표시됩니다.
OutputEnter passphrase (empty for no passphrase):
여기에서 선택적으로 보안 암호를 입력할 수 있으며 이는 적극 권장됩니다. 암호는 인증되지 않은 사용자가 로그인하는 것을 방지하기 위해 키에 추가 보안 계층을 추가합니다.
그러면 다음 출력이 표시됩니다.
OutputYour identification has been saved in /your_home/.ssh/id_rsa.
Your public key has been saved in /your_home/.ssh/id_rsa.pub.
The key fingerprint is:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host
The key's randomart image is:
+--[ RSA 2048]----+
| ..o |
| E o= . |
| o. o |
| .. |
| ..S |
| o o. |
| =o.+. |
|. =++.. |
|o=++. |
+-----------------+
이제 인증에 사용할 수 있는 공개 및 개인 키가 있습니다. 다음 단계는 SSH 키 기반 인증을 사용하여 로그인할 수 있도록 공개 키를 서버로 가져오는 것입니다.
2단계 - Rocky Linux 서버에 공개 키 복사
Rocky Linux 호스트에 공개 키를 복사하는 가장 빠른 방법은 ssh-copy-id
라는 유틸리티를 사용하는 것입니다. 가능한 경우 이 방법을 적극 권장합니다. 클라이언트 시스템에서 사용할 수 있는 ssh-copy-id
가 없는 경우 다음 두 가지 대체 방법(비밀번호 기반 SSH를 통해 복사 또는 수동으로 키 복사) 중 하나를 사용할 수 있습니다. .
ssh-copy-id를 사용하여 공개 키 복사
ssh-copy-id
도구는 많은 운영 체제에 기본적으로 포함되어 있으므로 로컬 시스템에서 사용할 수 있습니다. 이 방법이 작동하려면 서버에 대한 암호 기반 SSH 액세스 권한이 이미 있어야 합니다.
이 유틸리티를 사용하려면 연결하려는 원격 호스트와 암호 SSH 액세스 권한이 있는 사용자 계정만 지정하면 됩니다. 이것은 공개 SSH 키가 복사될 계정입니다.
- ssh-copy-id username@remote_host
다음 메시지가 표시될 수 있습니다.
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
이것은 로컬 컴퓨터가 원격 호스트를 인식하지 못한다는 것을 의미합니다. 이것은 새 호스트에 처음 연결할 때 발생합니다. 계속하려면 yes
를 입력하고 ENTER
를 누르십시오.
다음으로 유틸리티는 이전에 생성한 id_rsa.pub
키에 대한 로컬 계정을 스캔합니다. 키를 찾으면 원격 사용자 계정의 암호를 묻는 메시지가 표시됩니다.
Output/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
username@203.0.113.1's password:
암호를 입력하고(보안상의 이유로 입력한 내용은 표시되지 않음) ENTER
를 누릅니다. 유틸리티는 제공한 암호를 사용하여 원격 호스트의 계정에 연결합니다. 그런 다음 ~/.ssh/id_rsa.pub
키의 내용을 원격 계정의 ~/.ssh/authorized_keys
파일에 복사합니다.
다음 출력이 표시되어야 합니다.
OutputNumber of key(s) added: 1
Now try logging into the machine, with: "ssh 'username@203.0.113.1'"
and check to make sure that only the key(s) you wanted were added.
이 시점에서 id_rsa.pub
키가 원격 계정에 업로드되었습니다. 3단계를 계속 진행할 수 있습니다.
SSH를 사용하여 공개 키 복사
ssh-copy-id
를 사용할 수 없지만 서버의 계정에 대한 암호 기반 SSH 액세스 권한이 있는 경우 보다 일반적인 SSH 방법을 사용하여 키를 업로드할 수 있습니다.
cat
명령을 사용하여 로컬 컴퓨터에서 공개 SSH 키의 내용을 읽고 SSH 연결을 통해 원격 서버에 연결하면 됩니다.
다른 한편으로는 ~/.ssh
디렉토리가 존재하고 사용 중인 계정에 올바른 권한이 있는지 확인할 수 있습니다.
그런 다음 이 디렉터리 내에서 authorized_keys
라는 파일로 연결한 콘텐츠를 출력할 수 있습니다. 콘텐츠를 덮어쓰는 대신 >>
리디렉션 기호를 사용하여 콘텐츠를 추가합니다. 이렇게 하면 이전에 추가된 키를 파괴하지 않고 키를 추가할 수 있습니다.
전체 명령은 다음과 같습니다.
- cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
다음 메시지가 표시될 수 있습니다.
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
이것은 로컬 컴퓨터가 원격 호스트를 인식하지 못한다는 것을 의미합니다. 이것은 새 호스트에 처음 연결할 때 발생합니다. 계속하려면 yes
를 입력하고 ENTER
를 누르십시오.
그런 다음 원격 사용자 계정 암호를 입력하라는 메시지가 표시됩니다.
Outputusername@203.0.113.1's password:
비밀번호를 입력하면 id_rsa.pub
키의 내용이 원격 사용자 계정의 authorized_keys
파일 끝에 복사됩니다. 성공하면 3단계로 계속 진행합니다.
공개 키를 수동으로 복사
사용 가능한 서버에 대한 암호 기반 SSH 액세스 권한이 없는 경우 위의 프로세스를 수동으로 완료해야 합니다.
id_rsa.pub
파일의 내용을 원격 시스템의 ~/.ssh/authorized_keys
파일에 수동으로 추가합니다.
id_rsa.pub
키의 내용을 표시하려면 로컬 컴퓨터에 다음을 입력하십시오.
- cat ~/.ssh/id_rsa.pub
다음과 같은 키 콘텐츠가 표시됩니다.
Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== sammy@host
사용 가능한 방법을 사용하여 원격 호스트에 로그인합니다.
원격 서버에서 계정에 액세스할 수 있으면 ~/.ssh
디렉토리가 있는지 확인해야 합니다. 이 명령은 필요한 경우 디렉토리를 생성하거나 이미 존재하는 경우 아무 작업도 수행하지 않습니다.
- mkdir -p ~/.ssh
이제 이 디렉터리 내에서 authorized_keys
파일을 생성하거나 수정할 수 있습니다. 다음 명령을 사용하여 authorized_keys
파일의 끝에 id_rsa.pub
파일의 내용을 추가하고 필요한 경우 생성할 수 있습니다.
- echo public_key_string >> ~/.ssh/authorized_keys
위 명령에서 public_key_string
을 로컬에서 실행한 cat ~/.ssh/id_rsa.pub
명령의 출력으로 대체합니다. 체계. ssh-rsa AAAA...
로 시작해야 합니다.
마지막으로 ~/.ssh
디렉토리와 authorized_keys
파일에 적절한 권한이 설정되어 있는지 확인합니다.
- chmod -R go= ~/.ssh
이렇게 하면 ~/.ssh/
디렉토리에 대한 모든 "그룹\ 및 "기타\ 권한이 재귀적으로 제거됩니다.
root
계정을 사용하여 사용자 계정의 키를 설정하는 경우 ~/.ssh
디렉토리가 루트
:
- chown -R sammy:sammy ~/.ssh
이 자습서에서 사용자 이름은 sammy이지만 위의 명령에 적절한 사용자 이름을 대체해야 합니다.
이제 Rocky Linux 서버에서 키 기반 인증을 시도할 수 있습니다.
3단계 - SSH 키를 사용하여 Rocky Linux 서버에 로그인
위의 절차 중 하나를 성공적으로 완료했다면 이제 원격 계정의 비밀번호 없이 원격 호스트에 로그인할 수 있습니다.
초기 프로세스는 암호 기반 인증과 동일합니다.
- ssh username@remote_host
이 호스트에 처음 연결하는 경우(위의 마지막 방법을 사용한 경우) 다음과 같은 내용이 표시될 수 있습니다.
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
이것은 로컬 컴퓨터가 원격 호스트를 인식하지 못한다는 것을 의미합니다. yes
를 입력한 다음 ENTER
를 눌러 계속하십시오.
1단계에서 키 쌍을 생성할 때 암호를 제공하지 않은 경우 즉시 로그인됩니다. 암호를 제공한 경우 지금 입력하라는 메시지가 표시됩니다. 인증 후 Rocky Linux 서버에 구성된 계정으로 새 셸 세션이 열립니다.
키 기반 인증에 성공한 경우 계속해서 SSH 서버의 암호 기반 인증을 비활성화하여 시스템 보안을 강화하는 방법을 알아보세요.
4단계 - 서버에서 암호 인증 비활성화
암호 없이 SSH를 사용하여 계정에 로그인할 수 있었다면 계정에 SSH 키 기반 인증을 성공적으로 구성한 것입니다. 그러나 암호 기반 인증 메커니즘은 여전히 활성 상태이므로 서버가 여전히 무차별 대입 공격에 노출되어 있습니다.
이 섹션의 단계를 완료하기 전에 이 서버의 루트 계정에 대해 SSH 키 기반 인증이 구성되어 있는지 또는 이 서버의 루트가 아닌 계정에 대해 SSH 키 기반 인증이 구성되어 있는지 확인하십시오. sudo
권한이 있는 서버. 이 단계는 암호 기반 로그인을 잠그므로 여전히 관리 액세스 권한을 얻을 수 있는지 확인하는 것이 중요합니다.
원격 계정에 관리 권한이 있음을 확인했으면 루트로 또는 sudo
권한이 있는 계정으로 SSH 키를 사용하여 원격 서버에 로그인합니다. 그런 다음 SSH 데몬의 구성 파일을 엽니다.
- sudo vi /etc/ssh/sshd_config
파일 내에서 PasswordAuthentication
이라는 지시문을 검색합니다. 이것은 #
해시로 주석 처리될 수 있습니다. i
를 눌러 vi
를 삽입 모드로 전환한 다음 줄의 주석을 제거하고 값을 no
로 설정합니다. 이렇게 하면 계정 암호를 사용하여 SSH를 통해 로그인하는 기능이 비활성화됩니다.
...
PasswordAuthentication no
...
변경을 마쳤으면 ESC
를 누른 다음 :wq
를 눌러 변경 사항을 파일에 쓰고 종료합니다. 이러한 변경 사항을 실제로 구현하려면 sshd
서비스를 다시 시작해야 합니다.
- sudo systemctl restart sshd
예방 조치로 새 터미널 창을 열고 현재 세션을 닫기 전에 SSH 서비스가 올바르게 작동하는지 테스트하십시오.
- ssh username@remote_host
SSH 서비스가 여전히 제대로 작동하는지 확인한 후에는 모든 현재 서버 세션을 안전하게 닫을 수 있습니다.
Rocky Linux 서버의 SSH 데몬은 이제 SSH 키에만 응답합니다. 암호 기반 인증이 성공적으로 비활성화되었습니다.
결론
이제 서버에 SSH 키 기반 인증이 구성되어 계정 암호를 제공하지 않고 로그인할 수 있습니다.
SSH 작업에 대해 자세히 알아보려면 SSH 필수 가이드를 살펴보세요.