Aller au contenu principal

31. Configure SSH Servers and Clients


원격 Linux 서버를 안전하게 관리하려면 로컬 머신에 SSH 클라이언트와 원격 시스템에 SSH 데몬(서버)이 필요합니다. 대부분의 Linux 배포판은 OpenSSH 데몬이 사전 설치되어 있습니다.

SSH 서버 설정

SSH 데몬의 주요 설정 파일은 /etc/ssh/sshd_config (데몬을 나타내는 "d" 포함)입니다. SSH 클라이언트 설정 파일은 /etc/ssh/ssh_config ("d" 없음)입니다.

/etc/ssh/sshd_config의 주요 설정

포트 설정: 기본적으로 주석 처리되어 있으며 기본값은 22입니다. 변경하려면 주석을 제거하고 원하는 포트를 지정합니다.

주소 패밀리: AddressFamily any는 IPv4와 IPv6 연결을 모두 허용합니다. AddressFamily inet (IPv4) 또는 AddressFamily inet6 (IPv6)으로 제한할 수 있습니다.

루트 로그인: PermitRootLogin 설정으로 루트 접근을 제어합니다. 기본값은 prohibit-password로 키 기반 인증으로만 루트 로그인이 가능합니다. 루트 로그인을 완전히 비활성화하려면 no로 변경합니다.

인증 방법: SSH는 비밀번호 인증과 SSH 키 기반 인증 두 가지를 주로 사용합니다. PasswordAuthenticationKbdInteractiveAuthentication을 모두 비활성화하면 키 기반 인증만 허용됩니다.

기타 설정: X11 포워딩, ClientAliveInterval, ClientAliveCountMax 등 세션 관리 옵션이 있습니다.

사용자별 예외 설정

특정 사용자에 대한 예외를 설정할 수 있습니다:

Match User anoncvs
PasswordAuthentication yes
설정 파일 수정 후 변경 사항을 적용하려면 SSH 데몬을 다시 로드하세요:
sudo systemctl reload ssh.service

/etc/ssh/sshd_config.d/ 의 추가 설정 파일이 주 파일의 설정을 덮어쓸 수 있습니다.

SSH 클라이언트 설정

SSH 클라이언트는 원격 서버에 연결하는 데 사용되며 Windows 10, macOS, Linux에서 사용 가능합니다.

사용자별 SSH 클라이언트 파일은 각 사용자의 홈 폴더에 있는 .ssh 디렉토리에 저장됩니다. Windows에서는 C:\Users\[Username]\.ssh입니다.

클라이언트 설정 파일

전역 클라이언트 설정 파일은 /etc/ssh/ssh_config입니다. 시스템 업데이트 시 덮어쓰이지 않도록 커스텀 파일은 /etc/ssh/ssh_config.d/에 생성합니다.

사용자별 호스트 설정

~/.ssh/ 디렉토리에 config 파일을 생성하여 호스트 별칭과 커스텀 연결 파라미터를 정의합니다:

Host ubuntu-vm
HostName 10.0.0.186
User jeremy

파일 권한 설정:

chmod 600 ~/.ssh/config

별칭으로 연결:

ssh ubuntu-vm

비밀번호 대신 SSH 키 사용

SSH 키는 비밀번호 기반 인증보다 강력한 보안을 제공합니다.

로컬 머신에서 SSH 키 쌍 생성:

ssh-keygen

개인 키(id_ed25519)와 공개 키(id_ed25519.pub)가 생성됩니다.

ssh-copy-id 명령으로 공개 키를 서버에 복사:

ssh-copy-id [email protected]

연결 테스트:

ssh-copy-id를 사용할 수 없는 경우, id_ed25519.pub 내용을 서버의 ~/.ssh/authorized_keys 파일에 수동으로 추가하고 권한을 설정합니다:

chmod 600 ~/.ssh/authorized_keys

Known Hosts 관리

처음 새 서버에 연결할 때 SSH는 서버의 핑거프린트를 확인하고 ~/.ssh/known_hosts에 저장합니다. 이후 연결 시 SSH는 핑거프린트를 검증하여 신뢰할 수 있는 서버인지 확인합니다.

서버의 핑거프린트가 변경된 경우 특정 핑거프린트 제거:

ssh-keygen -R 10.0.0.251

모든 저장된 핑거프린트를 지우려면 known_hosts 파일 전체를 삭제할 수 있습니다.