본문 바로가기
Operating System

SSH 패스워드 없이 로그인하기

by 이미존재 2022. 10. 21.
반응형

■ SSH 패스워드없이 로그인하기(공개키 접속)


 ▶ ssh로 원격지에 접속시 패스워드 없이 접속하는 방법입니다.
 ▶ 리눅스 서버외에 윈도우10 이후 윈도우도 ssh명령이 가능합니다.
 ▶ id/password로 접속과 공개키를 이용한 접속 방법중 어느것이 보안에 좋을지 개인적으로는 판단이 안되네요
     - 키를 이용해 접속시 패스워드 접속을 막아놓으면 키 분실시 원격접속이 불가합니다. 클라우드 이용 시 아주 난감하네요

 


1. .ssh 디렉터리 만들기
 - 계정의 홈디렉토리 이동후 .ssh 디렉터리 생성

postgres@berasix-2:~$ mkdir .ssh
postgres@berasix-2:~$ chmod 700 .ssh/

 


2. Source 서버에서 ssh key를 만듭니다.(디폴트 값으로 엔터 3회)

postgres@berasix-2:~/.ssh$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/postgresql/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
.............

 


3. 2번 작업이 끝나면 ~/.ssh에 id_dsa와 id_dsa.pub 파일이 생성됩니다.
   비밀키 : id_rsa , 공개키 : id_rsa.pub

   postgres@berasix-2:~/.ssh$ ls -l
total 8
-rw------- 1 postgres postgres 2602 10월 21 15:46 id_rsa
-rw-r--r-- 1 postgres postgres  572 10월 21 15:46 id_rsa.pub

 


4. ssh-copy-id 명령으로 공개키(id_rsa.pub)를 원격지 서버에 복사합니다.
 1) ssh-coy-id 원격지id@원격지IP

postgres@berasix-2:~/.ssh$ ssh-copy-id postgres@192.168.48.129
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/var/lib/postgresql/.ssh/id_rsa.pub"
The authenticity of host '192.168.48.129 (192.168.48.129)' can't be established.
ED25519 key fingerprint is SHA256:47nAOGGN+j4NuUYYVOCq21hx4nNOBOVRHWgUMVwpF34.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s)
..........

※ 참고 : ssh로 해당 호스트 최초 접속 시 fingerprint 관련 이슈로 신뢰할 수 있냐 마냐를 물어보는데 yes를 입력하면 됩니다.
hash 알고리즘의 얘기로 자세한 사항은 별도 포스팅을 참고하시기 바랍니다.
원격지 계정이 패스워드가 있는 경우 패스워드를 넣어줘야 됩니다.


 2) 정상 복사가 완료되고 나면 .ssh/known_hosts 파일이 생성되고 원격지 서버의 정보(RSA Key)가 기록됩니다.

 


5. ssh 명령으로 패스워드 없이 접속 가능 한지 확인합니다.
   ssh  원격지id@원격지IP

 


6. 원격지 서버에 ~/.ssh 디렉토리 생성 및 ~/.ssh/authorized_keys 파일이 생성되었음을  확인할수 있습니다.

   ~/.ssh 디렉터리는 ssh로 타 서버에 접속시 이미 생성 될 수 있습니다.
   ~/.ssh 디렉토리는 0700, authorized_keys 파일은 0600 퍼미션을 가지며, 이 권한이 높거나 낮으면 패스워드 없이(Public Key 이용) 접속이 안될 수 있습니다.


7. 패스워드 없이 접속 기능이 잘 안 될 경우


 1) 원격지 서버의 .ssh 디렉터리와 authorized_keys 파일의 권한을 확인하고
     잘 되지 않을경우 .ssh 파일을 삭제하여 초기화합니다.
 2) 클라이언트 서버의 ~/.ssh/know_hosts에 등록된 정보를 초기화합니다.
     ssh-keygen -R 원격 서버 IP
 3) 1~4를 다시 수행해 봅니다.


8. 윈도우 클라이언트
 
 - 윈도우10부터는 ssh를 사용 가능하게 되었습니다.
 - 이 방법은 Visual StudioCode에서 ssh 접속 시에도 활용 가능합니다.(별도 포트팅 참조)
 1) 윈도우 powershell에서 계정의 홈디렉토리 이동 후(C:\Users\User-id\) .ssh 디렉터리를 생성합니다.
 2) ssh-keygen 입력하고 엔터( 리눅스 1번 항목과 유사함)를 칩니다(즉 3번 엔터만 치면 됩니다.)
 3) C:\Users\계정\.ssh\에 비밀키, 공개키 생성됩니다.
     비밀키 : id_rsa , 공개키 : id_rsa.pub
 4) 원격 서버 리눅스에 접속하고 접속하고자 하는 계정 홈디렉토리 ~계정/.ssh/authorized_keys 파일에 내 PC의 공개키(id_rsa.pub) 내용을 추가합니다.
   : 윈도우에서는 ssh-copy-id 명령을 사용할 수 없어 수동으로 복사해야 합니다.
   : 키 접속은 같은 폴더에 있는 비밀키(id_rsa)를 이용하여 접속하게 됩니다.
※ 참고 : putty로 접속할 경우는 puttyGen을 이용하여 private key(비밀키)를 import 하여 ppk파일을 생성합니다.
 5) 원격지에 접속할 id@ip를 치면 패스워드 없이 접속하게 됩니다.

728x90

'Operating System' 카테고리의 다른 글

캐시 메모리 교체 알고리즘의 종류  (0) 2022.10.23
[LINUX] LVM 생성 및 관리  (0) 2022.10.06

댓글