본문 바로가기

Dev Ops/Linux

ssh 비밀번호 없이 접속하는 법 authorized_keys

서버에 접속하여 어떤 작업을 해야하는 경우가 많은데, 이 때 해당 서버로 shell로 접속할 때 사용하는 SSH 라는 유명한 응용프로그램 및 프로토콜이 있습니다.https://ko.wikipedia.org/wiki/%EC%8B%9C%ED%81%90%EC%96%B4_%EC%85%B8

 

시큐어 셸 - 위키백과, 우리 모두의 백과사전

시큐어 셸(Secure SHell, SSH)은 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로그램 또는 그 프로토콜을

ko.wikipedia.org

SSH Client 설치

일반적으로 리눅스 계열 운영체제를 설치하면 기본적으로 설치되어있지만, 설치가 되어있지 않다면 아래 명령어로 설치해 줍니다. 

// ubuntu
sudo apt install openssh-client
// centos
sudo yum install openssh-client

키 페어 생성

키 생성은 ssh-keygen 명령어로 만들 수 있습니다. rsa는 비대칭 암호 알고리즘으로 유명한 방식이라 많이 사용됩니다.

user@xxxxxxxxxx ~ % ssh-keygen -t rsa                                 
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/user/.ssh/id_rsa.
Your public key has been saved in /Users/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:4Zy/O1J75EM3XK4PFjJ6wasInx1r0csmzcRm+cOA1Xs user@xxxxxxxxxx.local
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|                 |
|        .    .   |
|       o o .. . .|
|        S  ==o.+ |
|         .+.@==.E|
|      .  .+&o*o+ |
|       o.+=*X.=. |
|        +o** . o.|
+----[SHA256]-----+

내가 지정한 경로에 가보면, 방금 생성한 private키와 public 키 두 개가 존재하는 것을 확인할 수 있습니다.

public키는 .pub 확장자로 끝나는 파일이고, private 키는 확장자가 없습니다.

-rw-------@   1 user  staff      2610 Mar 14 05:04 id_rsa
-rw-r--r--@   1 user  staff       575 Mar 14 05:04 id_rsa.pub

이후에 cat명령어를 통해 공개키의 값을 확인합니다.

비밀키가 아닌 .pub 확장자인 공개키인 것을 명심해야 합니다. 비밀키는 어떤 일이 있더라도 유출되면 안됩니다.

cat ~/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC5VypyIRHHasg91TWPH3EDApqj6bm96KfyXeVzGnvk6ezemRqCWoYk3DO5qeGuLOvIYkULYjIY4kHgBjaepFjm1aHhX3KKLOXQXgDRQzWJDjoHhj7E82DUzPrjnO11w9Kbhad29p9BhhOHuOidFDKHabn45ZlhieCUgeQ+lAn+neValuf3qUqU+r12iDXOBV5jb9OxzzpeMbJUP/0csKrzNy8W8aGdcHcB+B1vcWnzjv1ZxemEOVAisuF3px1B6xtaK7NZ4bHPbZdHe/EL4gg6B6yg7wHt1QTm1fWoAsT8ppwvzIXyuz1HqwDLdkkg09S1+ddo0pZeZNJf/mCMuZ2XgbTi8H7WT0xQ+GrvD9YagkGA4LklzSb10tM4CJB7nmFMhXVWX2H7m6wgYhUbuDQJMqCfOJeuC7vSyoeqYHKEExnzv/cdUbik3kryDCECyQmR8MNPzGjNFF57UvM8LQq988/c1v2VTGMLh463OsR3pmUEdhhQHCZvATGcUA7eDCU= user@AD01977806.local

공개키 등록

내가 ssh로 접속하고 싶은 서버에 접속합니다. 만약 AWS를 사용하고 계시다면 ssh에 -i 옵션으로 키 파일을 지정해야 접속할 수 있겠죠?

이후 해당 서버의 ~/.ssh/authorized_keys 에 위에서 등록한 키를 덧붙여 줍니다. 

키를 등록한 뒤, 다시 원래 서버로 돌아와서 ssh 명령어로 해당 서버에 접속하면 키 없이도 접속할 수 있습니다.