본문 바로가기
CentOS and Redhat Linux/Linux 설정 및 기능

(CentOS7) ssh-keygen 설정 (ssh 접속 패스워드 X)

by 미니몬 2024. 2. 6.

목차

    728x90
    반응형

    Summary

    시스템에 접근하기 위해서는 여러 보안 절차를 거치는데 이 때 가장 흔하게 사용되는 확인 절차가 아이디 패스워드를 입력하는 것일 텐데요. 하지만 종종 어떤 동작을 위해서 혹은 편의를 위해서 패스워드 입력 없이 로그인 해야할 때 사용할 수 있는 기능 중 하나인 'ssh-keygen' 설정입니다. 어떻게 설정하고 사용 방법은 어찌 되는지 바로 알아보겠습니다.

     

     

    ssh-keygen 이란?

    ssh-keygen은 SSH(Secure Shell) 프로토콜을 사용하여 원격 시스템에 접속할 때 사용하는 키 기반 인증 방식을 생성, 관리하는 도구입니다. 이 툴을 사용하여 공개 키개인 키라는 두 가지 키를 생성할 수 있으며, 이를 통해 사용자는 로그인 시 패스워드를 입력하지 않고도 안전하게 원격 시스템에 접속할 수 있습니다. CentOS 7을 포함한 대부분의 리눅스 배포판에서 사용 가능합니다.

     

     

    생성 방법

    ADMIN 서버는 USER 서버로 패스워드 없이 접근하고 싶다!!

    1) 키 생성

    사용자는 로컬 시스템에서 ssh-keygen 명령어를 실행하여 공개/개인 키 쌍을 생성합니다.

    기본적으로, 이 키들은 사용자의 ~/.ssh 디렉토리에 저장됩니다.

    (**id_rsa**는 개인 키, **id_rsa.pub**는 공개 키).

    [admin@ADMIN .ssh]$ ssh-keygen -t rsa -b 2048 -C "mcc96@example.com"
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/admin/.ssh/id_rsa): 
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /home/admin/.ssh/id_rsa.
    Your public key has been saved in /home/admin/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:i1DUclr/2EyPDt5gCvh7QRttkOg6BUFxGbgtc5CngiU mcc96@example.com
    The key's randomart image is:
    +---[RSA 2048]----+
    |   .+=+= .       |
    |E . =o= *        |
    | +   O.= +       |
    |. . =.* o + .    |
    |   ..B .S+ * o   |
    |    +...o.= = .  |
    |     o...= =     |
    |      . o . o    |
    |      .o         |
    +----[SHA256]-----+
    
    
    [admin@ADMIN ~]$ cd .ssh
    [admin@ADMIN .ssh]$ ls -al
    합계 8
    drwx------. 2 admin admin   38  2월  6 18:24 .
    drwx------. 3 admin admin   95  2월  6 18:20 ..
    -rw-------. 1 admin admin 1675  2월  6 18:24 id_rsa
    -rw-r--r--. 1 admin admin  399  2월  6 18:24 id_rsa.pub

     

    ssh-keygen 명령어 실행 시 나타나는 "Enter passphrase (empty for no passphrase):""Enter same passphrase again:" 메시지는 사용자에게 개인 키를 보호하기 위한 패스프레이즈(passphrase)를 입력하라고 요청하는 부분입니다. 패스프레이즈는 개인 키 파일을 암호화하는 데 사용되며, 키에 접근할 때마다 이를 입력해야 합니다.

     

    패스프레이즈는 두 가지 주요 목적을 가집니다:

    1. 보안 강화: 만약 누군가가 파일 시스템에 접근하여 개인 키 파일을 획득하더라도, 패스프레이즈 없이는 키를 사용할 수 없습니다. 이는 키의 무단 사용을 방지하는 추가적인 보안층을 제공합니다.
    2. 암호화: 패스프레이즈는 개인 키 파일을 암호화하는 데 사용되어, 키 파일이 저장되는 동안에도 보안을 유지할 수 있게 합니다.

    패스프레이즈를 설정하지 않으려면, 이 단계에서 아무 것도 입력하지 않고 엔터키를 두 번 누르세요. 하지만, 보안을 위해서는 강력한 패스프레이즈를 설정하는 것이 권장됩니다. 설정한 패스프레이즈는 분실하지 않도록 주의해야 하며, SSH를 사용하여 원격 시스템에 접속할 때마다 입력해야 합니다.

     

    2) 공개 키 복사

    생성된 공개 키(id_rsa.pub)를 원격 시스템의 사용자 계정에 복사해야 합니다.

    이를 위해 ssh-copy-id 명령어를 사용할 수 있습니다.

    공개 키는 원격 시스템의 ~/.ssh/authorized_keys 파일에 추가됩니다.

    [admin@ADMIN .ssh]$ ssh-copy-id -i id_rsa user@USER
    /bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
    The authenticity of host 'user (192.168.111.100)' can't be established.
    ECDSA key fingerprint is SHA256:tWSHi62gg8OQ1UzTouuZJardALKYP9Z7mvDry+bHgKo.
    ECDSA key fingerprint is MD5:7d:0b:f6:bd:af:e7:7b:ad:8e:09:c1:c0:e6:69:67:39.
    Are you sure you want to continue connecting (yes/no)? yes
    /bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    user@user's password: <<< 패스워드 입력
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'user@USER'"
    and check to make sure that only the key(s) you wanted were added.
    
    
    [user@USER .ssh]$ ls -al
    합계 4
    drwx------. 2 user user  29  2월  6 18:25 .
    drwx------. 3 user user  95  2월  6 18:15 ..
    -rw-------. 1 user user 399  2월  6 18:25 authorized_keys

     

    3) 비밀번호 없는 로그인

    이제부터 사용자는 개인 키를 사용하여 원격 시스템에 비밀번호 없이 로그인할 수 있습니다.

    SSH 클라이언트는 자동으로 사용자의 개인 키를 사용하여 인증을 시도합니다.

    [admin@ADMIN .ssh]$ ssh user@USER
    Last login: Tue Feb  6 18:21:39 2024 from admin
    [user@USER ~]$

     

     

    원복 방법

    1) ADMIN 서버에서 개인 키, 공개 키 삭제

    rm id_rsa
    rm id_rsa.pub

     

    2) USER 서버에서 ~/.ssh/authorized_keys 파일을 열어서 ADMIN 서버 ssh-rsa 키 삭제

    [user@My_HOST .ssh]$ ls -al
    합계 4
    drwx------. 2 user user  29  2월  6 18:25 .
    drwx------. 3 user user  95  2월  6 18:15 ..
    -rw-------. 1 user user 399  2월  6 18:25 authorized_keys
    [user@My_HOST .ssh]$ cat authorized_keys 
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDG/U0ETj2SBARrO58Xs0BnTGkYlW3eIGKS9UPn2TJKuEd7uh+a4q5POh0PDnbJFYfgb6ryiVpFlUnxYKlQ76zjpWTjH+HU+tk6fz/88vy6rdc7U1roy+3XiQN1H9J3WP9Bwo1i4Xw0LCqV6OD9ToPpVPX/0bUXV+UwHSSg+cXhGRLJVK1IyfNTLM+pV3yfjBVJTcWgb/UajmLKVkojFquwqvDCA8FtSWPuolGC+SQYIbHJCKa2nkDaOgosul6KIUGAWxzOgWbkf0MTTzvM+8A33SNw28PSQUWscnZNdiaNfLubmTEi75MTCu2csn9gJeFb073Aw+4YwQyNoaGVhi5D mcc96@example.com
    [user@My_HOST .ssh]$ sed -i '/mcc96@example/d' ~/.ssh/authorized_keys

     

    만약 여러 서버의 ssh_keygen 설정을 해놓았다면 파일을 백업 받아 두는 것을 추천드립니다.

    sed -i.bak '/mcc96@example/d' ~/.ssh/authorized_keys

     

     

    OS별 ssh-keygen 제공 여부

    ssh-keygen은 OpenSSH 패키지의 일부로, 거의 모든 UNIX 계열 운영 체제에서 사용할 수 있습니다.

    이에 해당하는 운영 체제는 다음과 같습니다:

    • 모든 리눅스 배포판 (CentOS, Ubuntu, Debian, Fedora 등)
    • macOS
    • 대부분의 UNIX 시스템 (FreeBSD, OpenBSD, Solaris 등)

    Windows에서는 Cygwin이나 Windows Subsystem for Linux (WSL), 또는 최근 버전의 Windows 10에서는 내장된 OpenSSH 클라이언트를 통해 ssh-keygen 기능을 사용할 수 있습니다.

     

     

    그 외 옵션

    ssh-keygen 명령어에서 -t 옵션은 키 유형(type)을 지정하는 데 사용됩니다.

    rsa는 이 옵션에 주로 사용되는 키 알고리즘 중 하나입니다.

    RSA는 공개 키 암호화 알고리즘으로, 안전한 원격 접속을 위한 키 쌍(공개 키와 개인 키)을 생성하는 데 널리 사용됩니다.

     

    t 옵션

    • t 옵션 뒤에는 사용하고자 하는 키의 알고리즘을 지정합니다. 예를 들어, **t rsa**는 RSA 알고리즘을 사용하여 키를 생성하라는 의미입니다.

     

    주요 키 알고리즘

    • RSA: 현재 가장 널리 사용되는 공개 키 암호화 알고리즘입니다. 안전한 통신을 위해 충분히 큰 키 크기(예: 2048 또는 4096 비트)를 사용하는 것이 권장됩니다.
    • DSA (Digital Signature Algorithm): DSA는 과거에 사용되었으나, 현재는 RSA나 다른 알고리즘에 비해 덜 선호되거나 사용이 제한될 수 있습니다.
    • ECDSA (Elliptic Curve Digital Signature Algorithm): ECDSA는 타원 곡선 암호화를 기반으로 하며, RSA에 비해 더 작은 키 크기에서도 동등한 수준의 보안을 제공할 수 있습니다.
    • Ed25519: Ed25519는 최신 타원 곡선 암호화 알고리즘 중 하나로, 높은 성능과 보안성을 제공합니다. 작은 키 크기에도 불구하고 높은 보안성을 유지할 수 있는 것이 특징입니다.

     

    기타 자주 사용되는 ssh-keygen 옵션

    • b: 키의 비트 수를 지정합니다. 예를 들어, RSA 키의 경우 **b 2048**은 2048비트 키를 생성하라는 의미입니다.
    • C: 키에 대한 주석을 추가합니다. 이 주석은 키를 식별하는 데 도움이 될 수 있습니다.
    • f: 생성된 키 파일의 이름을 지정합니다. 기본적으로 키는 ~/.ssh 디렉토리에 **id_rsa**와 **id_rsa.pub**으로 저장됩니다.
    • N: 새 키에 대한 패스프레이즈를 설정합니다. 패스프레이즈는 키를 추가적으로 보호하는 데 사용되며, 키 사용 시 마다 입력해야 할 수도 있습니다.

     

    예를 들어, 높은 보안 수준의 RSA 키를 생성하고자 할 때는 다음과 같이 명령어를 사용할 수 있습니다:

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

    이 명령은 4096비트 RSA 키를 생성하고, 사용자의 이메일 주소를 주석으로 추가합니다.

    728x90
    반응형