sshd_config 파일 구조와 로드 메커니즘
sshd(8)는 /etc/ssh/sshd_config(또는 -f 옵션으로 지정한 파일)에서 설정 데이터를 읽습니다. 파일은 한 줄에 하나의 키워드-인자 쌍으로 구성되며, '#'로 시작하는 줄과 빈 줄은 주석으로 처리됩니다. 각 키워드는 대소문자 구분이 없지만 인자는 대소문자를 구분합니다. 같은 키워드가 여러 번 나타날 경우 먼저 얻은 값이 사용되며, 일부 지시어는 여러 번 지정 가능합니다.
Match 블록과 조건부 설정
Match 지시어는 특정 조건을 만족할 때만 적용되는 조건부 블록을 도입합니다. User, Group, Host, LocalAddress, LocalPort, Version, Address, RDomain 기준을 조합하여 세밀한 제어가 가능합니다. Address 기준은 CIDR 표기법(예: 192.0.2.0/24)을 지원하며, Version은 OpenSSH 버전 문자열(예: 'OpenSSH_10.0')에 대해 매칭됩니다. 한 Match 블록의 모든 기준이 만족되면 그 이후 키워드들이 전역 설정을 오버라이드하며, 여러 Match 블록이 만족되는 경우 첫 번째 인스턴스만 적용됩니다.
시간 형식과 토큰 확장
시간 지정 옵션(LoginGraceTime, ClientAliveInterval 등)은 정수 뒤에 수식자를 붙인 형식(600, 10m, 1h30m 등)으로 표현됩니다. 토큰 확장(%%로 문자 '%' 표현, %h는 홈 디렉토리, %u는 사용자명, %U는 수치 UID 등)을 통해 동적 값 대입이 가능하며, 일부 지시어(AuthorizedKeysCommand, ChrootDirectory 등)만 특정 토큰 집합을 지원합니다.