이 문서에서는 OpenSSH Server(sshd)에 대한 Windows 관련 구성에 대해 설명합니다.
OpenSSH는 OpenSSH.com 온라인으로 구성 옵션에 대한 자세한 설명서를 유지 관리합니다. 이 설명서는 이 설명서 집합에 중복되지 않습니다.
OpenSSH 구성 파일
OpenSSH에는 서버 및 클라이언트 설정 모두에 대한 구성 파일이 있습니다. OpenSSH는 오픈 소스이며 Windows Server 2019 및 Windows 10(빌드 1809)부터 Windows Server 및 Windows 클라이언트 운영 체제에 추가되었습니다. OpenSSH 구성 파일에 대한 오픈 소스 설명서는 여기에서 반복되지 않습니다. 클라이언트 구성 파일은 ssh_config 수동 페이지에서 찾을 수 있습니다. OpenSSH 서버 구성 파일은 sshd_config 수동 페이지에서 찾을 수 있습니다.
OpenSSH Server는 기본적으로 구성 데이터를 %programdata%\ssh\sshd_config 읽습니다. 실행 sshd.exe을(를) -f 매개변수와 함께 실행하여 다른 구성 파일을 지정할 수 있습니다. 파일이 누락된 경우 sshd는 서비스가 시작될 때 기본 구성을 사용하여 파일을 생성합니다.
Windows에서 OpenSSH 클라이언트(ssh)는 구성 파일에서 구성 데이터를 다음 순서로 읽습니다.
-
ssh.exe는-F매개 변수와 함께 시작되며, 구성 파일의 경로와 해당 파일에서 지정된 항목 이름이 포함됩니다. - 에서 사용자의 구성 파일을
%userprofile%\.ssh\config통해 - 에서 시스템 전체 구성 파일을
%programdata%\ssh\ssh_config통해
Windows에서 OpenSSH에 대한 기본 셸 구성
기본 명령 셸은 SSH를 사용하여 서버에 연결할 때 사용자에게 표시되는 환경을 제공합니다. Windows의 초기 기본값은 Windows 명령 프롬프트(cmd.exe)입니다. Windows에는 PowerShell도 포함되며, 비 Microsoft 명령 셸은 Windows에서도 사용할 수 있으며 서버의 기본 셸로 구성될 수 있습니다.
기본 명령 셸을 설정하려면 먼저 OpenSSH 설치 폴더가 시스템 경로에 있는지 확인합니다.
Windows의 경우 기본 설치 폴더는 .입니다 %systemdrive%\Windows\System32\openssh.
다음 명령은 현재 경로 설정을 표시하고 기본 OpenSSH 설치 폴더를 추가합니다.
| 명령 셸 | 사용할 명령 |
|---|---|
| Command | path |
| PowerShell | $env:path |
문자열 값HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH에 셸 실행 파일의 전체 경로를 추가하여 Windows 레지스트리에서 기본 ssh 셸을 DefaultShell 구성할 수 있습니다.
다음 예시의 관리 권한으로 실행된 PowerShell 명령은 OpenSSH Server의 기본 셸을 powershell.exe 로 설정합니다. (이 경로 설정은 OpenSSH 클라이언트에 적용되지 않습니다.)
$NewItemPropertyParams = @{
Path = "HKLM:\SOFTWARE\OpenSSH"
Name = "DefaultShell"
Value = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
PropertyType = "String"
Force = $true
}
New-ItemProperty @NewItemPropertyParams
sshd_config의 Windows 설정
Windows에서 sshd는 기본적으로 구성 데이터를 %programdata%\ssh\sshd_config 읽습니다. 실행 sshd.exe을(를) -f 매개변수와 함께 실행하여 다른 구성 파일을 지정할 수 있습니다.
파일이 누락된 경우 sshd는 서비스가 시작될 때 기본 구성을 사용하여 파일을 생성합니다.
다음 섹션에서는 sshd_config 항목을 통해 가능한 Windows 관련 구성 설정에 대해 설명합니다. 여기에 나열되지 않은 다른 구성 설정이 있습니다. Win32 OpenSSH 설명서에서 자세히 설명합니다.
Tip
서비스가 시작될 때 OpenSSH Server(sshd)가 구성 파일을 읽습니다. 구성 파일을 변경하려면 서비스를 다시 시작해야 합니다.
허용 그룹 (AllowGroups), 허용 사용자 (AllowUsers), 차단 그룹 (DenyGroups), 차단 사용자 (DenyUsers)
, AllowGroupsAllowUsers및 지시문을 사용하여 DenyGroups서버에 연결할 수 있는 사용자 및 DenyUsers 그룹을 제어할 수 있습니다.
allow 및 deny 지시문은 다음 순서DenyUsersAllowUsersDenyGroupsAllowGroups로 처리됩니다.
모든 계정 이름은 소문자에서 지정해야 합니다.
ssh_config 패턴 및 와일드카드에 대한 자세한 내용은 sshd_config OpenBSD 수동 페이지를 참조하세요.
도메인 사용자 또는 그룹을 사용하여 사용자/그룹 기반 규칙을 구성할 때는 다음 형식 user?domain*을 사용합니다.
Windows에서는 도메인 보안 주체를 지정하기 위해 여러 형식을 허용하지만 표준 Linux 패턴과 충돌할 수 있습니다. 이러한 이유로 * FQDN(정규화된 도메인 이름)을 포함하는 데 사용됩니다. 또한 이 방법은 형식과의 ? 충돌을 방지하기 위해 대신 @사용합니다username@host.
회사 그룹 사용자, 그룹 및 인터넷에 연결된 계정은 항상 로컬 계정 이름으로 확인됩니다(도메인 부분은 없으며 표준 Unix 이름과 유사). 도메인 사용자 및 그룹은 NameSamCompatible 형식 domain_short_name\user_name으로 엄격하게 확인됩니다.
모든 사용자 및 그룹 기반 구성 규칙은 이 형식을 준수해야 합니다.
다음 예제에서는 호스트 192.168.2.23에서 거부 contoso\admin 하 고 Contoso 도메인에서 모든 사용자를 차단 합니다. 또한 그룹의 구성원 contoso\sshusers 인 사용자를 허용합니다 contoso\serveroperators .
DenyUsers contoso\admin@192.168.2.23
DenyUsers contoso\*
AllowGroups contoso\sshusers contoso\serveroperators
다음 예제에서는 사용자가 localuser 호스트 192.168.2.23에서 로그인할 수 있도록 허용하고 그룹의 sshusers구성원을 허용합니다.
AllowUsers localuser@192.168.2.23
AllowGroups sshusers
AuthenticationMethods
Windows OpenSSH의 경우 사용 가능한 인증 방법은 다음과 같습니다 passwordpublickey.
Important
Microsoft Entra 계정을 통한 인증은 현재 지원되지 않습니다.
AuthorizedKeysFile
기본값은 .ssh/authorized_keys입니다. 절대 경로를 지정하지 않으면 OpenSSH는 홈 디렉터리를 기준으로 파일을 찾습니다(예: C:\Users\username.). 사용자가 관리자 그룹에 %programdata%/ssh/administrators_authorized_keys 속하는 경우 대신 사용됩니다.
Tip
administrators_authorized_keys 파일에는 계정 및 NT Authority\SYSTEM 보안 그룹에 대한 BUILTIN\Administrators 권한 항목만 있어야 합니다. NT 기관\SYSTEM 계정에는 모든 권한이 부여되어야 합니다. 관리자가 BUILTIN\Administrators 권한 있는 키를 관리할 수 있도록 하려면 보안 그룹이 필요합니다. 필요한 액세스를 선택할 수 있습니다. 권한을 부여하려면 관리자 권한 PowerShell 프롬프트를 열고 명령을 icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"실행할 수 있습니다.
ChrootDirectory(v7.7.0.0에서 추가된 지원)
이 지시문은 SFTP 세션에서만 지원됩니다.
cmd.exe로의 원격 세션은 ChrootDirectory를 준수하지 않습니다. chroot 서버를 sftp 전용으로 설정하려면 ForceCommand를 internal-sftp로 설정합니다. SCP 및 SFTP만 허용하는 사용자 지정 셸을 구현하여 chroot로 SCP를 설정할 수도 있습니다.
GSSAPIAuthentication
구성 인수는 GSSAPIAuthentication GSSAPI(Kerberos) 기반 사용자 인증이 허용되는지 여부를 지정합니다. 기본값은 GSSAPIAuthentication이 아닙니다.
또한 GSSAPI 인증을 사용하려면 OpenSSH 클라이언트를 사용할 때 호스트 이름을 지정하는 스위치를 사용해야 -K 합니다. 또는 SSH 클라이언트 구성에서 해당 항목을 만들 수 있습니다. Windows에서 OpenSSH 클라이언트는 기본적으로 구성 데이터를 %userprofile%\.ssh\config 읽습니다.
다음은 GSSAPI OpenSSH 클라이언트 구성의 예입니다.
# Specify a set of configuration arguments for a host matching the
# pattern SERVER01.contoso.com.
#
# Patterns are case sensitive.
Host SERVER01.contoso.com
# Enables GSSAPI authentication.
GSSAPIAuthentication yes
# Forward (delegate) credentials to the server.
GSSAPIDelegateCredentials yes
Important
GSSAPI는 Windows Server 2022, Windows 11 및 Windows 10(2021년 5월 업데이트)부터만 사용할 수 있습니다.
HostKey
기본값은 다음과 같습니다.
#HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key
기본값이 없는 경우 sshd는 서비스 시작 시 자동으로 생성합니다.
Match
하나 이상의 기준에 따라 조건과 일치합니다. 일치 시 후속 구성 인수가 적용됩니다. Match는 AllowGroups, AllowUsers, DenyGroups, DenyUsers 섹션에서 다루는 패턴 규칙을 사용합니다. 사용자 및 그룹 이름은 소문자여야 합니다.
PermitRootLogin
Windows에서는 해당되지 않습니다. 관리자가 로그인하지 못하도록 하려면 지시문과 함께 Administrators를 DenyGroups 사용합니다.
SyslogFacility
파일 기반 로깅 LOCAL0이 필요한 경우 . 로그는 .에서 %programdata%\ssh\logs생성됩니다. 기본값을 비롯한 다른 값의 경우 AUTH는 로깅을 ETW로 보냅니다. 자세한 내용은 Windows의 로깅 기능을 참조하세요.
구성 인수
다음 구성 인수는 Windows Server 2022, Windows 11 및 Windows 10(2021년 5월 업데이트)부터 사용할 수 있습니다.
GSSAPIAuthentication
Windows Server 및 Windows에서 제공되는 OpenSSH 버전에서는 다음 구성 인수를 사용할 수 없습니다.
AcceptEnvAllowStreamLocalForwardingAuthorizedKeysCommandAuthorizedKeysCommandUserAuthorizedPrincipalsCommandAuthorizedPrincipalsCommandUserExposeAuthInfoGSSAPICleanupCredentialsGSSAPIStrictAcceptorCheckHostbasedAcceptedKeyTypesHostbasedAuthenticationHostbasedUsesNameFromPacketOnlyIgnoreRhostsIgnoreUserKnownHostsKbdInteractiveAuthenticationKerberosAuthenticationKerberosGetAFSTokenKerberosOrLocalPasswdKerberosTicketCleanupPermitTunnelPermitUserEnvironmentPermitUserRCPidFilePrintLastLogPrintMotdRDomainStreamLocalBindMaskStreamLocalBindUnlinkStrictModesX11DisplayOffsetX11ForwardingX11UseLocalhostXAuthLocation