23장. 네트워크 보안


23.1. OpenSSH로 두 시스템 간의 보안 통신 사용

SSH(Secure Shell)는 클라이언트-서버 아키텍처를 사용하여 두 시스템 간에 보안 통신을 제공하고 사용자가 서버 호스트 시스템에 원격으로 로그인할 수 있는 프로토콜입니다. FTP 또는 Telnet과 같은 다른 원격 통신 프로토콜과 달리 SSH는 로그인 세션을 암호화하여 침입자가 연결에서 암호화되지 않은 암호를 수집하지 못하도록 합니다.

23.1.1. SSH 키 쌍 생성

로컬 시스템에서 SSH 키 쌍을 생성하고 생성된 공개 키를 OpenSSH 서버에 복사하여 암호를 입력하지 않고 OpenSSH 서버에 로그인할 수 있습니다. 키를 생성하려는 각 사용자는 이 절차를 실행해야 합니다.

시스템을 다시 설치한 후 이전에 생성된 키 쌍을 유지하려면 새 키를 만들기 전에 ~/.ssh/ 디렉터리를 백업하십시오. 다시 설치한 후 홈 디렉터리로 복사합니다. root를 포함하여 시스템의 모든 사용자에 대해 이 작업을 수행할 수 있습니다.

사전 요구 사항

  • 키를 사용하여 OpenSSH 서버에 연결하려는 사용자로 로그인했습니다.
  • OpenSSH 서버는 키 기반 인증을 허용하도록 구성됩니다.

프로세스

  1. ECDSA 키 쌍을 생성합니다.

    $ ssh-keygen -t ecdsa
    Generating public/private ecdsa key pair.
    Enter file in which to save the key (/home/<username>/.ssh/id_ecdsa):
    Enter passphrase (empty for no passphrase): <password>
    Enter same passphrase again: <password>
    Your identification has been saved in /home/<username>/.ssh/id_ecdsa.
    Your public key has been saved in /home/<username>/.ssh/id_ecdsa.pub.
    The key fingerprint is:
    SHA256:Q/x+qms4j7PCQ0qFd09iZEFHA+SqwBKRNaU72oZfaCI <username>@<localhost.example.com>
    The key's randomart image is:
    +---[ECDSA 256]---+
    |.oo..o=++        |
    |.. o .oo .       |
    |. .. o. o        |
    |....o.+...       |
    |o.oo.o +S .      |
    |.=.+.   .o       |
    |E.*+.  .  . .    |
    |.=..+ +..  o     |
    |  .  oo*+o.      |
    +----[SHA256]-----+
    Copy to Clipboard Toggle word wrap

    ssh-keygen - t ed25519 명령을 입력하여 매개 변수 또는 Ed25519 키 쌍 없이 ssh-keygen 명령을 사용하여 RSA 키 쌍을 생성할 수도 있습니다. Ed25519 알고리즘은 FIPS-140과 호환되지 않으며 OpenSSH는 FIPS 모드에서 Ed25519 키와 함께 작동하지 않습니다.

  2. 공개 키를 원격 머신에 복사합니다.

    $ ssh-copy-id <username>@<ssh-server-example.com>
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    <username>@<ssh-server-example.com>'s password:
    …
    Number of key(s) added: 1
    
    Now try logging into the machine, with: "ssh '<username>@<ssh-server-example.com>'" and check to make sure that only the key(s) you wanted were added.
    Copy to Clipboard Toggle word wrap

    &lt ;username> @ <ssh-server-example.com >을 사용자 인증 정보로 바꿉니다.

    세션에서 ssh-agent 프로그램을 사용하지 않는 경우 이전 명령은 가장 최근에 수정된 ~/.ssh/id*.pub 공개 키를 아직 설치하지 않은 경우 복사합니다. 다른 공개 키 파일을 지정하거나 ssh-agent로 메모리에 캐시된 키보다 파일의 키 우선 순위를 지정하려면 ssh-copy-id 명령을 -i 옵션과 함께 사용합니다.

검증

  • 키 파일을 사용하여 OpenSSH 서버에 로그인합니다.

    $ ssh -o PreferredAuthentications=publickey <username>@<ssh-server-example.com>
    Copy to Clipboard Toggle word wrap

23.1.2. OpenSSH 서버에서 유일한 방법으로 키 기반 인증 설정

시스템 보안을 강화하려면 OpenSSH 서버에서 암호 인증을 비활성화하여 키 기반 인증을 시행합니다.

사전 요구 사항

  • openssh-server 패키지가 설치되어 있어야 합니다.
  • sshd 데몬이 서버에서 실행되고 있어야 합니다.
  • 키를 사용하여 OpenSSH 서버에 이미 연결할 수 있습니다.

    자세한 내용은 SSH 키 쌍 생성 섹션을 참조하십시오.

프로세스

  1. 텍스트 편집기에서 /etc/ssh/sshd_config 구성을 엽니다. 예를 들면 다음과 같습니다.

    # vi /etc/ssh/sshd_config
    Copy to Clipboard Toggle word wrap
  2. PasswordAuthentication 옵션을 no로 변경합니다.

    PasswordAuthentication no
    Copy to Clipboard Toggle word wrap
  3. 새 기본 설치 이외의 시스템에서 PubkeyAuthentication 매개변수가 설정되지 않았거나 yes 로 설정되어 있는지 확인합니다.
  4. ChallengeResponseAuthentication 지시문을 no 로 설정합니다.

    해당 항목은 구성 파일에서 주석 처리되며 기본값은 yes 입니다.

  5. NFS로 마운트된 홈 디렉토리에서 키 기반 인증을 사용하려면 use_nfs_home_dirs SELinux 부울을 활성화합니다.

    # setsebool -P use_nfs_home_dirs 1
    Copy to Clipboard Toggle word wrap
  6. 콘솔 또는 대역 외 액세스를 사용하지 않고 원격으로 연결하는 경우 암호 인증을 비활성화하기 전에 키 기반 로그인 프로세스를 테스트합니다.
  7. sshd 데몬을 다시 로드하여 변경 사항을 적용합니다.

    # systemctl reload sshd
    Copy to Clipboard Toggle word wrap

