sshd_config
OpenSSH 서버 구성: 수신, 인증, 전달, 액세스 제어 및 로깅.
실행 전 확인
서버 구성은 클라이언트 ssh_config와 다릅니다. 경로, 지원되는 옵션 및 기본값은 운영 체제 및 OpenSSH 버전에 따라 다릅니다. 기존 관리 세션을 열어두고 복구 경로를 사용할 수 있도록 하십시오. 변경 사항을 적용하기 전에 sshd -t를 사용하여 실제 구성을 검증하고 sshd -T를 사용하여 효과적인 설정을 검사합니다. 이러한 명령에는 관리자 권한이 필요할 수 있습니다. 원래 세션을 닫기 전에 두 번째 로그인을 확인하세요. 예제 값을 맹목적으로 복사하지 마십시오.
변경 사항을 적용한 후 새 SSH 세션에서 로그인이 가능한지와 원하는 기능이 작동하는지 확인하세요. 확인이 성공할 때까지 현재 세션을 열어 두면 필요한 경우 설정을 복구할 수 있습니다.
사용 예제
서버 구성 예시. 인증, 경로 및 액세스 규칙을 환경에 맞게 조정하세요.
Port 22
PermitRootLogin no
PubkeyAuthentication yes
AllowTcpForwarding yes변경 사항을 적용하기 전에 구문을 확인하고 효과적인 서버 설정을 검사하십시오.
sudo sshd -t
sudo sshd -T옵션 및 예제
Port자주 사용수신 TCP 포트; 여러 Port 지시문이 허용됩니다. 방화벽과 클라이언트가 선택한 포트를 허용하는지 확인하세요.
Port 2222ListenAddress자주 사용sshd가 수신하는 로컬 주소입니다. 주소에는 포트가 포함될 수 있습니다. 서버에 존재하는지 확인하세요.
ListenAddress 192.0.2.10AddressFamily주소 계열을 선택하십시오: IPv4의 경우 inet, IPv6의 경우 inet6.
AddressFamily inetHostKey자주 사용서버 개인 호스트 키의 경로입니다. 이는 사용자의 인증 키가 아닙니다. 개인 파일을 보호하세요.
HostKey /etc/ssh/ssh_host_ed25519_keyHostCertificate구성된 호스트 키와 일치하는 서버 호스트 인증서의 경로입니다.
HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pubPasswordAuthentication자주 사용비밀번호 인증을 허용하거나 거부합니다. 비활성화하기 전에 다른 로그인 방법을 확인하세요.
PasswordAuthentication noPubkeyAuthentication자주 사용공개 키 인증을 허용하거나 거부합니다. 서버 권한 및 인증된 키는 계속 적용됩니다.
PubkeyAuthentication yesKbdInteractiveAuthentication자주 사용키보드 대화형 인증을 허용합니다. 프롬프트와 사용 가능한 방법은 서버와 인증 백엔드에 따라 다릅니다.
KbdInteractiveAuthentication yesAuthenticationMethods자주 사용공백으로 구분된 메소드 목록 중 하나가 필요합니다. 목록의 모든 쉼표로 구분된 메서드는 성공해야 합니다. 각 방법도 활성화해야 합니다.
AuthenticationMethods publickey,keyboard-interactivePermitRootLogin자주 사용루트 로그인 제어: 예, 비밀번호 금지, 강제 명령 전용 또는 아니요. 먼저 대체 관리 로그인을 테스트하십시오.
PermitRootLogin noPermitEmptyPasswords비밀번호가 비어 있는 계정이 비밀번호 인증을 사용하여 인증하도록 허용합니다. 이 기능을 활성화하는 것은 안전하지 않습니다.
PermitEmptyPasswords noAuthorizedKeysFile자주 사용승인된 공개 키가 포함된 파일의 경로입니다. 상대 경로는 사용자의 홈 디렉터리에서 확인됩니다. 토큰이 지원됩니다.
AuthorizedKeysFile .ssh/authorized_keysStrictModes자주 사용로그인을 수락하기 전에 사용자 파일과 홈 디렉토리의 소유권과 권한을 확인하십시오.
StrictModes yesAllowUsers자주 사용나열된 사용자 이름 패턴만 허용합니다. USER@HOST 패턴은 원점을 제한할 수 있습니다. 계정 액세스에는 다른 제한 사항도 적용됩니다.
AllowUsers alice bobDenyUsers일치하는 사용자 이름 패턴을 거부합니다. 거부 규칙은 해당 허용 규칙보다 우선합니다.
DenyUsers guestAllowGroups다른 액세스 규칙에 따라 일치하는 명명된 그룹의 사용자만 허용합니다.
AllowGroups sshusersDenyGroups명명된 그룹과 일치하는 사용자를 거부합니다. 숫자 ID가 아닌 그룹 이름이 사용됩니다.
DenyGroups restrictedAllowTcpForwarding자주 사용TCP 전달 제어: 예 또는 모두, 아니요, 로컬 또는 원격. 이것만으로는 무제한 쉘 액세스 권한을 가진 사용자의 전달을 막을 수 없습니다.
AllowTcpForwarding localDisableForwarding전달 기능을 비활성화하고 다른 전달 설정을 재정의합니다. 이로 인해 터널과 에이전트 또는 X11 전달이 중단될 수 있습니다.
DisableForwarding yesGatewayPorts자주 사용원격 전달 바인드 주소 제어: no 바인드 루프백, yes 바인드 와일드카드, clientspecified는 클라이언트가 선택한 주소를 허용합니다. 포트를 노출하면 보안에 영향을 미칩니다.
GatewayPorts noPermitOpen로컬 TCP 전달 대상을 제한합니다. 호스트:포트 항목을 사용하거나, 모두 또는 없음을 사용합니다. 이름이 일치하는지 확인되지 않습니다.
PermitOpen db.example.com:5432PermitListen원격 전달을 위해 수신 주소 및 포트를 제한합니다. GatewayPort는 바인딩에도 영향을 미칩니다.
PermitListen localhost:18080AllowAgentForwardingSSH 인증 에이전트 전달을 허용합니다. 에이전트 소켓에 액세스할 수 있는 원격 프로세스는 서명을 요청할 수 있습니다.
AllowAgentForwarding noAllowStreamLocalForwardingUnix 도메인 소켓 전달을 제어합니다(예 또는 모두, 아니요, 로컬 또는 원격).
AllowStreamLocalForwarding noX11ForwardingX11 디스플레이 전달을 활성화합니다. 필요한 경우에만 활성화하고 원격 디스플레이 액세스 위험을 이해하십시오.
X11Forwarding noMaxAuthTries자주 사용연결을 끊기 전 연결당 최대 인증 시도 횟수입니다. 서버는 더 일찍 오류를 기록할 수 있습니다.
MaxAuthTries 4MaxSessions자주 사용SSH 연결당 최대 셸, 로그인 또는 하위 시스템 세션. 0으로 설정하면 세션이 차단되지만 전달은 여전히 허용될 수 있습니다.
MaxSessions 10MaxStartups자주 사용인증되지 않은 연결을 제한합니다. start:rate:full 형식은 로드 중인 연결을 점진적으로 거부합니다.
MaxStartups 10:30:100LoginGraceTime자주 사용인증에 허용된 시간 기간이 0이면 시간 제한이 없음을 의미합니다.
LoginGraceTime 60sClientAliveInterval자주 사용암호화된 SSH 수준 클라이언트 활성 프로브의 간격(초)입니다. 0은 이러한 프로브를 비활성화합니다.
ClientAliveInterval 30ClientAliveCountMax자주 사용연결을 끊기 전에 허용되는 응답하지 않은 SSH 수준 클라이언트 활성 프로브 수입니다. ClientAliveInterval과 함께 사용합니다.
ClientAliveCountMax 3TCPKeepAliveTCP 연결 유지 메시지를 제어합니다. 이는 암호화된 SSH 클라이언트 활성 프로브와는 별개입니다.
TCPKeepAlive yesUsePAM자주 사용이를 지원하는 빌드에서 PAM 통합을 활성화합니다. PAM 정책 및 사용 가능한 인증 방법은 시스템에 따라 다릅니다.
UsePAM yesPermitTTY의사 터미널 할당을 허용합니다. 비활성화하면 대화형 세션에 영향을 줍니다.
PermitTTY yesForceCommand요청된 명령을 고정된 명령으로 바꾸십시오. 활성화하기 전에 액세스 및 제한 사항을 주의 깊게 확인하세요.
ForceCommand internal-sftpSubsystem자주 사용명명된 하위 시스템과 해당 명령을 정의합니다. Internal-sftp는 내장된 SFTP 서버입니다.
Subsystem sftp internal-sftpChrootDirectory인증 후 세션을 디렉터리로 제한합니다. 디렉터리 소유권과 권한은 엄격하게 확인됩니다. 의도한 세션에 필요한 파일을 프로비저닝합니다.
ChrootDirectory /srv/sftp/%uMatch자주 사용사용자, 그룹, 주소 또는 기타 지원되는 기준을 일치시키기 위한 조건부 블록을 시작합니다. 내부에는 특정 지시문만 허용됩니다.
Match User sftpuser
ForceCommand internal-sftpInclude자주 사용경로 또는 glob별로 구성 파일을 포함합니다. 일반적으로 처음 얻은 값이 적용되므로 순서가 중요합니다.
Include /etc/ssh/sshd_config.d/*.confLogLevel자주 사용QUIET, FATAL, ERROR, INFO, VERBOSE 또는 DEBUG와 같은 로깅 상세 수준을 설정합니다. 자세한 로그는 민감한 정보를 노출할 수 있습니다.
LogLevel INFOSyslogFacilitySSH 서버 메시지에 사용되는 syslog 기능을 선택하십시오. 시스템 로깅 구성은 표시되는 위치를 결정합니다.
SyslogFacility AUTHBanner인증 전에 지정된 파일의 내용을 보냅니다. 구성된 배너를 비활성화하려면 없음을 사용하십시오.
Banner /etc/issue.netAcceptEnv명명된 클라이언트 제공 환경 변수를 허용합니다. 일부 변수는 제한된 환경을 우회할 수 있으므로 필요한 것만 허용합니다.
AcceptEnv LANG LC_*PermitUserEnvironment사용자가 제공한 환경 설정을 제어합니다. 이를 활성화하면 환경 변수를 통해 제한 사항을 우회할 수 있습니다.
PermitUserEnvironment noPrintMotdsshd가 대화형 로그인 시 오늘의 메시지를 인쇄할지 여부를 제어합니다. PAM이나 다른 서비스에서 인쇄할 수도 있습니다.
PrintMotd noCompression압축을 제어합니다. 지원되는 값과 타이밍은 OpenSSH 버전에 따라 다릅니다.
Compression noRekeyLimit데이터 임계값을 설정하고 선택적으로 키 재생성을 위한 시간 간격을 설정합니다. 서버 버전에 맞는 값을 사용하세요.
RekeyLimit 1G 1hCiphers허용되는 암호화 알고리즘을 선택하세요. 기본 목록을 바꾸면 호환성이 저하될 수 있습니다. ssh -Q 암호를 사용하여 클라이언트 지원 알고리즘을 검사합니다.
Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.comKexAlgorithms키 교환 알고리즘을 선택합니다. 이 목록을 제한하면 클라이언트가 중단될 수 있습니다. 양쪽에서 지지를 확인합니다.
KexAlgorithms curve25519-sha256PubkeyAcceptedAlgorithms사용자 인증에 허용되는 공개 키 서명 알고리즘을 선택합니다. 기본 목록을 변경하기 전에 호환성을 확인하십시오.
PubkeyAcceptedAlgorithms ssh-ed25519HostKeyAlgorithms서버에서 제공하는 호스트 키 서명 알고리즘을 선택합니다. 구성된 호스트 키는 선택한 알고리즘을 지원해야 합니다.
HostKeyAlgorithms ssh-ed25519TrustedUserCAKeys인증서 인증을 위해 신뢰할 수 있는 사용자 인증 기관 공개 키가 포함된 파일입니다.
TrustedUserCAKeys /etc/ssh/user_ca.pubRevokedKeys취소된 공개 키 또는 키 취소 목록이 포함된 파일입니다. 누락되거나 읽을 수 없는 구성된 파일로 인해 공개 키 인증이 차단될 수 있습니다.
RevokedKeys /etc/ssh/revoked_keysAuthorizedPrincipalsFile신뢰할 수 있는 CA가 서명한 사용자 인증서에 허용되는 파일 목록 주체입니다. 토큰 확장이 지원됩니다.
AuthorizedPrincipalsFile /etc/ssh/auth_principals/%uVersionAddendumSSH 프로토콜 배너에 텍스트를 추가합니다. none은 추가된 텍스트를 비활성화합니다.
VersionAddendum noneAuthorizedKeysCommand공개 키를 얻으려면 신뢰할 수 있는 루트 소유 프로그램을 실행하십시오. 실행 계정을 구성하고 매뉴얼의 소유권 요구 사항을 따르세요.
AuthorizedKeysCommand /usr/local/libexec/ssh-keys %uAuthorizedKeysCommandUserAuthorizedKeysCommand를 실행하는 데 사용되는 계정입니다. 전용 계정을 권장합니다.
AuthorizedKeysCommandUser sshkeysAuthorizedPrincipalsCommand허용된 인증서 주체를 얻으려면 신뢰할 수 있는 프로그램을 실행하세요. 실행 계정을 별도로 구성합니다.
AuthorizedPrincipalsCommand /usr/local/libexec/ssh-principals %uAuthorizedPrincipalsCommandUserAuthorizedPrincipalsCommand를 실행하는 데 사용되는 계정입니다. 전용 계정을 사용하세요.
AuthorizedPrincipalsCommandUser sshprincipalsCASignatureAlgorithmsSSH 인증서에 허용되는 인증 기관 서명 알고리즘을 제한합니다. 변경하기 전에 CA 및 클라이언트 호환성을 확인하십시오.
CASignatureAlgorithms ssh-ed25519ChannelTimeout채널 유형 및 기간에 따라 비활성 채널을 만료합니다. 가용성 및 지원되는 채널 유형은 버전에 따라 다릅니다. 만료로 인해 SSH 연결이 종료될 필요는 없습니다.
ChannelTimeout session=1hExposeAuthInfoSSH_USER_AUTH가 참조하는 임시 파일을 통해 인증 정보를 노출합니다. 인증 세부정보에 대한 액세스를 고려하세요.
ExposeAuthInfo noFingerprintHashsha256 또는 md5와 같은 키 지문에 사용되는 해시를 선택합니다. SHA-256을 선호합니다.
FingerprintHash sha256GSSAPIAuthentication서버 빌드에서 지원하는 경우 GSSAPI 사용자 인증을 제어합니다.
GSSAPIAuthentication noGSSAPICleanupCredentials로그아웃 시 위임된 GSSAPI 자격 증명을 폐기할지 여부를 제어합니다. 빌드 지원은 다양합니다.
GSSAPICleanupCredentials yesGSSAPIDelegateCredentials지원되는 경우 사용자 세션에 대해 위임된 GSSAPI 자격 증명 저장을 제어합니다.
GSSAPIDelegateCredentials noGSSAPIStrictAcceptorCheck서버에 올바른 GSSAPI 호스트 ID가 필요한지 여부를 제어합니다. 확인을 비활성화하면 보안에 영향을 미칩니다.
GSSAPIStrictAcceptorCheck yesHostbasedAcceptedAlgorithms호스트 기반 인증에 허용되는 알고리즘을 선택하세요. 가용성은 OpenSSH 버전에 따라 다릅니다.
HostbasedAcceptedAlgorithms ssh-ed25519HostbasedAuthentication호스트 기반 인증을 제어합니다. 추가적인 신뢰와 호스트 구성이 필요합니다.
HostbasedAuthentication noHostbasedUsesNameFromPacketOnly호스트 기반 인증이 DNS 대신 클라이언트가 제공한 이름을 사용하는지 여부를 제어합니다. 신뢰 영향을 검토합니다.
HostbasedUsesNameFromPacketOnly noHostKeyAgent호스트 개인 키에 액세스하는 데 사용되는 에이전트 소켓을 지정합니다. 에이전트와 해당 소켓을 sshd에서 사용할 수 있어야 합니다.
HostKeyAgent /run/ssh-hostkey-agent.sockIgnoreRhosts호스트 기반 인증을 위해 사용자별 rhosts 또는 shosts 파일 사용을 제어합니다. 허용되는 값은 버전에 따라 다릅니다.
IgnoreRhosts yesIgnoreUserKnownHosts호스트 기반 인증 중에 사용자별 Known_hosts 파일을 무시할지 여부를 제어합니다.
IgnoreUserKnownHosts yesKerberosAuthenticationKerberos 지원으로 구축 및 구성된 경우 Kerberos 비밀번호 인증을 제어합니다.
KerberosAuthentication noKerberosGetAFSToken빌드가 지원하는 Kerberos 인증 사용자에 대한 AFS 토큰 획득을 제어합니다.
KerberosGetAFSToken noKerberosOrLocalPasswd실패한 Kerberos 비밀번호 검증이 로컬 비밀번호 인증으로 대체되는지 여부를 제어합니다.
KerberosOrLocalPasswd noKerberosTicketCleanup지원되는 경우 로그아웃 시 사용자의 Kerberos 티켓 캐시 제거를 제어합니다.
KerberosTicketCleanup yesLogVerbose소스 위치 일치에 대한 로깅 상세 수준을 재정의합니다. 이는 문제 해결을 위한 것이며 민감한 정보를 노출할 수 있습니다.
LogVerbose kex.c:*:1000ModuliFileDiffie-Hellman 그룹 교환에 사용되는 모듈리 파일의 경로입니다. 플랫폼 지침에 따라 유지하십시오.
ModuliFile /etc/ssh/moduliPAMServiceName이 지시문을 지원하는 빌드에서 PAM 서비스 이름을 선택하십시오. 선택한 서비스에 대한 PAM 정책이 존재해야 합니다.
PAMServiceName sshdPermitTunnelTun 장치 전달 제어: 예, 지점 간, 이더넷 또는 아니요. 추가 시스템 권한 및 구성이 필요할 수 있습니다.
PermitTunnel noPermitUserRC사용자의 SSH rc 파일 실행을 제어합니다. 비활성화하면 사용자 세션 설정에 영향을 줄 수 있습니다.
PermitUserRC noPerSourceMaxStartups소스 주소 또는 소스 그룹당 동시에 인증되지 않은 연결을 제한합니다. 버전 지원은 다양합니다.
PerSourceMaxStartups 10PerSourceNetBlockSize소스별 연결 제한에 대해 소스를 그룹화하는 데 사용되는 IPv4 및 IPv6 접두사 길이를 설정합니다.
PerSourceNetBlockSize 32:128PerSourcePenalties문제가 있는 소스에 대한 페널티를 구성합니다. 지원되는 페널티 유형, 값 및 기본값은 OpenSSH 버전에 따라 다릅니다.
PerSourcePenalties noPerSourcePenaltyExemptList소스별 페널티에서 면제되는 소스 주소 또는 CIDR 범위를 나열합니다. 면제 범위가 좁은지 확인하세요.
PerSourcePenaltyExemptList 192.0.2.0/24PidFile서버 프로세스 ID 파일의 경로입니다. 서비스 관리자와 권한이 이 경로에 동의하는지 확인하세요.
PidFile /run/sshd.pidPrintLastLog대화형 로그인에 대한 이전 로그인 시간 인쇄를 제어합니다. 가용성은 플랫폼 지원에 따라 달라질 수 있습니다.
PrintLastLog yesPubkeyAuthOptions지원되는 경우 보안 키 터치 또는 확인 요구 사항을 포함한 공개 키 인증 옵션을 설정합니다.
PubkeyAuthOptions touch-requiredRefuseConnection일반적으로 Match 블록 내에서 연결을 거부합니다. 가용성은 버전에 따라 다릅니다.
Match User blocked
RefuseConnection yesRequiredRSASizeSSHD에서 허용하는 최소 RSA 키 크기를 설정합니다. 값이 낮을수록 보안이 약화될 수 있으며 일부 버전에서는 최소값을 적용합니다.
RequiredRSASize 3072RDomain라우팅 도메인을 지원하는 플랫폼에서 세션에 대한 라우팅 도메인을 선택합니다. 이는 플랫폼별로 다릅니다.
RDomain 1SecurityKeyProviderFIDO 보안 키 미들웨어 라이브러리의 경로입니다. 설정하지 않은 채로 두면 가능한 경우 내장 지원이 사용됩니다.
SecurityKeyProvider /usr/local/lib/libsk-libfido2.soSshdAuthPath이를 지원하는 버전 및 플랫폼의 sshd 인증 도우미 경로입니다. 일반적으로 패키지에 의해 관리됩니다.
SshdAuthPath /usr/libexec/sshd-authSshdSessionPath이를 지원하는 버전 및 플랫폼의 sshd 세션 도우미 경로입니다. 일반적으로 패키지에 의해 관리됩니다.
SshdSessionPath /usr/libexec/sshd-sessionStreamLocalBindMaskUnix 도메인 전달 소켓에 대한 8진수 파일 모드 생성 마스크를 설정합니다.
StreamLocalBindMask 0177StreamLocalBindUnlink전달 수신기를 만들기 전에 기존 Unix 도메인 소켓을 제거할지 여부를 제어합니다.
StreamLocalBindUnlink noUnusedConnectionTimeout지정된 시간 이후에는 열린 채널이 없는 연결을 닫습니다. 영향을 받는 동작과 가용성은 버전에 따라 다릅니다.
UnusedConnectionTimeout 5mX11DisplayOffsetX11 전달에 사용할 수 있는 첫 번째 디스플레이 번호를 설정합니다.
X11DisplayOffset 10X11UseLocalhost활성화되면 X11 전달 서버를 루프백에 바인딩합니다. 이를 비활성화하면 디스플레이가 더 광범위하게 노출될 수 있습니다.
X11UseLocalhost yesXAuthLocation해당되는 경우 X11 전달에 사용되는 xauth 프로그램의 경로입니다.
XAuthLocation /usr/bin/xauthIPQoS대화형 및 비대화형 세션에 대한 IP 서비스 품질 표시를 설정합니다. 네트워크 장치는 이러한 표시를 해석하거나 무시할 수 있습니다.
IPQoS lowdelay throughputMACs메시지 인증 코드 알고리즘을 선택합니다. 기본값을 변경하면 보안 및 클라이언트 호환성에 영향을 미칠 수 있습니다.
MACs hmac-sha2-256-etm@openssh.comSetEnv하위 세션에 대한 환경 변수를 설정합니다. 이러한 값은 클라이언트 또는 사용자 환경 파일에서 허용되는 변수를 재정의합니다.
SetEnv LANG=en_US.UTF-8UseDNS클라이언트 연결을 위한 역방향 DNS 조회 및 확인을 제어합니다. DNS가 느린 경우 이를 활성화하면 지연이 추가될 수 있습니다.
UseDNS no권장 시작 설정
공개 키 로그인이 확인되었고 키보드 대화식 인증이 필요 없는 서버를 위한 설정입니다. 인증된 사용자의 TCP 포워딩은 허용하며 원격 포워딩 수신은 루프백으로 제한합니다.
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no
PermitEmptyPasswords no
AllowTcpForwarding yes
GatewayPorts no비밀번호와 키보드 대화식 로그인을 비활성화합니다. 후자에는 PAM 또는 일회용 코드가 포함될 수 있습니다. 먼저 다른 관리자 계정과 키로 로그인할 수 있는지 확인하세요. AllowTcpForwarding yes는 인증된 사용자의 포워딩을 허용하므로 필요에 따라 접근을 제한하세요.
현재 세션과 복구 수단을 유지하고 기존 설정에 병합하세요. Include 순서, 앞선 값과 Match 블록이 결과에 영향을 줄 수 있습니다. sshd -t와 sshd -T로 확인하고 Match 조건에는 sshd -T -C를 사용하세요. 시스템 서비스 절차로 적용한 후 두 번째 로그인을 확인하고 기존 세션을 종료하세요.
공식 참고 자료
검토일: 2026년 10월 27일