원본 : https://m.blog.naver.com/yexx/220655313158
PUTTY 자동로그인 설정하기
대부분 원격서버에 ssh로 접속을 하는 경우에, 해당 시스템의 ip를 입력하고 접속 버튼을 누르면, 새 창이 뜬 후에 계정정보를 물어보게되는데.. 가끔 순간 멍~해질때가 있고.. 그 후에야 더듬거리며 계정과 비밀번호를 입력하게 된다.. - 요즘은 나이가 들어서 그런지.. 확실히 둔해짐을 느낀다.. 그럴수록 찾게되는 편리함이란..
putty 에서는 몇 가지 단계를 거치면 목록에서 Load 한 다음에 Connect 만 클릭하면 자동으로 샥~샥~ - 계정정보를 입력하지 않고.. - 하게 되는데.. 한 번 해보자.. 생각보다 번거롭기도 하지만, 일단 한번 설정해 놓고나면 나름 진심 진정 편리하다.. - 계정정보를 외우거나 혹은 어딘가에 적어두거나.. 적어둔 그 곳을 다시 펼쳐본다던가 하는 그런 불편함들이 일시에 해소된다.. 결정적으로.. 머리속을 비울수 있다..
다만. 편리함과 보안성은 상호 지렛대 관계에 있는 것 같다. 편리해지면 보안이 약해지거나 혹은 불편하지만 보안은 철통인.. 그런 상태가 지렛대처럼 형성되는 것 같으니.. 이 부분은 담당자의 몫으로 남겨두는 수 밖에.. - 아.. 비겁하다.. ㅋㅋ 결국 떠넘기기구나..
순서는 다음과 같습니다.
1. 원격시스템에 접속해서 ssh 인증키를 생성하고 이름을 바꿔줍니다.
2. 로컬시스템에 ssh 인증키를 복사하고 puttygen으로 키를 변환해줍니다.
3. putty 설정을 하고 저장해 줍니다.
준비물
ssh 로 접속한 원격시스템이 필요합니다. (아.. 이건 너무 당연한..)
puttygen 이 포함되어있는 putty 가 설치되어 있어야 합니다. https://www.chiark.greenend.org.uk/~sgtatham/putty/
0단계..
원격시스템에 접속해서 home계정 아래에 .ssh 디렉토리를 생성하고 권한을 700으로 변경합니다.
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
원격시스템에 접속해서 openssh-server를 설치하고 실행을 확인합니다.
gndb@gndb-S5520UR:~$ sudo apt install openssh-server
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Suggested packages:
...
Processing triggers for man-db (2.10.2-1) ...
Processing triggers for ufw (0.36.1-4build1) ...
gndb@gndb-S5520UR:~$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: e>
Active: active (running) since Wed 2023-07-12 15:13:34 KST; 2min 9s ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 43944 (sshd)
Tasks: 1 (limit: 23897)
Memory: 1.7M
CPU: 35ms
1단계..
원격시스템에 접속해서 ssh 인증키를 생성하고 이름을 바꿔줍니다.
[1] 원격시스템에 로그인을 합니다.
[2] 인증키를 생성합니다. (키는 개인키와 공개키 2개가 생성됩니다.)
$ ssh-keygen -t rsa
<추가 사항>
$ ssh-keygen -t rsa -b 4096 -f authorized_keys
위 명령어는 rsa 알고리즘으로, 4096 길이의 키를 authorized_keys라는 파일이름으로 생성하라는 얘기입니다.
ssh-keygen 명령어의 옵션은 다음과 같습니다.
- -t: 키인증 알고리즘 종류 (ex. rsa, dsa, ecdsa 등)
- -b: 키의 길의(비트 수), 주로 2의 거듭제곱인 1024, 2048, 4096 등이 많이 쓰입니다.
- -f: 키파일의 이름
- -m: 키파일의 포맷, 'pem'이라는 형식이 Apache 및 기타 웹 서버 플랫폼에서 사용되고 있습니다.
- -P: 'passphrase'라고 private key를 보호하기 위한 추가적인 옵션입니다. 이 옵션을 비워두면 아래 이미지처럼 ssh-keygen 명령어 수행 시 passphrase를 입력하라고 하는데, 당장 필요한 것은 아니므로 Enter를 쳐서 넘어가도 무방합니다.
<다른 방법>
gndb@gndb-S5520UR:~$ mkdir ~/.ssh
gndb@gndb-S5520UR:~$ chmod 700 ~/.ssh
gndb@gndb-S5520UR:~$
gndb@gndb-S5520UR:~$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/gndb/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/gndb/.ssh/id_rsa
Your public key has been saved in /home/gndb/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:yY7G/VAXEnkeCegs9Ar3Q553nBaBzGwbdDjz+RcjIgM gndb@gndb-S5520UR
The key's randomart image is:
+---[RSA 4096]----+
| *+=.. |
| .E. %o= |
| . +...O.+ |
| . o.=+.o=o o |
| o *S.+.o+. o|
| ..+=...= . .|
| + +o o . |
| . o |
| . |
+----[SHA256]-----+
gndb@gndb-S5520UR:~$
[3] 인증키의 위치를 선택합니다. 그냥 엔터칩니다.
[4] 인증키에 사용할 암호를 입력합니다. 입력해도 되고 저는 그냥 엔터를 쳤습니다.
[5] 생성된 인증키는 .ssh 디렉토리에 생성되므로, 이동해서 한번 확인해봅니다.
- 생성된 id_rsa 는 개인키이므로, 다운로드 받아 로컬시스템에 보관합니다. : 다 같이 사용하는 시스템이라면, 개인키를 서버에 놔두고 필요할때마다 복사해주기도 하는데요. 아닌 경우에는 일반적으로 로컬시스템에 복제한 후에 서버에 있는 개인키는 삭제합니다.
- id_rsa.pub는 공개키인데요, 이 키를 이용해서 id_rsa와 맞춰보고 인증을 하는 방식입니다. 그런데, id_rsa.pub으로두면 안되고, 파일이름을 변경해 주여야 합니다. 파일명은 authorized_keys 로 변경해 주셔야 합니다. 저는 복사본을 만들어서 사용하고 있습니다.
cp id_rsa.pub authorized_keys
- 일단 저 같은 경우에는 개인키는 서버에 그냥 놔둡니다. - 서버사용을 다른사람들과 같이 하기 때문에 그렇습니다.
2단계..
로컬시스템에 ssh 인증키를 복사하고 puttygen으로 키를 변환해줍니다.
생성한 id_rsa 개인키를 로컬시스템으로 가져와야하는데요. 일반적으로 리눅스에서 리눅스로 옮긴다면, scp 라는 명령어를 이용하시면 되지만, 리눅스에서 윈도로 옮긴다면 뭐 딱히 그렇게 커맨드창에서 사용할 수 있는 방법들이 많지 않습니다. 그래서 제일 많이 사용하는 방법이 sftp 접속 방법을 이용하는 방법입니다. 로컬시스템(윈도)에서 ftp 클라이언트를 실행한 다음에 ssh 접속 주소를 ftp 접속 주소에 넣어주시고 ftp 사용 포트를 tcp 22 로 하시면 sftp 접속을 하게 됩니다. 그럼 탐색기에서 .ssh 디렉토리에 있는 id_rsa를 다운로드 받으시면 됩니다. - 그림은 생략합니다.
그럼 id_rsa 개인키를 로컬시스템에 다운로드 받았다고 생각하고, 해당키를 puttygen을 이용해 putty에서 사용할 수 있는 키 형태로 바꿔보겠습니다.
위 화면은 Puttygen 을 실행시킨 화면입니다.
해당 화면에서 Load 버튼을 클릭해서 다운로드 받은 id_rsa 개인키를 선택합합니다.
Load 한 개인키를 Putty 에서 사용할 수 있는 형태로 변환해야한다는 군요.
확인 버튼을 클릭한 다음, Save private Key 버튼을 클릭합니다.
그러면, 암호가 없는데 괜찮겠어? 라고 물어봅니다. 뭐 괜찮습니다. 저는..
저는 개인키를 변환한 후에 putty 폴더에 넣어둡니다. 다른데 넣으면 좀 불편하기도 하고.. 뭐라 그럴까.. 분실이 많이 되더라구요..
3단계..
putty 설정을 하고 저장해 줍니다.
putty 설정을 하기전에 원격시스템을 putty 접속목록에 등록하는 일부터 해야합니다. 그 다음예 계정을 입력하고, 그 다음에 인증키를 선택해야하고, 마지막으로 접속목록에 등록한 원격시스템의 설정을 저장해주어야합니다. - 인증키 선택후에 덜컥 Open 버튼을 클릭하시면 귀찮은 설정작업을 다시해야하니 주의가 필요합니다.
putty에 설정을 저장하는 방법은 간단합니다.
원격시스템의 ip를 입력하고 식별할 원격시스템의 이름일 입력한 후에 Save 버튼을 클릭하시면 됩니다.
그 위에 dev 라고 정의한 서버에 접속한 계정정보를 입력합니다.
Connection - Data 메뉴를 클릭하시면 Login details 에 있습니다..
그 후에 Connection - SSH - Auth 로 이동한 후에
Private key file for authentication 에서 아까 puttygen 을 이용해서
변환해 놓은 key 파일을 선택해 줍니다.
그렇게 해서 키파일을 선택하면 다음과 같은 모양이 됩니다.
이때 무심고.. Open 을 클릭하시는 분들이 많더라구요..
절대 그러시면 안됩니다..
Session 메뉴를 눌러서 설정을 저장해 주어야 합니다.
nbsp;
저기 보이는 Save 버튼을 한번 눌러줍니다.
그러면 이제 설정을 다 마쳤네요.. 한번 사용해 볼까요..?
이제 사용해보아요~
putty 를 실행한 후에 원격시스템 목록에서 Dev를 마우스로 꼭!꼭! 더블클릭하시면 이렇게 터미널창이 열립니다.
맨 위에서 두번째줄에 Authentication with public key 라고 하는 메세지가 보이시죠?
자.. 이제 원격시스템에 접속할때마다 2초에서 최대 2~3분까지 제가 절약해 드린겁니다.. (ㅡㅡ)