본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/시스템

ssh 공개키 접속하기(ppk, pem 키 생성하여 접속하기)

by 미노드 2023. 4. 26.

공개키를 이용한 SSH 접속 방법을 설명하기 앞서 기본적으로 알아야할 부분

1. 인증키 만들기

- 인증키 만들기에 사용되는 ssh-keygen 명령어는 ssh-keygen을 직접 설치하거나, git이 설치되어 있으면 git-bash에서 이용할 수 있다.
https://git-scm.com/downloads

 

Git - Downloads

Downloads macOS Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but there are several third-party tools for users looking for a platform-specific exp

git-scm.com

인증키 이름을 id_rsa로 작성할때 화면은 다음과 같다.

ssh 에서 키 쌍을 생성하면 공개키(id_rsa.pub) 에는 마지막에 이메일 주소가 들어간다.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDg9Y5QK
....
lesstif@ubuntu

ssh-keygen -c -f /home/lesstif/.ssh/server/id_rsa -C "lesstif@gmail.com"

이 부분은 공개키를 식별하기 위한 comment 인데 기본적으로 계정@시스템 정보가 들어간다.
만약 이메일 정보를 수정하려면 다음과 같이 -c 명령어로 변경할 이메일을 지정해 주면 된다.

2. SSH 클라이언트 (사용자)

  • 클라이언트 키 쌍
    • ssh-keygen 명령어를 이용하여 공개키 및 개인키 생성하게 되면 기본적으로 아래 경로에 생성됨
      • ~/.ssh/id_rsa (개인키)
      • ~/.ssh/id_ras.pub (공개키)
    • 서버의 authorized_keys 파일에 공개키를 등록해야 함.
  • ~/.ssh/known_hosts 파일
    • 사용자가 처음 서버에 로그인 할 때, 연결을 진행하면 서버의 공개키가 해당 파일에 기록됨

3. SSH 서버 (호스트)

  • 서버 키 쌍
    • 서버에서 openssh-server를 설치하는 과정에 자동 생성됨.
      • /etc/ssh/ssh_host_rsa_key (개인키)
      • /etc/ssh/ssh_host_rsa_key.pub (공개키)
    • 클라이언트가 서버에 처음 연결 시도 시 해당 공개키를 클라이언트에게 제공. 클라이언트는 known_hosts 파일에 서버의 공개키를 저장
  • ~/.ssh/authorized_keys 파일
    • 해당 파일에 로그인할 클라이언트의 공개키가 기록되어있어야 함

4. SSH 공개키 접속

4.1 클라이언트 키 쌍 생성

  • 아래 명령어를 이용하여 RSA 알고리즘 키 쌍 생성
  • $ ssh-keygen -t rsa
  • 별 다른 설정이 필요하지 않으므로, 엔터를 계속 누르면 현재 로그인되어있는 사용자의 홈디렉토리 .ssh 폴더 밑에 키 쌍이 생성 됨

4.2 공개키 전송

  • 리눅스계열에서는 공개키를 복사하는 명령어 ssh-copy-id 를 사용
    • $ ssh-copy-id USER@remote-host
    • 예) $ ssh-copy-id lee@192.168.0.15
    • -i 옵션을 사용하지 않으면, 현재 로그인 되어있는 계정의 .ssh/id_rsa.pub 파일을 전송 (기본값)
    • 공개키 파일이 다른 경로에 있다면 -i 옵션을 이용하여 별도의 경로를 지정해야 함
      • $ ssh-copy-id -i /home/test/key/key.pub lee@192.168.0.15
  • 윈도우에서는 ssh cat을 이용한 명령어 조합을 이용
    • type $env:공개키경로 | ssh USER@remote-host "cat >> .ssh/authorized_keys"
    • 예) type $env:C:\Users\LDB.ssh\id_rsa.pub | ssh lee@192.168.0.15 "cat >> .ssh/authorized_keys"

4.3 로그인

  • ssh USER@remote-host
  • 공개키 방식으로 SSH 접속 시 -i 옵션 생략 시, 아래 경로에 있는 개인키로 접속을 시도
    • 윈도우: USER_NAME\.ssh\id_rsa
    • 리눅스: USER_NAME/.ssh/id_rsa
  • 만약 개인키의 위치가 다르거나 AWS의 pem 파일인 경우 -i 옵션 이용
    • $ssh -i KEY_PATH\key.pem USER@remote-host
    • $ssh -i KEY_PATH\id_rsa USER@remote-host

4.4 키 파일 권한 문제 (Permissions are too open)

개인키를 windows <-> linux간 FTP로 복사하다가 발생하는 권한 문제다.
ssh에 사용되는 각 종 파일들 (설정파일,공개키,개인키 등)은 보안적인 이슈로 인해 아래 사진과 같이 권한이 정해져있다.

위 사진을 보면 Mandatory Permission 이라고 정해진 권한이 있는데, 개인키 파일과 설정파일은 꼭 600으로 설정이 되어있어야 한다는 뜻이다. (600은 소유자만 읽고 쓸 수 있는 권한)
만약 600이 아니라면 chmod 명령어를 통해 권한을 수정하면 된다.

만약 윈도우에서 발생했다면 해당 파일에 대한 상속 권한을 비활성화 시키고, 현재 윈도우 계정만 개인키 파일에 접근할 수 있도록 설정을 변경해주면 된다.

 

'IT기술 > 시스템' 카테고리의 다른 글

Tomcat, JBoss 차이  (0) 2023.07.04
pem to ppk 변경해서 사용하기  (0) 2023.04.26
비대칭키 암호 - RSA (공개키 암호시스템)  (0) 2023.04.26
디스크에서 포멧이란?  (0) 2022.11.27
서버 전원 시퀀스  (0) 2022.11.27