티스토리 뷰

기록

SSH Key 사용하기

Korean Eagle 2022. 9. 9. 15:24
728x90

SSH는 RSA 암호화 알고리즘을 사용하는 보안 접속 프로토콜이다. 서버는 클라이언트의 공개키를 저장하고, 클라이언트는 비밀키를 가지고 있는데, 이 상황을 가지고 클라이언트가 비밀키로 진짜 클라이언트가 맞는지를 검증하는 방식이다.

 

1. ssh는 22번 포트를 활용하는 보안 원격 접속 프로토콜이다.

2. 접속 시 기본적으로 ssh server는 해당 계정의 비밀번호를 물어보지만 클라이언트에서 ssh key를 생성하여 공개키를 접속할 서버에 등록하면, 계정 비밀번호 대신에 ssh key passpharse로 접속이 가능하다.

  2-1 대칭키 기반의 보안을 사용하므로 훨씬 안전하다. 

  2-2 ssh 키는 간단하게 말하면 비밀번호를 대신해서 특정 파일로 인증한다고 생각하면 된다.

  2-3 서버에 ssh 클라이언트의 공개키를 가지고 있고 대칭키 생성 시 입력한 passphrase가 일치하는 경우 인증완료하는 방식이다.

 

3. ssh 서버를 세팅하는 것은 간단하다.

  3-1 아래 명령어로 openssh 서버를 설치한다.

sudo apt install openssh-server

  3-2 설정 파일은 /etc/ssh/sshd_config 에 위치한다.

sudo sshd -t -f /etc/ssh/sshd_config

  3-3 설정 파일이 변경되면 아래처럼 systemctl을 사용하여 재기동할 수 있다.

sudo systemctl restart sshd.service

 

4. 클라이언트에서 서버로의 접속은 ssh 명령어로 가능한데 -i 옵션을 부여하면 ssh key로도 접속할 수 있다.

  4-1 ssh키를 생성하는 방법은 아래와 같이 할 수 있는데, -b 옵션은 몇 바이트 길이의 키를 생성할지를 지정한다. 기본은 3072바이트이다.

ssh-keygen -t rsa -b 4096

  4-2 위의 명령어로 키를 만들면 ~/.ssh 폴더가 생성되고 아래에 id_rsa.pub에 공개키, id_rsa에 비밀키가 저장된다.

  4-3 아래의 명령어로 접속하는 서버로 클라이언트가 생성한 공개키를 등록 할 수 있다.

    4-3-1 서버에 저장될 파일의 기본 경로는 ~/.ssh/authorized_keys 에 공개키가 저장된다.

    4-3-2 공개키가 등록된 클라이언트는 -i 옵션 없이 접근이 가능하다.

ssh-copy-id username@remotehost

 

5. 공개키를 일일히 복사하기 귀찮은 경우는 github 같은 곳에 ssh공개키를 저장하고 서버에서 import해서 가져오는 방법을 사용한다.

ssh-import-id <username-on-remote-service>

예를 들면
ssh-import-id gh:pilseong

  5-1 위의 명령어를 사용하면 서버의 ~/.ssh/authorized_keys 파일에 해당 공개키가 복사된다.

  5-2 이처럼 사용하기 위해서는 당연히 먼저 github에 공개키를 등록해야 한다. github에 로그인하고 settings에 메뉴에서 등록가능하다. 아래 링크를 참조한다.

 

How to Add SSH Keys to Your GitHub Account

In this tutorial: Why use an SSH key? How to Create an SSH Key Adding an SSH Key to Your GitHub Account GitHub offers a convenient SSH key feature for accessing your repositories on the command lin…

www.inmotionhosting.com

  5-3 정상적으로 등록이 된 것을 확인하려면 https://api.github.com/users/yourid/keys 경로로 접근이 가능하다.

 

6. openssh server의 기본 로그인 방식은 로그인을 시도하는 계정의 비밀번호이다. ssh 키로만 로그인을 허용하고 싶다면 openssh 서버의 설정파일에서 해당 부분을 수정하면 된다. /etc/ssh/sshd_config 파일을 열고

  6-1 PasswordAuthentication no

  6-2 위와 같이 설정하면 더 이상 비밀번호에 의한 로그인은 허용되지 않는다. Permission deined (publickey) 결과를 반환한다.

 

728x90
댓글