리눅스에서 공개/개인 SSH 키 생성 방법

Generate Ssh Key Linux 00 Featured Image

원격 호스트에 SSH를 자주 사용한다면, SSH 서버의 보안을 강화하는 한 가지 방법은 공개/개인 SSH 키를 사용하는 것입니다. 이렇게 하면 비밀번호가 네트워크를 통해 전송되지 않습니다. 이는 무차별 대입 공격에 대한 방어에도 도움이 될 수 있습니다.

리눅스에서 공개/개인 SSH 키를 생성하는 것은 쉽습니다.

  1. 터미널을 엽니다. 다음을 입력합니다:
ssh-keygen-t rsa

또는 DSA(디지털 서명 알고리즘) 기술을 사용하여 공개/개인 키를 생성할 수도 있습니다.

ssh-keygen-t dsa

참고: DSA와 RSA의 보안에 대한 많은 논란이 있어 왔습니다. 제 생각에는 두 기술 간의 기술적 세부 사항에 대해 매우 특별한 관심이 없다면, 어떤 것을 선택하든 상관없습니다. 두 가지 모두 잘 작동합니다.

  1. 다음 화면에서 키를 저장할 위치를 묻는 메시지를 볼 수 있어야 합니다. 기본 위치는 홈 디렉토리의 .ssh 폴더입니다. 기본 설정을 수용하려면 Enter 키를 누릅니다.

Generate Ssh Key Linux 01 Create New Key

  1. 개인 키를 잠금 해제하기 위한 비밀번호를 입력하라는 메시지가 표시됩니다. 이는 원격 호스트에 연결하기 위한 비밀번호가 아니라, 누군가가 개인 키를 가져갔더라도 원격 서버에 접근하지 못하도록 하기 위한 비밀번호입니다. 비밀번호는 선택 사항입니다. 비워 두려면 Enter 키를 누르십시오.

Generate Ssh Key Linux 02 Add New Passphrase

  1. 이제 공개 및 개인 SSH 키가 생성되어야 합니다. 파일 관리자를 열고 .ssh 디렉토리로 이동합니다. id_rsa 및 id_rsa.pub라는 두 개의 파일이 있어야 합니다.

Generate Ssh Key Linux 03 List Ssh Folder Files

  1. 다음 명령어를 실행하여 새로운 SSH 공개 키를 원격 호스트에 업로드합니다:
ssh-copy-id username@remote-host-ip-address

Generate Ssh Key Linux 04 Copy Key To Remote Host

  1. 원격 호스트에 로그인하고 SSH 구성 파일을 편집합니다:
ssh username@remote-host-ip-address  
sudonano/etc/ssh/sshd_config

구성 파일을 아래로 스크롤하고 다음 속성이 올바르게 설정되어 있는지 확인합니다:

RSAAuthentication yes  
PubkeyAuthentication yes  
PasswordAuthentication no

파일을 작성하고 저장하려면 Ctrl + O를 누른 다음 Ctrl + X를 눌러 파일을 닫습니다.

Generate Ssh Key Linux 05 Modify Remote Host Ssh Daemon

  1. 원격 호스트에서 SSH 서버를 재시작합니다:
sudo systemctl restart ssh

이제 완료되었습니다. 다음 명령어로 원격 호스트에 연결할 수 있습니다:

ssh username@remote-host-ip-address

Generate Ssh Key Linux 06 Seamless Ssh Login Remote Host

자주 묻는 질문

SSH 키를 원격 서버에 복사했는데 “Permission Denied” 오류가 발생합니다.

이 문제는 대부분 원격 호스트의 “.ssh” 폴더와 관련된 문제입니다. 기본적으로, SSH 데몬은 구성 폴더와 “authorized_keys” 파일에 올바른 권한 비트가 없으면 모든 수신 연결을 거부합니다.

파일 및 폴더 권한을 변경하려면, 원격 머신의 로컬 콘솔에 접근하여 “/home” 디렉토리로 이동한 후: chmod 700 /home/$USER/.ssh && chmod 600 /home/$USER/.ssh/authorized_keys를 실행합니다. 마지막으로, 새 설정을 적용하기 위해 데몬을 재시작합니다: sudo systemctl restart ssh.

동일한 원격 서버에 대해 여러 SSH 키를 생성할 수 있나요?

네! 하지만 반드시 머신의 각 SSH 키가 고유한 파일 이름을 가져야 합니다. ssh-keygen -f /home/$USER/.ssh/filename을 실행하여 파일 이름을 설정합니다.

그 외에도, 원격 호스트에 로그인하기 위해 사용할 키를 명시해야 합니다. ssh -i /home/$USER/.ssh/filename [email protected]를 실행합니다.

기존 작동 중인 키를 사용하여 새 SSH 키를 원격 호스트로 가져올 수 있습니까?

네! 먼저 새 키를 SSH 인증 에이전트에 가져옵니다: ssh-add. 다음으로, 이전 머신에 로그인하고 해당 키를 동일한 인증 에이전트에 가져옵니다: ssh -A old.machine.ip.address && ssh-add -c.

마지막으로, Ctrl + D를 눌러 이전 머신에서 나가고 새 키와 오래된 키 모두를 사용하여 원격 호스트에 연결합니다.

이미지 제공: Unsplash. 모든 변경 및 스크린샷은 Ramces Red에 의해 이루어졌습니다.