Computer >> 컴퓨터 >  >> 체계 >> Windows Server

내장 OpenSSH 서버를 사용하여 SSH를 통해 Windows 연결

Windows 10 1809 및 Windows Server 2019에는 OpenSSH 기반 SSH 서버가 내장되어 있습니다. 이 기사에서는 Windows 10에서 OpenSSH 서버를 설치 및 구성하고 보호된 SSH 프로토콜을 통해 원격으로 연결하는 방법을 보여줍니다(Linux 🙂 ).

이전 Windows 버전에서도 OpenSSH 서버를 설치할 수 있지만 GitHub(https://github.com/powershell/Win32-OpenSSH)에서 win32 포트용 OpenSSH를 수동으로 다운로드하여 설치해야 합니다. Win32-OpenSSH를 설치 및 구성하는 방법의 예는 "Windows에서 SFTP 서버(SSH FTP)를 설치 및 구성하는 방법?" 기사에 나와 있습니다.

내용:

  • Windows에 OpenSSH 서버를 설치하는 방법
  • Windows 10/Windows Server 2019에서 SSH 서버 구성
  • OpenSSH 서버 구성 파일(sshd_config)
  • SSH를 통해 Windows 10에 연결하는 방법

Windows에 OpenSSH 서버를 설치하는 방법

Windows 10 1903(Windows Server 2019에서도 절차는 동일)에 OpenSSH 서버 기능을 설치하는 방법을 알아보겠습니다.

OpenSSH 패키지(예:RSAT)는 이러한(및 최신) Windows 버전에 주문형 기능(FoD)으로 추가됩니다. .

인터넷에 직접 액세스할 수 있는 경우 PowerShell을 사용하여 OpenSSH를 설치할 수 있습니다.

Add-WindowsCapability -Online -Name OpenSSH.Server*

또는 DISM 사용:

dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0

설정을 통해 Windows 10에 OpenSSH를 설치할 수도 있습니다. 패널(앱 -> 앱 및 기능 -> 선택적 기능 관리 -> 기능 추가). SSH 서버 열기 찾기 목록에서 설치를 클릭합니다. .

내장 OpenSSH 서버를 사용하여 SSH를 통해 Windows 연결

OpenSSH 서버가 설치되었는지 확인하려면 다음 명령을 실행하십시오.
Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Ser*'

State : Installed

내장 OpenSSH 서버를 사용하여 SSH를 통해 Windows 연결

Windows 10/Windows Server 2019에서 SSH 서버 구성

Windows에 OpenSSH 서버를 설치한 후 sshd를 변경해야 합니다. 서비스 시작 유형을 자동으로 설정하고 PowerShell을 사용하여 서비스 시작:
Set-Service -Name sshd -StartupType 'Automatic'
Start-Service sshd

내장 OpenSSH 서버를 사용하여 SSH를 통해 Windows 연결
netstat를 사용하여 SSH 서버가 실행 중이고 TCP 포트에서 연결을 기다리고 있는지 확인하십시오. 22:
netstat -na| find ":22"
내장 OpenSSH 서버를 사용하여 SSH를 통해 Windows 연결
Windows Defender 방화벽이 TCP 포트 22를 통해 Windows에 대한 인바운드 연결을 허용하는지 확인:
Get-NetFirewallRule -Name *OpenSSH-Server* |select Name, DisplayName, Description, Enabled

Name DisplayName Description Enabled
---- ----------- ----------- -------
OpenSSH-Server-In-TCP OpenSSH SSH Server (sshd) Inbound rule for OpenSSH SSH Server (sshd) True

내장 OpenSSH 서버를 사용하여 SSH를 통해 Windows 연결

규칙이 비활성화된 경우(Enabled=False ) 또는 누락된 경우 New-NetFirewallRule cmdlet을 사용하여 새 인바운드 규칙을 만들 수 있습니다.

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

기본적으로 중요한 OpenSSH 구성 요소는 다음 폴더에 있습니다.

  • OpenSSH 서버 실행 파일:C:\Windows\System32\OpenSSH\
  • sshd_config 파일(첫 번째 서비스 시작 후 생성됨):C:\ProgramData\ssh
  • OpenSSH 로그:C:\windows\system32\OpenSSH\logs\sshd.log
  • authorized_keys 파일 및 키:%USERPROFILE%\.ssh\

OpenSSH 설치 후 컴퓨터에 새로운 로컬 사용자(sshd)가 생성됩니다.

OpenSSH 서버 구성 파일(sshd_config)

구성 파일에서 OpenSSH 서버 설정을 변경할 수 있습니다. %programdata%\ssh\sshd_config .

예를 들어 특정 도메인 사용자 계정(또는 모든 도메인 사용자)에 대한 SSH 연결을 거부하려면 파일 끝에 다음 지시문을 추가합니다.

DenyUsers woshub\admin@192.168.1.10
DenyUsers corp\*

특정 도메인 그룹에만 SSH 연결을 허용하려면:

AllowGroups woshub\sshadmins

또는 로컬 그룹에 대한 액세스를 허용할 수 있습니다.

AllowGroups sshadmins

관리자 권한이 있는 계정에 대한 접근을 거부할 수 있습니다. 이 경우 SSH 세션에서 권한 있는 작업을 수행해야 하는 경우 runas를 사용해야 합니다.

DenyGroups Administrators

다음 지시문은 RSA 키와 비밀번호를 사용하여 SSH 액세스를 허용합니다(RSA 키를 사용하여 SSH를 통해 Windows에 액세스하는 방법은 다음 기사에서 자세히 살펴보겠습니다).

PubkeyAuthentication yes
PasswordAuthentication yes

sshd_config 파일의 Port 지시문에서 OpenSSH가 연결을 수신하는 포트를 변경할 수 있습니다.

내장 OpenSSH 서버를 사용하여 SSH를 통해 Windows 연결

sshd_config 파일을 변경한 후 sshd 서비스를 다시 시작해야 합니다.

restart-service sshd

SSH를 통해 Windows 10에 연결하는 방법

이제 SSH 클라이언트를 통해 Windows 10에 연결할 수 있습니다(저는 PuTTY를 사용하고 있지만 대신 내장 Windows SSH 클라이언트를 사용할 수 있습니다).

첫 번째 연결 시 알려진 SSH 호스트 목록에 호스트를 추가하라는 표준 요청이 나타납니다.

내장 OpenSSH 서버를 사용하여 SSH를 통해 Windows 연결

예를 클릭하고 Windows 사용자로 Windows 10에 로그온합니다.

내장 OpenSSH 서버를 사용하여 SSH를 통해 Windows 연결

SSH 연결에 성공하면 cmd.exe 셸이 프롬프트 문자열로 시작됩니다.

admin@win10pc C:\Users\admin>

내장 OpenSSH 서버를 사용하여 SSH를 통해 Windows 연결

명령 프롬프트에서 다양한 명령, 스크립트 또는 앱을 실행할 수 있습니다.

내장 OpenSSH 서버를 사용하여 SSH를 통해 Windows 연결

저는 PowerShell 콘솔에서 작업하는 것을 선호합니다. 시작하려면 다음 명령을 실행하십시오.

powershell.exe

내장 OpenSSH 서버를 사용하여 SSH를 통해 Windows 연결

기본 cmd.exe 셸을 OpenSSH용 PowerShell로 변경하려면 다음 PowerShell 명령을 사용하여 레지스트리를 변경합니다.

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String –Force

내장 OpenSSH 서버를 사용하여 SSH를 통해 Windows 연결

SSH 연결을 다시 시작하고 PowerShell이 ​​이제 기본 SSH 셸로 사용되는지 확인합니다(PS C:\Users\admin>에 표시됨). ).

내장 OpenSSH 서버를 사용하여 SSH를 통해 Windows 연결

PowerShell 콘솔은 SSH 세션에서 시작되었으며 탭 자동 완성, PSReadLine 색상 강조 표시, 명령 기록 등 친숙한 기능이 작동합니다. 현재 사용자가 로컬 관리자 그룹의 구성원인 경우 모든 세션 명령은 관리자 권한으로도 실행됩니다. UAC가 활성화된 경우