TobeSteady

[모던 리눅스 관리] 3.4 패스워드 없이 ssh 접근하기. 본문

OS/Linux

[모던 리눅스 관리] 3.4 패스워드 없이 ssh 접근하기.

NKUT 2023. 2. 2. 23:49

패스워드 없이 ssh 접근하기.

1. 특별한 키 쌍을 생성한 다음, 로그인하려는 원격 호스트로 공개 키를 복사화는 방법

  • 클라이언트 컴퓨터에서 `ssh-keygen`프로그램으로 공개 키와 개인 키 쌍을 생성함.
    • RSA 암호 알고리즘에 기반을 둔 키 쌍 생성됨.
    • 공개 키는 생성하고 나면 호스트의 .sshauthorized_keys 파일로 복사 가능함.
      • 공개 키가 있어야 클라이언트에서 개인 키로 서명한 암호 메시지가 진짜인지 호스트에서 실행되는 openssh가 검증할 수 있기 때문.
    • 메시지가 검증되면 ssh 세션이 시작됨.
ubuntu@ubuntu:~$ ssh-keygen
ubuntu@ubuntu:~$ ls -l .ssh
total 16
-rw-rw-r-- 1 ubuntu ubuntu  567 Nov 13 14:55 authorized_keys
-rw------- 1 ubuntu ubuntu 2602 Nov 13 14:55 id_rsa
-rw-r--r-- 1 ubuntu ubuntu  567 Nov 13 14:55 id_rsa.pub
-rw-r--r-- 1 ubuntu ubuntu  222 Nov 13 15:44 known_hosts

 

2. 원격 호스트에서 ssh셀 세션을 열지 않고 명령 수행하는 방법

# 10.0.3.142서버에 .ssh 디렉토리 생성.
ubuntu@ubuntu:~$ ssh ubuntu@10.0.3.142 mkdir -p .ssh
ubuntu@10.0.3.142's passhword:

# 공개키 10.0.3.142서버에 전송.
ubuntu@ubuntu:~$ cat .ssh/id_rsa.pub \
| ssh ubuntu@10.0.3.142 \
"cat >> .ssh/authorized_keys"
ubuntu@10.0.3.142's passhword:

 

  • cat으로 id_rsa.pub 파일에 있는 텍스트를 모두 읽어 이를 메모리에 저장한다.
    • 그리고 원격 호스트에 SSH로 로그인해서 해당 텍스트를 파이프(|)*로 전달한다.
    • 마지막으로 원격 호스트에서 텍스트를 다시 읽고 이를 authorized_keys라는 파일에 추가한다.
    • 이때 해당 파일이 없으면 추가도구(>>)는 이 파일을 생성하고, 파일이 있으면 파일에 텍스트를 추가한다.
      • 파이프(|)*를 이용해 명령 간 데이터를 전달가능함.
  • 해당 작업이 완료되면 기존 ssh 명령을 실행할 때 패스워드를 입력하지 않아도 됨.

 

다중 암호화 키 이용하기.

AWS EC2 서비스

ssh -i .ssh/mykey.pem ubuntu@10.0.3.142
  • .pem : aws ec2 인스턴스처럼 다양한 vm에 접근할 때 사용되는 형식.
    • 키가 저장되었음을 의미함.