SSH 비밀번호 없이 접속하기 (ssh-keygen)

호스팅 서버 작업을 ssh로 한다거나, 특정 서버에 ssh를 통해 자주 접속하는 경우 비밀번호를 매 번 입력하는 것은 귀찮은 일이다. scp 커맨드로 파일들을 여럿 복사한다거나 한다면 더더욱 그렇다. 또 중간에 비밀번호를 물어보면 쉘 스크립트 안에 넣을 수 없기 때문에 불편하기도 하다.

그런데 key 교환을 미리 해 두어 비밀번호 입력을 건너뛰는 방법이 있다. ssh 클라이언트의 public key를 서버에 authorized_keys 라는 파일에 미리 기록해두면 동작한다.

먼저 클라이언트에 key 파일이 존재하는지 확인한다. ~/.ssh/ 디렉토리에 id_rsa 라는 파일이 있다면 이미 키는 존재하는 것이므로 아래 과정은 건너뛴다. 없다면 다음과 같이 ssh-keygen 커맨드를 통해서 key를 생성해준다.

imac:~ cky$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/cky/.ssh/id_rsa): <그냥 엔터>
Enter passphrase (empty for no passphrase): <그냥 엔터>
Enter same passphrase again: <그냥 엔터>
Your identification has been saved in /Users/cky/.ssh/id_rsa.
Your public key has been saved in /Users/cky/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:cwHYDEvfZW8SL1tAr4HsX3XWkukhQBrdjPYRbkq+eC0 cky@imac.local
The key's randomart image is:
+---[RSA 2048]----+
|      o=ooo=B.   |
|     ..oo*+*+* o.|
|      . o.*.B.@ =|
|         + +.@ =.|
|        S = o o  |
|         + + .   |
|        . E o    |
|         . .     |
|                 |
+----[SHA256]-----+

다음으로 서버에 public key를 넣어준다. 서버에 접속한 후 ~/.ssh/ 디렉토리에 authorized_keys라는 파일이 있는지 찾는다. 해당 파일에 클라이언트의 id_rsa.pub 파일 내용을 넣어주면 된다. 아래와 같은 형식으로 저장이 되면 된다.

host:.ssh cky$ cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9PGkVPrUxg59mw2wwOuePjnhx3Xu09iqyTPvpKlcxI43osWE1DwxwLcHdxZn7hbWU48yIF2qguI15RXucYuoy+gzmnN5b2L5T9vUxSYzwGTicgpU3JJImjvRDpdakqtqdodjXFtJEruvZ81BcKbL3F9TMC6+onaQf2DtZaIVZqDOsEHL4pUeAl7hMtDoAakYmUGPysQWjnVFNdkjfei3jiojMUrED6GeqG1SOv1etQM9qDDRX+RR6CjNVsJhAHpmLDoAJdJD6p/s/c4CYK89Rc1mTccdwJO8zaJDe280Ylp7AjNvZkox1UhWOZT0KQfHCgT+Mj0e6u423XwN71ZeB cky@imac.local
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQJW8NidufUidueieNoPvm1Z7iK1Yd595Yk90bvSYl775CJ/Dm1ejHxO/Fvs00lsKOgvYrTlCFA7eODYi5URFB/U3OUjfLFfstLekkk53DTx2Br2NUJPymc0MevroRwm0s17R+35uxqv8BD8aB/U7MFOooQQgh3QxyTcKTvMnzXLbjjhNsBZTbm/mUwoV63Snceg+XaEU476WP3M0XTRiIv1sQ1FO+3jO/R+V93X5WPrPRCMKavaTir+7DUFzcFH/ZOyAL82PV9vbJO4ox4Mq24DIwZio78UKwaVlNbssH+dHU8r8aVR2xvFVXYNs2pyFfmQTnbzaN8YVtbh86mHJL pi@raspberrypi
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9ARQI5M7F05QWwt5flzIfhP7rkoeZgGgIDPWILKcDKFXHSn6YQ7pnpibds9twa0J0iXj5Rkn6JbIUwKKNF89IqLpusd8IufM/XblzoUpCGSwg8UETQvdEDyY4hYxBnlT+jGKxbf6TgQHUy0sG2B0ctDi4+eFhAfOSiMSAP2UF6BqVrNTOx2PD8WqR8EzpzONivQtE0d3Ob9ueHdhHY9G9Oug+JMMb8MbjfkeowuU89Mw/m4dr10DE6tksPKXb7k03dfXbu5mDXsCIr8+IM1B1gl27BSlvjG7AwTbPHXHORK9XYgodY3eo4WyEWU4cFBXwZFFMJv6gfnAIjcgZKOT7 root@raspberrypi

이제 다 되었다. 연결을 끊은 다음 다시 접속해보면 패스워드를 묻지 않고 바로 프롬프트가 뜬다. 🙂

댓글 남기기