본문 바로가기

Ubuntu

비밀번호 없이 ssh 로그인 하기

글을 쓰는 배경

remote host에 접속할 때 대개 username, password를 입력합니다. 그런데 이러한 로그인이 빈번하면 내 공개키를 remote host에 등록하여 매번 비밀번호를 입력하지 않는 것이 효율적입니다. 이 과정을 메모해 놓고 공유하기 위해 이 글을 작성합니다. 

 

주의사항

내 사설키를 다른 사람에게 유출하면 안됩니다. 통장의 비밀번호를 다른 사람에게 알려주는 것과 동일한 것입니다. 

 

시험환경

local host: Macbook

local username: chrisjang

remote host: Ubuntu 18.04

remote username: salsal

전체 과정

1. local host에서 사설키, 공개키 생성

2. 공개키를 remote host 이용자에 저장하고 등록

3. local host에서 remote host로 ssh login 

 

 

1. local host에서 사설키, 공개키 생성

ssh-keygen 명령어를 이용하여 생성할 수 있습니다. 

chrisjangmac:~ chrisjang$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/chrisjang/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/chrisjang/.ssh/id_rsa
Your public key has been saved in /Users/chrisjang/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:uYROm5ViY********YaiSrCGd5dtj4t6VxUUqMaUYUU chrisjang@chrisjangmac.local
The key's randomart image is:
+---[RSA 3072]----+
|.o..    o=Eoo.   |
|*.o. . .o . .    |
|*+ .+  = .   .   |
|+o=...o.*o  .    |
|+. ******** .     |
|.  ..= *..o      |
|      +..o       |
|      o o        |
|    .o .         |
+----[SHA256]-----+

 

ssh-keygen에 의해 이용자 홈디렉토리 아래 .ssh 디렉토리에 2개 파일이 생성된 것을 볼 수 있습니다. id_rsa는 사설키(private key)이며, id_rsa.pub는 공개키(public key)입니다. 

chrisjangmac:~ chrisjang$ ls -al .ssh
total 64
drwx------   8 chrisjang  staff   256 Jul 29 20:38 .
drwxr-xr-x+ 65 chrisjang  staff  2080 Jul 28 23:55 ..
-rw-------   1 chrisjang  staff  2622 Jul 29 21:18 id_rsa
-rw-r--r--   1 chrisjang  staff   582 Jul 29 21:18 id_rsa.pub

 

사설키를 확인해 보면 임의의 문자열을 볼 수 있습니다. 

chrisjangmac:~ chrisjang$ more .ssh/id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
NhAAAAAwEAAQAAAYEA2MqN3STRSul2PjwYxbjNLQZmFayXPk6vu1G+/LKP0Hn1n0kF+LMw
****생략****
ENSpGUvMaFHW6Q91lNyNmL4IUrSQLPcMIJylmgiVQLIO2Xt7ZQV4ezeptkeeywT9MYnPP4
uCBJelJoTtNPGnAAAAHGNocmlzamFuZ0BjaHJpc2phbmdtYWMubG9jYWwBAgMEBQY=
-----END OPENSSH PRIVATE KEY-----

 

공개키를 확인해 보면 또 다른 임의의 문자열을 볼 수 있습니다. 

chrisjangmac:~ chrisjang$ more .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDYyo3dJNFK6XY+PBjFuM0tBmYVrJc+Tq+7Ub78so/QefWfSQX4szDaAUFdDzOe1Z01q45griwa/Detio/WQYJ1b0FDk3thgb8Cu18HdslzcSOQQ2xdKrtCmge7ZXho8ZZF1KGLpdUaOFUkK4bjCl***********si649Nmvebd/f6BzGDdfe7ejly7LJ/hilTDF6EsXMhOO+4ayRbulyyRpbARjyBsUnfh3uFEd2tzBTwjSTj/wANF96k+wtB4mL7KaXZSME1ZBTE08uDvVJ6YeP1p2Bv8QPz5+4EoS8XyAse3c/D4AM/SfdgESbBju0LMoh2VL9zBFlZzcQ46gNJF6GgiRoGrN4NDgOdX/zUlaZPJvFqQk4OrnoO3PmNQmDc= chrisjang@chrisjangmac.local

 

2. 공개키를 remote host 이용자에 저장하고 등록

공개키는 일반 알파벳과 숫자로 이루어진 문자열이므로 파일복사나 클립보드 복사 등을 이용하여 remote host에 저장합니다. 저장 위치는 remote host 의 이용자 salsal 홈디렉토리 밑 .ssh 디렉토리 입니다. 공개키를 등록하는 파일이름은 authorized_keys 입니다. 

salsal@host1:~$ ls -al .ssh
total 12
drwx------  2 salsal salsal 4096  7월 29 21:24 .
drwxr-xr-x 16 salsal salsal 4096  7월 29 20:33 ..
-rw-rw-r--  1 salsal salsal  582  7월 29 21:24 authorized_keys
salsal@host1:~$ more .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDYyo3dJNFK6XY+PBjFuM0tBmYVrJc+Tq+7Ub78so/QefWfSQX4szDaAUFdDzOe1Z01q45griwa/Detio/WQYJ1b0FDk3thgb8Cu18HdslzcSOQQ2xdKrtCmge7ZXho8ZZF1KGLpdUaOFUkK4bjCl***********si649Nmvebd/f6BzGDdfe7ejly7LJ/hilTDF6EsXMhOO+4ayRbulyyRpbARjyBsUnfh3uFEd2tzBTwjSTj/wANF96k+wtB4mL7KaXZSME1ZBTE08uDvVJ6YeP1p2Bv8QPz5+4EoS8XyAse3c/D4AM/SfdgESbBju0LMoh2VL9zBFlZzcQ46gNJF6GgiRoGrN4NDgOdX/zUlaZPJvFqQk4OrnoO3PmNQmDc= chrisjang@chrisjangmac.local

 

3. local host에서 remote host로 ssh login

local host (chrisjangmac) 에서 remote host (host1)로 ssh login을 시도합니다.  비밀번호 없이 바로 로그인할 수 있습니다. 

chrisjangmac:~ chrisjang$ ssh salsal@localhost 
ED25519 key fingerprint is SHA256:p+o1hfkZg0a8CDOG5bA557Kn9Kovy3/4nQK+Smnifqg.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[localhost]:50001' (ED25519) to the list of known hosts.
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-80-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

0 updates can be applied immediately.

New release '20.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

Your Hardware Enablement Stack (HWE) is supported until April 2023.
Last login: Thu Jul 29 22:01:01 2021 from 10.0.2.2
salsal@host1:~$