Linux 서버에 SSH 공개키 등록하는 방법

SSH(보안 쉘, Secure Shell)는 컴퓨터 네트워크를 통해 데이터를 안전하게 전송하고, 원격 시스템에 접속하도록 지원하는 프로토콜 및 해당 프로토콜을 구현한 프로그램을 가리키는 용어입니다. 이는 사용자가 원격 위치에 있는 서버에 안전하게 접속하고, 필요한 작업을 수행할 수 있게 해주는 중요한 도구인데요.

SSH 접속에는 일반적으로 두 가지 주요 방법이 사용됩니다. 하나는 사용자가 직접 비밀번호를 입력하여 인증하는 방식이고, 다른 하나는 별도의 인증 키를 사용하는 방식입니다. 특히, 후자의 방식에서 사용되는 것이 SSH 키입니다. SSH 키는 암호화된 두 개의 키 쌍, 즉 개인키와 공개키로 구성됩니다. 개인키는 사용자만이 소유하고 접근할 수 있는 비밀 키로, 안전하게 보관되어야 합니다. 반면에 공개키는 원격 서버에 등록되어, 사용자가 서버에 접속할 때 인증에 사용되는 키입니다.

이러한 SSH 키를 사용하면, 사용자는 비밀번호를 직접 입력하는 대신 키를 통해 원격 서버에 안전하게 접속할 수 있습니다. 이는 서버에 대한 접속을 더욱 안전하고 편리하게 만들어주는 동시에, 보안을 강화하는 데에도 기여하며 다음과 같은 방식으로 등록할 수 있습니다. Linux는 다양한 배포판이 존재하고 각각의 설정이나 사용 방식에 차이가 있지만 SSH 프로토콜 및 관련 도구가 표준화되어 공개키를 등록하는 방식은 대부분의 Linux 배포판에서 동일하게 적용됩니다.

아래 설명은 comeinsidebox.com 에서 테스트 및 검증 후 작성 된 내용이지만 이것이 본문의 내용의 정확성이나 신뢰성에 대해 보증을 하는 것은 아니니 단순 하게 참고용으로 확인바랍니다.

튜토리얼 환경: 윈도우 11, Ubuntu server 22.04

Linux 서버에서 공개키 등록하기

SSH-키-쌍-생성
SSH 키 쌍 생성

SSH키(개인키와 공개키)를 생성(링크 업데이트 예정)한 뒤 공개키를 등록할 서버에 접속 해 다음 작업을 진행해야 합니다.

VMware 리눅스 우분투 가상머신 공인아이피로 SSH PuTTY 원격 접속하기

서버에서 직접 등록

Linux에서 SSH 공개키를 원격 서버에 등록하는 방법은 다음과 같습니다.

공개키-확인-후-복사
공개키 확인 후 복사

공개키를 등록하기 위해서는 공개키를 확인후 해당 키 값을 복사해야 합니다. 이를 위해 키 파일을 직접 열어서 확인하거나 다음의 명령어를 실행하면 공개키 파일의 내용이 출력되는데 이를 복사합니다.

cat ~/.ssh/id_rsa.pub
ssh-디렉토리-이동
ssh 디렉토리 이동

이제 등록할 Linux 서버에 접속(링크 업데이트 예정) 후 원격 서버에서 ~/.ssh 디렉토리로 이동합니다. 해당 디렉토리가 없다면 만들어야 합니다. 디렉토리를 만드는 명령어는 다음과 같습니다.

mkdir ~/.ssh
authorized_keys-파일
authorized_keys 파일

원격 서버에서 ~/.ssh/authorized_keys 파일을 열고, 복사한 공개키를 붙여넣습니다. 해당 파일이 없다면 만들어야 합니다. 파일을 만드는 명령어는 다음과 같습니다.

touch ~/.ssh/authorized_keys
공개-키-값-입력-후-저장
공개 키 값 입력 후 저장

그리고 복사한 공개키를 이 파일에 직접 붙여넣기 하거나 다음 명령어를 사용해 바로 삽입할 수 있습니다. 이 때, <복사한 공개키> 부분에는 실제 복사한 공개키 내용을 붙여넣습니다.

echo <복사한 공개키> >> ~/.ssh/authorized_keys

