Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

Windows 내장 OpenSSH 서버로 SSH 원격 접속 환경 구축하기

Windows 10 1809 버전과 Windows Server 2019부터는 OpenSSH 기반의 SSH 서버가 기본으로 내장되어 있습니다. 이 글에서는 Windows 10에 OpenSSH 서버를 설치하고 구성한 뒤, 암호화된 SSH 프로토콜을 통해 리눅스처럼 안전하게 원격 접속하는 방법을 단계별로 살펴보겠습니다.

참고로 이전 버전의 Windows에서도 OpenSSH 서버를 사용할 수 있지만, GitHub(https://github.com/powershell/Win32-OpenSSH)에서 Win32-OpenSSH 포트를 직접 다운로드해 수동으로 설치해야 합니다.

목차

  • Windows에 OpenSSH 서버 설치 방법
  • Windows 10 / Windows Server 2019 SSH 서버 구성
  • OpenSSH 서버 설정 파일(sshd_config)
  • SSH로 Windows 10에 접속하는 방법

Windows에 OpenSSH 서버 설치 방법

Windows 10 1903 기준으로 OpenSSH 서버 기능을 설치하는 과정을 알아보겠습니다(Windows Server 2019도 동일한 절차입니다).

OpenSSH 패키지는 RSAT처럼 해당 버전 이상의 Windows에 FoD(Feature on Demand) 형태로 포함되어 있습니다.

인터넷에 직접 연결된 환경이라면 PowerShell로 간단히 설치할 수 있습니다:

Add-WindowsCapability -Online -Name OpenSSH.Server*

또는 DISM을 사용할 수도 있습니다:

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

GUI 환경을 선호한다면 설정 앱을 통해서도 설치할 수 있습니다. 앱 → 앱 및 기능 → 선택적 기능 관리 → 기능 추가로 이동한 뒤 목록에서 OpenSSH 서버를 찾아 설치를 클릭하면 됩니다.

설치가 완료되었는지 확인하려면 아래 명령을 실행하세요:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Ser*'

State : Installed

상태가 Installed로 표시되면 정상적으로 설치된 것입니다.

Windows 10 / Windows Server 2019 SSH 서버 구성

OpenSSH 서버 설치 후에는 sshd 서비스의 시작 유형을 자동으로 변경하고 서비스를 시작해야 합니다. PowerShell에서 다음 명령을 실행하세요:
Set-Service -Name sshd -StartupType 'Automatic'
Start-Service sshd

netstat 명령으로 SSH 서버가 TCP 22번 포트에서 연결 대기 중인지 확인합니다:
netstat -na| find ":22"

다음으로 Windows Defender 방화벽이 TCP 22번 포트로 들어오는 연결을 허용하는지 확인합니다:
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

방화벽 규칙이 비활성화(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 키를 활용한 Windows SSH 접속 방법은 다음 글에서 자세히 다룹니다):

PubkeyAuthentication yes
PasswordAuthentication yes

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

sshd_config 파일을 수정한 후에는 반드시 sshd 서비스를 재시작해야 변경 사항이 적용됩니다:

restart-service sshd

SSH로 Windows 10에 접속하는 방법

이제 SSH 클라이언트로 Windows 10에 접속해 보겠습니다. 여기서는 PuTTY를 사용하지만, Windows에 내장된 SSH 클라이언트를 사용해도 무방합니다.

첫 접속 시 일반적인 SSH 호스트 등록 확인 메시지가 나타납니다. 알려진 SSH 호스트 목록에 이 호스트를 추가할지 묻는 내용입니다.

를 클릭한 뒤 Windows 사용자 계정으로 로그인합니다.

SSH 연결에 성공하면 cmd.exe 셸이 프롬프트와 함께 실행됩니다.

admin@win10pc C:\Users\admin>

명령 프롬프트에서 다양한 명령어, 스크립트 또는 응용 프로그램을 실행할 수 있습니다.

개인적으로는 PowerShell 콘솔에서 작업하는 것을 선호합니다. SSH 세션에서 다음 명령을 입력하면 바로 시작할 수 있습니다:

powershell.exe

매번 수동으로 실행하는 것이 번거롭다면, 레지스트리를 수정해 OpenSSH의 기본 셸을 cmd.exe에서 PowerShell로 변경할 수 있습니다:

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

SSH 연결을 다시 설정한 뒤 PowerShell이 기본 셸로 적용되었는지 확인합니다(PS C:\Users\admin> 프롬프트가 표시되면 성공입니다).

SSH 세션에서 PowerShell 콘솔이 실행되면 탭 자동 완성, PSReadLine 색상 강조, 명령 기록 등 익숙한 기능들을 그대로 사용할 수 있습니다. 또한 현재 사용자가 로컬 관리자 그룹의 멤버라면 UAC가 활성화되어 있더라도 세션의 모든 명령이 상승된 권한으로 실행됩니다.