Linux에서 SSH 키를 설정하는 방법

SSH는 매우 유용한 기술입니다. 이를 활용하여 VPN 트래픽을 숨기거나 웹사이트 연결을 안전하게 보호하는 등 다양한 작업을 수행할 수 있습니다. 하지만 원격 시스템에 접속할 때마다 비밀번호를 입력해야 하는 번거로움이 있습니다. 만약 여러분이 여러 시스템에 동시에 SSH 연결을 시도하는 개발자이거나, 암호 입력에 지쳐버린 Secure Shell 사용자라면, ‘암호 없는 SSH’가 훌륭한 해결책이 될 수 있습니다. 이 방법은 호스트 시스템에서 안전한 SSH 키를 생성하고, 이 키를 사용하여 PC에 접근하는 방식입니다. 이렇게 하면 키를 가진 사람은 비밀번호 없이도 로그인할 수 있게 됩니다. 이제 그 방법을 자세히 알아보겠습니다.

SSH 키란 무엇일까요?

SSH 키는 Secure Shell에서 사용되는 특별한 식별 파일입니다. 이 키의 주된 목적은 사용자에게 고유한 ID를 부여하고, 로그인 과정에서 ‘신뢰할 수 있는’ 사용자로 인식되게 하는 것입니다. 키는 단순히 개인의 ID를 증명하는 파일 이상의 역할을 합니다. SSH를 이용하면, 사용자는 비밀번호 대신 이 키를 사용하여 로그인할 수 있습니다. 즉, SSH로 로그인할 때마다 비밀번호를 입력해야 하는 번거로움 없이 SSH 키를 사용할 수 있습니다.

SSH 키는 리눅스 시스템의 특정 위치에 저장되며, 이 키를 이용하면 암호 입력 없이 여러 원격 시스템에 자유롭게 접속할 수 있습니다.

안전한 SSH 키 생성 방법

안전한 SSH 키를 생성하려면 먼저 SSH가 실행 중이어야 합니다. 여기서 SSH 서버가 반드시 필요하다는 의미는 아닙니다. 단순히 기본적인 SSH 도구와 기능이 리눅스 PC에서 활성화되어 있으면 됩니다. 만약 SSH 설정 방법을 모르신다면, 관련 가이드를 참고하시면 도움이 될 것입니다.

중요한 점은 SSH 키는 항상 SSH 서버를 호스팅하는 시스템에서 생성해야 한다는 것입니다. SSH 세션을 호스팅하지 않는 서버에서 키를 생성한 후, SSH 호스트 시스템으로 복사하는 방식은 작동하지 않습니다.

키 생성 과정을 시작하려면 터미널을 열고 다음 명령을 실행하세요.

ssh-keygen -t rsa

ssh-keygen 명령을 실행하면 “Generating public/private rsa key pair”라는 메시지가 표시됩니다. 이는 시스템이 공개 키와 개인 키를 동시에 생성하고 있다는 의미입니다. 공개 키는 다른 사람들과 공유해도 괜찮지만, 개인 키는 절대 공유해서는 안 됩니다. 이것이 ‘개인’ 키라고 불리는 이유입니다.

생성된 키는 /home/username/.ssh/id_rsa 경로에 저장됩니다.

주의: ~/.ssh 폴더는 키를 포함하고 있으므로 삭제해서는 안 됩니다. 이 폴더를 임의로 변경한 후 해당 시스템에 원격 로그인을 시도하면 SSH 프롬프트가 실패하고 경고 메시지가 표시되며, 사용자가 잠길 수 있습니다.

원격 시스템에 SSH 키 적용

이제 SSH 키(공개 키 및 개인 키)가 생성되었고 사용할 준비가 되었으므로, 로그인하려는 시스템에 해당 키를 복사해야 합니다. 이 과정은 SSH를 통해 로그인하려는 모든 시스템에서 반복해야 합니다. 그렇지 않으면 해당 시스템에서는 키가 없는 사용자는 기존의 암호 기반으로 로그인해야 합니다.

원격 시스템에 키를 추가하려면 다음 예시를 참고하세요. SSH를 통해 호스트 시스템에서 이 작업을 수행하고 있는지 확인하세요.

ssh [email protected] mkdir -p .ssh

이 명령을 실행하면 원격 시스템의 홈 디렉토리 안에 숨겨진 ~/.ssh 폴더가 생성됩니다 (로그인에 사용된 사용자 이름 기준). 이 폴더는 새로 생성된 SSH 키 파일을 저장할 장소이므로 매우 중요합니다.

SSH 키 파일을 복사하려면 SSH 호스트 시스템에서 키가 필요한 원격 시스템으로 다음 명령을 실행하십시오.

cat .ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'

복사 과정은 네트워크 속도에 따라 몇 초 정도 소요됩니다. 완료되면 원격 PC에 SSH 키가 생성되어, 암호 입력 없이 SSH 호스트 PC에 로그인할 수 있게 됩니다.

SSH 키 백업하기

SSH 키는 매우 유용하며, 각 키는 고유합니다. 따라서 키를 백업하는 것이 좋습니다. 하지만 백업된 키를 다른 곳에 저장할 경우, 누군가 해당 키를 찾아 사용할 수 있다는 위험이 따릅니다. 그렇다면 SSH 키를 안전하게 백업하는 가장 좋은 방법은 무엇일까요? 바로 암호화입니다.

가장 빠르고 효율적인 암호화 방법 중 하나는 GnuPG를 사용하는 것입니다. GnuPG는 리눅스 시스템에 기본적으로 설치되어 있는 경우가 많으며, 파일을 암호화할 때 자주 사용됩니다. GnuPG를 설치하려면 터미널을 열고 패키지 관리자를 통해 “gpg”를 검색하여 설치하세요. GnuPG는 대부분의 리눅스 배포판에서 쉽게 찾을 수 있습니다.

GPG가 설치되고 실행되면 ~/.ssh 디렉토리를 tar 아카이브 파일로 압축하여 암호화 과정을 시작합니다. 이렇게 하면 ~/.ssh 폴더 내의 모든 파일을 개별적으로 암호화할 필요가 없어집니다.

tar -czvf ssh-stuff.tar.gz /home/username/.ssh

압축이 완료되면 암호화 과정을 시작합니다.

주의: 암호화 전에 터미널에서 gpg 명령을 실행하여 새 키링을 생성해야 합니다.

gpg -c ssh-stuff.tar.gz

암호화 과정이 완료되면 GnuPG는 “ssh-stuff.tar.gz.gpg”라는 이름의 파일을 생성합니다. 이제 원본 파일은 삭제해도 안전합니다. 백업 아카이브를 복호화하려면 다음 명령을 사용하세요.

gpg ssh-stuff.tar.gz.gpg