이제 모든 변경 사항을 저장하고 나서 파일을 닫아야 합니다. 만약 vi 에디터를 사용한다면 :wq를 입력 후 Enter 키를 눌러 저장하고 닫을 수 있습니다. nano 에디터를 사용하는 경우에는 Ctrl + X를 누르고, 변경 사항을 저장하라는 메시지가 나타나면 Y를 누르고 Enter 키를 눌러 저장하고 닫을 수 있습니다.

권한-지정
권한 지정

마지막으로, ~/.ssh 디렉토리와 authorized_keys 파일의 권한을 적절하게 설정합니다. 이는 보안을 위해 필요한 절차로 다음 명령어를 순서대로 사용합니다. 리눅스 권한 퍼미션 chmod chown rwxrwxrwx 알아보기

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
정상-접속-완료
정상 접속 완료

이제 생성한 SSH 공개키가 원격 서버에 등록되었습니다. 이후부터는 비밀번호를 직접 입력하지 않고도, 생성한 개인키를 통해 원격 서버에 접속할 수 있습니다.

사용자와-주소-정보로-바로-사용도-가능
사용자와 주소 정보로 바로 사용도 가능

SSH는 사용자가 별도로 키를 지정하지 않았을 경우, 기본적으로 ~/.ssh/id_rsa라는 경로의 개인키를 사용하도록 설정되어 있어 사용자와 서버 주소만으로 바로 키 값을 가져와서 접속할 수 있습니다.

참고: 단, SSH는 기본적으로 ~/.ssh/id_rsa라는 이름의 개인키를 자동으로 사용하려고 시도합니다. 따라서 키 파일의 이름을 변경하였다면, 기존처럼 -i 옵션을 사용하여 키 파일의 경로를 명시적으로 지정해주어야 합니다.

공개키 서버 전송

위 방식을 사용하는 것이 기본적이지만 클라이언트의 공개키를 원격 서버에 바로 등록하는 과정을 한 줄의 명령어로 간단히 처리할 수도 있습니다.

참고: 이 명령어를 실행하기 전에 원격 서버에 ~/.ssh 디렉토리가 존재하고, 적절한 권한 설정이 되어 있는지 확인해야 합니다. 이 명령어는 ~/.ssh 디렉토리가 이미 존재한다는 가정하에 작동해 원격 서버에 ~/.ssh 디렉토리가 없다면, 에러를 반환하게 됩니다.

다음의 명령으로 user@server 사용자의 ~/.ssh/authorized_keys 파일에 공개 키를 추가할 수 있습니다. 이렇게 하면 원격 서버에 직접 접속하여 공개키를 복사-붙여넣기 하는 과정을 생략할 수 있어 편리합니다.

cat ~/.ssh/id_rsa.pub | ssh user@server "cat >> ~/.ssh/authorized_keys"

각 부를 좀 더 자세하게 정리하면,

  • cat ~/.ssh/id_rsa.pub: 이 부분은 클라이언트의 공개키를 출력하는 명령입니다. 공개키는 ~/.ssh/id_rsa.pub 파일에 저장되어 있습니다.
  • |: 이 기호는 파이프라고 부르며, 이전 명령의 출력을 다음 명령의 입력으로 전달하는 역할을 합니다. 여기서는 cat ~/.ssh/id_rsa.pub의 출력, 즉 공개키를 ssh user@server cat >> ~/.ssh/authorized_keys 명령으로 전달합니다.
  • ssh user@server: 이 부분은 사용자 이름(user)과 서버 주소(server)를 입력하여 원격 서버에 SSH로 접속하는 명령입니다. 여기서 user와 server는 각각 실제 사용자 이름과 서버 주소로 대체해야 합니다.
  • cat >> ~/.ssh/authorized_keys: 이 부분은 원격 서버에서 실행되는 명령입니다. 이 명령은 파이프로 전달받은 공개키를 원격 서버의 ~/.ssh/authorized_keys 파일에 추가합니다.
macOS 맥북 사파리 우클릭 드래그 방지 해제하기

관련 글

댓글로 남기기 어려운 내용은 Contact Form 에서 개별적으로 문의 할 수 있습니다. 해당 글과 연관 된 내용은 Copy를 이용해 현재 페이지의 주소를 복사 후 문의 폼에 입력시 보다 정확한 답을 얻을 수 있습니다.

Leave a Comment