본문 바로가기
카테고리 없음

ssh-keygen에 대해 알아보자

by 내기록 2024. 4. 25.
반응형

목차 LIST

     

     

     

    개요

    업무하면서 종종 ssh-keygen을 사용할 일이 있었는데, 정확히 이해하지 않고 그냥 사용하다가 한 번은 정리해야 할 것 같아서 글 작성합니다.

     

    서버 간에 SSH 통신을 위해 SSH 키 기반 인증을 사용합니다. 이 방법을 사용하면 비밀번호를 사용하는 것보다 안전하며, 자동화된 스크립트를 실행할 때 유용합니다.

     

    SSH 키 생성 및 설정

    1. 키 생성 : 로컬 서버에서 SSH 키를 생성합니다. 일반적으로 RSA 키를 사용하지만, 최근에는 보안성이 강화된 Ed25519 키 사용을 권장합니다. 공개 키와 비밀 키로 구성된 SSH 키 쌍이 생성됩니다.

    # RSA
    ssh-keygen -t rsa -b 4096
    
    # Ed25519
    ssh-keygen -t ed25519

     

    2. 공개 키 복사 : 위에서 생성된 공개 키를 원격 서버의 ~/.ssh/authorized_keys 파일에 추가합니다.

    파일 포맷은 .pub 으로 로컬에서 생성한 공개 키 파일입니다.

     

    3. (선택) SSH 구성 파일 설정 : SSH 클라이언트 구성 파일(~/.ssh/config)에 원격 서버에 대한 세부 정보를 추가하여 SSH 접속을 간편하게 할 수 있도록 합니다.

    Host myserver
    HostName remote-server-ip
    IdentityFile ~/.ssh/mykey # 비밀 키 파일의 경로

     

    정리하면, A에서 B서버에 접속하려고 할 때 비밀키는 접속을 시도하는 A서버에 안전하게 보관되어야 합니다.

    그리고 접속을 받는 B서버에 공개키를 .ssh/authorized_keys 경로에 추가합니다. (공개키의 파일명을 authorized_keys로 설정)

     

    상세 과정을 살펴보면,

    접속 과정에서 접속을 시도하는 측(A 서버)의 SSH 클라이언트는 비밀 키를 사용하여 인증 요청을 암호화하고, 이 요청을 접속 대상(B 서버)에 보냅니다. 접속 대상 서버는 저장된 공개 키로 요청을 복호화하여 인증을 수행합니다. 이 복호화 과정이 성공적으로 이루어지면 비밀 키를 가진 사용자만이 공개 키가 설치된 서버에 접근할 수 있음을 의미하므로 접속이 허용됩니다.

     

    결과

    아래와 같이 서버 간에 안전하게 SSH 통신이 가능합니다.

    ssh username@remote-server-ip "some-command"

     

    만약, 선택이었던 3번을 진행했다면 아래처럼 더 간편하게 통신이 가능합니다.

    ssh myserver "some-command"

     

    반응형

    댓글