23.1.3. ssh-agent를 사용하여 SSH 인증 정보 캐싱

SSH 연결을 시작할 때마다 암호를 입력하지 않으려면 ssh-agent 유틸리티를 사용하여 로그인 세션의 개인 SSH 키를 캐시할 수 있습니다. 에이전트가 실행 중이고 키가 잠금 해제되면 키의 암호를 다시 입력하지 않고도 이러한 키를 사용하여 SSH 서버에 로그인할 수 있습니다. 개인 키와 암호는 안전하게 유지됩니다.

사전 요구 사항

  • SSH 데몬이 실행되고 네트워크를 통해 연결할 수 있는 원격 호스트가 있습니다.
  • IP 주소 또는 호스트 이름 및 인증 정보를 통해 원격 호스트에 로그인합니다.
  • 암호를 사용하여 SSH 키 쌍을 생성하고 공개 키를 원격 시스템으로 전송했습니다.

    자세한 내용은 SSH 키 쌍 생성 섹션을 참조하십시오.

프로세스

  1. 세션에서 ssh-agent 를 자동으로 시작하는 명령을 ~/.bashrc 파일에 추가합니다.

    1. 선택한 텍스트 편집기에서 ~/.bashrc 를 엽니다. 예를 들면 다음과 같습니다.

      $ vi ~/.bashrc
      Copy to Clipboard Toggle word wrap
    2. 다음 줄을 파일에 추가하세요.

      eval $(ssh-agent)
      Copy to Clipboard Toggle word wrap
    3. 변경 사항을 저장하고 편집기를 종료합니다.
  2. ~/.ssh/config 파일에 다음 행을 추가합니다.

    AddKeysToAgent yes
    Copy to Clipboard Toggle word wrap

    이 옵션과 ssh-agent 가 세션에서 시작되면 에이전트는 호스트에 처음 연결할 때만 암호를 입력하라는 메시지를 표시합니다.

검증

  • 에이전트에서 캐시된 개인 키의 해당 공개 키를 사용하는 호스트에 로그인합니다. 예를 들면 다음과 같습니다.

    $ ssh <example.user>@<ssh-server@example.com>
    Copy to Clipboard Toggle word wrap

    암호를 입력할 필요가 없습니다.

23.1.4. 스마트 카드에 저장된 SSH 키로 인증

스마트 카드에 ECDSA 및 RSA 키를 생성 및 저장하고 OpenSSH 클라이언트의 스마트 카드로 인증할 수 있습니다. 스마트 카드 인증은 기본 암호 인증을 대체합니다.

사전 요구 사항

  • 클라이언트 측에서 opensc 패키지가 설치되고 pcscd 서비스가 실행 중입니다.

프로세스

  1. PKCS #11 URI를 포함하여 OpenSC PKCS #11 모듈에서 제공하는 모든 키를 나열하고 출력을 keys.pub 파일에 저장합니다.

    $ ssh-keygen -D pkcs11: > keys.pub
    Copy to Clipboard Toggle word wrap
  2. 공개 키를 원격 서버로 전송합니다. 이전 단계에서 만든 keys.pub 파일과 함께 ssh-copy-id 명령을 사용합니다.

    $ ssh-copy-id -f -i keys.pub <username@ssh-server-example.com>
    Copy to Clipboard Toggle word wrap
  3. ECDSA 키를 사용하여 < ssh-server-example.com >에 연결합니다. 키를 고유하게 참조하는 URI의 하위 집합만 사용할 수 있습니다. 예를 들면 다음과 같습니다.

    $ ssh -i "pkcs11:id=%01?module-path=/usr/lib64/pkcs11/opensc-pkcs11.so" <ssh-server-example.com>
    Enter PIN for 'SSH key':
    [ssh-server-example.com] $
    Copy to Clipboard Toggle word wrap

    OpenSSH는 p11-kit-proxy 래퍼를 사용하고 OpenSC PKCS #11 모듈이 p11-kit 툴에 등록되므로 이전 명령을 단순화할 수 있습니다.

    $ ssh -i "pkcs11:id=%01" <ssh-server-example.com>
    Enter PIN for 'SSH key':
    [ssh-server-example.com] $
    Copy to Clipboard Toggle word wrap

    PKCS #11 URI의 id= 부분을 건너뛰면 OpenSSH는 proxy 모듈에서 사용할 수 있는 모든 키를 로드합니다. 이렇게 하면 필요한 입력 횟수가 줄어듭니다.

    $ ssh -i pkcs11: <ssh-server-example.com>
    Enter PIN for 'SSH key':
    [ssh-server-example.com] $
    Copy to Clipboard Toggle word wrap
  4. 선택 사항: ~/.ssh/config 파일에서 동일한 URI 문자열을 사용하여 구성을 영구적으로 만들 수 있습니다.

    $ cat ~/.ssh/config
    IdentityFile "pkcs11:id=%01?module-path=/usr/lib64/pkcs11/opensc-pkcs11.so"
    $ ssh <ssh-server-example.com>
    Enter PIN for 'SSH key':
    [ssh-server-example.com] $
    Copy to Clipboard Toggle word wrap

    이제 ssh 클라이언트 유틸리티에서 이 URI와 스마트 카드의 키를 자동으로 사용합니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat