■ 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를 치면 패스워드 없이 접속하게 됩니다.
'Operating System' 카테고리의 다른 글
캐시 메모리 교체 알고리즘의 종류 (0) | 2022.10.23 |
---|---|
[LINUX] LVM 생성 및 관리 (0) | 2022.10.06 |
댓글