티스토리 뷰

반응형

SSH는 리눅스 및 맥에서 쉘을 통해 원격으로 터미널을 접속하고자 할 때 자주 사용하는 기본 툴입니다.

 

기본적으로는 SSH 접속을 할 때 패스워드를 입력하도록 되어있습니다.

 

물론 패스워드로 입력해서 접속을 해도 사용에는 문제는 없지만 Authentication key를 사용해서 패스워드 없이 접속한다면 편리할 것입니다.

 

추가적으로 SSH 서버에서 패스워드 접속을 비활성화한다면 보안은 한층 더 좋아질 것입니다.

 

원리는 Authentication key를 생성하고 SSH 서버에 등록하여 key를 가지고 있는 해당 컴퓨터의 사용자를 접속을 승인하는 구조입니다.

 

그럼 설정하는 방법을 알아보겠습니다.

 

우분투 20.04LTS에서 테스트되었으며 다른 리눅스에서도 작동됩니다.

 

필요 사항

접속을 받는 컴퓨터에 SSH Server (openssh-server) 설치 및 활성화

 

클라이언트 설정

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/ubuntu/.ssh/id_rsa
Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:rv5CgF/hA8VdsL1dhSywA0KrIJt/Ealw0AUDmg3CoLI ubuntu@ubuntu
The key's randomart image is:
+---[RSA 3072]----+
|Oooo.++.ooo. . ..|
|+*....oo.+ .. o. |
|B +.oo... +  ..  |
|.B.o.o+    + .   |
|E ..oo .S . .    |
| .  ....         |
|  . ..  .        |
|   .  ..         |
|     .oo.        |
+----[SHA256]-----+

Enter file in which to save the keyEnter passphrase 는 엔터를 눌러서 기본값으로 진행합니다.

 

생성된 key는 ~/.ssh 위치에 저장됩니다.

 

서버에 등록하는데 필요한 파일은 id_rsa.pub 파일입니다. (~/.ssh/id_rsa.pub)

 

 

이제 생성된 id_rsa.pub 파일을 SSH 서버로 복사 및 등록합니다.

$ ssh user@mydomain.com "mkdir .ssh; chmod 700 .ssh; umask 177; sh -c 'cat >> ~/.ssh/authorized_keys'" < ~/.ssh/id_rsa.pub
The authenticity of host 'mydomain.com (mydomain.com)' can't be established.
ECDSA key fingerprint is SHA256:3GVli4TQjwNr51PotinKWAc5j7z1PZV2CNu8xYr4h6U.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'mydomain.com' (ECDSA) to the list of known hosts.
user@mydomain.com's password:

user는 SSH 서버의 사용자 계정을 입력하고 mydomain.com는 도메인 주소 또는 IP주소를 입력합니다.

 

만약 처음 접속하는 경우라면 접속하겠는지 물어보는데 yes를 입력하여 진행합니다.

 

이렇게 하면 SSH 서버 계정의 authorized_keys에 pub 키가 추가됩니다.

 

 

이제 준비가 끝났으므로 SSH를 접속해봅니다.

$ ssh user@mydomain.com
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Wed Oct 20 15:39:00 2021 from 192.168.0.10

패스워드를 물어보지 않고 바로 접속되는 것이 확인됩니다.

반응형