12.2. OpenSSH 구성
12.2.1. 구성 파일
클라이언트 프로그램(즉, ssh
,scp
, sftp
)과 서버( sshd
데몬)의 두 가지 구성 파일 세트가 있습니다.
시스템 전체 SSH 구성 정보는 표 12.1. “시스템 전체 구성 파일” 에 설명된 대로 /etc/ssh/
디렉토리에 저장됩니다. 사용자별 SSH 구성 정보는 표 12.2. “사용자별 구성 파일” 에 설명된 대로 사용자의 홈 디렉터리 내의 ~/.ssh/
에 저장됩니다.
파일 | 설명 |
---|---|
| 보안 전송 계층을 구성하는 데 중요한 Diffie-Hellman 키 교환에 사용되는 Diffie-Hellman 그룹이 포함되어 있습니다. SSH 세션이 시작될 때 키를 교환하는 경우 공유 비밀 값이 생성되어 어느 당사자만 단독으로 확인할 수 없습니다. 그러면 이 값이 호스트 인증을 제공하는 데 사용됩니다. |
|
기본 SSH 클라이언트 구성 파일. |
|
|
|
|
|
|
|
SSH 프로토콜의 버전 2에 대해 |
|
SSH 프로토콜의 버전 2에 대해 |
|
|
|
|
파일 | 설명 |
---|---|
| 서버에 대해 인증된 공개 키 목록이 있습니다. 클라이언트가 서버에 연결하면 서버는 이 파일 내에 저장된 서명된 공개 키를 확인하여 클라이언트를 인증합니다. |
| 사용자의 ECDSA 개인 키를 포함합니다. |
| ECDSA 사용자의 공개 키입니다. |
|
SSH 프로토콜의 버전 2에 대해 |
|
SSH 프로토콜의 버전 2에 대해 |
| 사용자가 액세스하는 SSH 서버의 호스트 키가 포함되어 있습니다. 이 파일은 SSH 클라이언트가 올바른 SSH 서버에 연결되어 있는지 확인하는 데 매우 중요합니다. |
SSH 서버를 설정하는 경우 /etc/ssh/sshd_config
파일에서 UsePrivilegeSeparation no 지시문을 사용하여 Privilege Separation
기능을 해제하지 마십시오. Privilege Separation
을 사용하면 많은 보안 기능을 비활성화하고 서버가 잠재적인 보안 취약점 및 대상 공격에 노출됩니다. UsePrivilegeSeparation 에 대한 자세한 내용은 sshd_config
(5) 매뉴얼 페이지 또는 /etc/ssh/sshd_config 파일에서 UsePrivilegeSeparation 지시문의 중요도 및 테스트 방법을참조하십시오. Red Hat 지식베이스 문서.
SSH 구성 파일에서 사용할 수 있는 다양한 지시문에 대한 자세한 내용은 ssh_config
(5) 및 sshd_config
(5) 매뉴얼 페이지를 참조하십시오.
12.2.2. OpenSSH 서버 시작
OpenSSH 서버를 실행하려면 openssh-server 패키지가 설치되어 있어야 합니다. 새 패키지를 설치하는 방법에 대한 자세한 내용은 9.2.4절. “패키지 설치” 을 참조하십시오.
현재 세션에서 sshd
데몬을 시작하려면 쉘 프롬프트에 root
로 다음을 입력합니다.
~]# systemctl start sshd.service
현재 세션에서 실행 중인 sshd
데몬을 중지하려면 root
로 다음 명령을 사용합니다.
~]# systemctl stop sshd.service
데몬이 부팅 시 자동으로 시작되도록 하려면 root
로 다음을 입력합니다.
~]# systemctl enable sshd.service Created symlink from /etc/systemd/system/multi-user.target.wants/sshd.service to /usr/lib/systemd/system/sshd.service.
sshd
데몬은 정적 구성된 네트워크 인터페이스 및 기본 ListenAddress
0.0.0.0
옵션에는 충분한 network.target
대상 유닛에 따라 다릅니다. ListenAddress
지시문에서 다른 주소를 지정하고 느린 동적 네트워크 구성을 사용하려면 network-online.target
대상 유닛에 대한 종속성을 sshd.service
유닛 파일에 추가합니다. 이를 위해 다음 옵션을 사용하여 /etc/systemd/system/sshd.service.d/local.conf
파일을 만듭니다.
[Unit] Wants=network-online.target
After=network-online.target
이 후 다음 명령을 사용하여 systemd
관리자 구성을 다시 로드합니다.
~]# systemctl daemon-reload
Red Hat Enterprise Linux에서 시스템 서비스를 관리하는 방법에 대한 자세한 내용은 10장. systemd를 사용하여 서비스 관리 를 참조하십시오.
시스템을 다시 설치하면 새로운 식별 키 세트가 생성됩니다. 그 결과 다시 설치하기 전에 OpenSSH 도구를 사용하여 시스템에 연결한 클라이언트는 다음 메시지가 표시됩니다.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed.
이를 방지하려면 /etc/ssh/
디렉토리에서 관련 파일을 백업할 수 있습니다. 전체 목록은 표 12.1. “시스템 전체 구성 파일” 을 참조하고 시스템을 다시 설치할 때마다 파일을 복원하십시오.
12.2.3. 원격 연결에 SSH 필요
SSH가 실제로 효과적이기 위해서는 안전하지 않은 연결 프로토콜을 사용하는 것은 금지되어야 합니다. 그렇지 않으면 사용자 암호는 한 세션에 대해 SSH를 사용하여 보호할 수 있으며, Telnet을 사용하여 로그인하는 동안 나중에 캡처할 수 있습니다. 비활성화하는 일부 서비스에는 telnet
, rsh,
rlogin
, rootfs 등이 있습니다
.
vsftpd
서비스를 구성하는 방법에 대한 자세한 내용은 16.2절. “FTP” 을 참조하십시오. Red Hat Enterprise Linux 7에서 시스템 서비스를 관리하는 방법을 알아보려면 10장. systemd를 사용하여 서비스 관리 를 참조하십시오.
12.2.4. 키 기반 인증 사용
시스템 보안을 더욱 개선하려면 SSH 키 쌍을 생성한 다음 암호 인증을 비활성화하여 키 기반 인증을 적용합니다. 이렇게 하려면 vi 또는 nano 와 같은 텍스트 편집기에서 /etc/ssh/sshd_config
구성 파일을 열고 PasswordAuthentication
옵션을 다음과 같이 변경합니다.
PasswordAuthentication no
새 기본 설치 이외의 시스템에서 작업하는 경우 PubkeyAuthentication no
가 설정되지 않았는지 확인합니다. 콘솔 또는 대역 외 액세스를 사용하지 않는 원격으로 연결된 경우 암호 인증을 비활성화하기 전에 키 기반 로그인 프로세스를 테스트하는 것이 좋습니다.
ssh
,scp
또는 sftp
를 사용하여 클라이언트 시스템에서 서버에 연결하려면 아래 단계에 따라 권한 부여 키 쌍을 생성합니다. 각 사용자에 대해 키를 개별적으로 생성해야 합니다.
NFS가 마운트된 홈 디렉터리에 키 기반 인증을 사용하려면 use_nfs_home_dirs
SELinux 부울을 먼저 활성화합니다.
~]# setsebool -P use_nfs_home_dirs 1
Red Hat Enterprise Linux 7은 기본적으로 SSH 프로토콜 2 및 RSA 키를 사용합니다(자세한 내용은 12.1.3절. “프로토콜 버전” 참조).
단계를 root
로 완료하면 root
만 키를 사용할 수 있습니다.
시스템을 다시 설치하고 이전에 생성된 키 쌍을 유지하려면 ~/.ssh/
디렉터리를 백업합니다. 다시 설치한 후 홈 디렉터리로 복사합니다. 이 프로세스는 root
를 포함하여 시스템의 모든 사용자에 대해 수행할 수 있습니다.
12.2.4.1. 키 쌍 생성
SSH 프로토콜 버전 2에 대한 RSA 키 쌍을 생성하려면 다음 단계를 따르십시오.
쉘 프롬프트에서 다음을 입력하여 RSA 키 쌍을 생성합니다.
~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/USER/.ssh/id_rsa):
-
새로 생성된 키에 대해 Enter 를 눌러 기본 위치인
~/.ssh/id_rsa
를 확인합니다. 암호를 입력하고 암호를 입력하라는 메시지가 표시되면 다시 입력하여 확인합니다. 보안상의 이유로, 계정에 로그인하는 데 사용하는 것과 동일한 비밀번호를 사용하지 마십시오.
그러면 다음과 같은 메시지가 표시됩니다.
Your identification has been saved in /home/USER/.ssh/id_rsa. Your public key has been saved in /home/USER/.ssh/id_rsa.pub. The key fingerprint is: SHA256:UNIgIT4wfhdQH/K7yqmjsbZnnyGDKiDviv492U5z78Y \USER@penguin.example.com The key's randomart image is: +---[RSA 2048]----+ |o ..==o+. | |.+ . .=oo | | .o. ..o | | ... .. | | .S | |o . . | |o+ o .o+ .. | |+.++=o*.o .E | |BBBo+Bo. oo | +----[SHA256]-----+
참고이전 버전의 기본 지문인 MD5 키 지문을 가져오려면
-E md5
옵션과 함께ssh-keygen
명령을 사용합니다.기본적으로
~/.ssh/
디렉터리의 권한은 8진수 표기법으로 표시된rwx
----또는
700으로 설정됩니다. 이는 USER 만 콘텐츠를 볼 수 있도록 하기 위한 것입니다. 필요한 경우 다음 명령을 사용하여 확인할 수 있습니다.~]$
ls -ld ~/.ssh
drwx------. 2 USER USER 54 Nov 25 16:56 /home/USER/.ssh/공개 키를 원격 머신에 복사하려면 다음 형식으로 명령을 실행합니다.
ssh-copy-id user@hostname
이렇게 하면 가장 최근에 수정된
~/.ssh/id*.pub
공개 키가 아직 설치되지 않은 경우 복사됩니다. 또는 다음과 같이 공개 키의 파일 이름을 지정합니다.ssh-copy-id -i ~/.ssh/id_rsa.pub user@hostname
그러면
~/.ssh/id_rsa.pub
의 콘텐츠가 연결하려는 머신의~/.ssh/authorized_keys
파일에 복사됩니다. 파일이 이미 있는 경우 키는 해당 끝에 추가됩니다.
SSH 프로토콜 버전 2에 대한 ECDSA 키 쌍을 생성하려면 다음 단계를 따르십시오.
쉘 프롬프트에서 다음을 입력하여 ECDSA 키 쌍을 생성합니다.
~]$ ssh-keygen -t ecdsa Generating public/private ecdsa key pair. Enter file in which to save the key (/home/USER/.ssh/id_ecdsa):
-
Enter 를 눌러 새로 생성된 키에 대한 기본 위치
~/.ssh/id_ecdsa
를 확인합니다. 암호를 입력하고 암호를 입력하라는 메시지가 표시되면 다시 입력하여 확인합니다. 보안상의 이유로, 계정에 로그인하는 데 사용하는 것과 동일한 비밀번호를 사용하지 마십시오.
그러면 다음과 같은 메시지가 표시됩니다.
Your identification has been saved in /home/USER/.ssh/id_ecdsa. Your public key has been saved in /home/USER/.ssh/id_ecdsa.pub. The key fingerprint is: SHA256:8BhZageKrLXM99z5f/AM9aPo/KAUd8ZZFPcPFWqK6+M \USER@penguin.example.com The key's randomart image is: +---[ECDSA 256]---+ | . . +=| | . . . = o.o| | + . * . o...| | = . . * . + +..| |. + . . So o * ..| | . o . .+ = ..| | o oo ..=. .| | ooo...+ | | .E++oo | +----[SHA256]-----+
기본적으로
~/.ssh/
디렉터리의 권한은 8진수 표기법으로 표시된rwx
----또는
700으로 설정됩니다. 이는 USER 만 콘텐츠를 볼 수 있도록 하기 위한 것입니다. 필요한 경우 다음 명령을 사용하여 확인할 수 있습니다.~]$
ls -ld ~/.ssh
~]$ ls -ld ~/.ssh/ drwx------. 2 USER USER 54 Nov 25 16:56 /home/USER/.ssh/공개 키를 원격 머신에 복사하려면 다음 형식으로 명령을 실행합니다.
ssh-copy-id USER@hostname
이렇게 하면 가장 최근에 수정된
~/.ssh/id*.pub
공개 키가 아직 설치되지 않은 경우 복사됩니다. 또는 다음과 같이 공개 키의 파일 이름을 지정합니다.ssh-copy-id -i ~/.ssh/id_ecdsa.pub USER@hostname
그러면
~/.ssh/id_ecdsa.pub
의 콘텐츠가 연결하려는 머신의~/.ssh/authorized_keys
에 복사됩니다. 파일이 이미 있는 경우 키는 해당 끝에 추가됩니다.
암호를 기억하도록 시스템을 설정하는 방법에 대한 자세한 내용은 12.2.4.2절. “ssh-agent 구성” 을 참조하십시오.
개인 키는 개인 용도로만 사용되며, 절대 사용자에게 제공하지 않는 것이 중요합니다.
12.2.4.2. ssh-agent 구성
원격 시스템과의 연결을 시작할 때마다 암호를 입력하지 않도록 암호를 저장하려면 ssh-agent
인증 에이전트를 사용할 수 있습니다. GNOME을 실행하는 경우 로그인할 때마다 암호를 묻는 메시지를 표시하고 전체 세션 중에 이를 기억하도록 구성할 수 있습니다. 그렇지 않으면 특정 쉘 프롬프트에 대해 암호를 저장할 수 있습니다.
GNOME 세션 중에 암호를 저장하려면 다음 단계를 따르십시오.
- openssh-askpass 패키지가 설치되어 있는지 확인합니다. 그렇지 않은 경우 Red Hat Enterprise Linux에 새 패키지를 설치하는 방법에 대한 자세한 내용은 9.2.4절. “패키지 설치” 를 참조하십시오.
Super 키를 눌러 활동 개요를 입력하고
시작 애플리케이션을
입력한 다음 Enter 를 누릅니다. 시작 애플리케이션 환경 설정 도구가 표시됩니다. 사용 가능한 시작 프로그램 목록이 포함된 탭에는 기본적으로 표시됩니다. Super 키는 키보드와 기타 하드웨어에 따라 다양한 길잡이에 표시되지만 일반적으로 공간 표시줄의 왼쪽에 Windows 또는 Command 키로 나타납니다.그림 12.1. 시작 애플리케이션 기본 설정
오른쪽에 있는
버튼을 클릭하고Command
필드에/usr/bin/ssh-add
를 입력합니다.그림 12.2. 새 애플리케이션 추가
그림 12.3. 애플리케이션 활성화
로그아웃한 다음 다시 로그인합니다. 암호를 묻는 대화 상자가 나타납니다. 이 시점에서
ssh
,scp
또는sftp
를 통해 암호를 입력하라는 메시지가 표시되지 않아야 합니다.그림 12.4. 암호를 입력
특정 쉘 프롬프트에 대한 암호를 저장하려면 다음 명령을 사용하십시오.
~]$ ssh-add Enter passphrase for /home/USER/.ssh/id_rsa:
로그아웃하면 암호가 잊혀집니다. 가상 콘솔 또는 터미널 창에 로그인할 때마다 명령을 실행해야 합니다.