Windows 10과 Windows Server 2019에는 기본(내장) SSH 클라이언트가 탑재되어 있습니다. ssh.exe를 사용하면 Putty, MTPuTTY 같은 서드파티 SSH 클라이언트 없이도 Linux/UNIX 서버, VMware ESXi 호스트 등 다양한 장비에 안전하게 접속할 수 있습니다. Windows의 네이티브 SSH 클라이언트는 OpenSSH 포팅 버전을 기반으로 하며, Windows 10 빌드 1809부터 기본 설치되어 제공됩니다.
Windows 10에서 OpenSSH 클라이언트 활성화(설치) 방법
OpenSSH 클라이언트는 RSAT처럼 Windows 10의 요청 시 기능(Features on Demand)에 포함되어 있습니다. Windows Server 2019와 Windows 10 1809 이상 빌드에서는 SSH 클라이언트가 기본적으로 설치되어 있습니다.
먼저 SSH 클라이언트가 설치되어 있는지 확인합니다:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Client*'
위 명령 실행 결과에서 OpenSSH 클라이언트가 이미 설치되어 있다면 State: Installed로 표시됩니다.
만약 설치되어 있지 않다면(State: Not Present) 다음 방법 중 하나로 설치할 수 있습니다:
- PowerShell 명령:
Add-WindowsCapability -Online -Name OpenSSH.Client* - DISM 사용:
dism /Online /Add-Capability /CapabilityName:OpenSSH.Client~~~~0.0.1.0 - 설정 → 앱 → 선택적 기능 → 기능 추가 메뉴에서 목록의 OpenSSH 클라이언트를 찾아 설치를 클릭합니다.
OpenSSH 바이너리 파일은 c:\Windows\System32\OpenSSH\ 폴더에 위치하며, 주요 실행 파일은 다음과 같습니다:
ssh.exe– SSH 클라이언트 실행 파일scp.exe– SSH 세션에서 파일을 복사하는 도구ssh-keygen.exe– RSA SSH 인증 키 생성 도구ssh-agent.exe– RSA 키를 관리하는 에이전트ssh-add.exe– SSH 에이전트 데이터베이스에 키를 추가하는 도구
참고로 이전 버전의 Windows에도 OpenSSH를 설치할 수 있습니다. GitHub에서 Win32-OpenSSH를 다운로드하여 설치하면 됩니다.
Windows 10에서 기본 SSH 클라이언트 사용하기
SSH 클라이언트를 사용하려면 PowerShell 또는 cmd.exe를 실행합니다. ssh.exe의 사용 가능한 옵션과 구문은 다음 명령으로 확인할 수 있습니다:
ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] destination [command]
원격 서버에 SSH로 접속하려면 다음 명령을 사용합니다:
ssh username@host
SSH 서버가 표준 TCP/22가 아닌 다른 포트에서 실행 중이라면 포트 번호를 함께 지정합니다:
ssh username@host -p port
예를 들어 IP 주소가 192.168.1.102인 Linux 호스트에 root 계정으로 접속하려면 다음 명령을 실행합니다:
ssh root@192.168.1.102
첫 연결 시 호스트 키를 신뢰 목록에 추가할지 묻는 메시지가 표시됩니다. yes를 입력하고 Enter 키를 누르면 호스트 키 지문이 C:\Users\username\.ssh\known_hosts 파일에 저장됩니다.
이후 비밀번호 입력 프롬프트가 나타나는데, root 비밀번호를 입력하면 원격 Linux 서버의 콘솔이 열립니다(예시에서는 원격 서버에 CentOS가 설치되어 있습니다).
SSH를 사용하면 *Nix 계열 운영체제뿐 아니라 Windows에도 접속할 수 있습니다. Windows 10에 OpenSSH 서버를 구성하고 SSH 클라이언트로 접속하는 방법은 별도의 글에서 자세히 다룬 바 있습니다.
RSA 키 기반 SSH 인증을 사용하는 경우, 개인 키 파일 경로를 다음과 같이 지정하여 접속할 수 있습니다:
ssh root@192.168.1.102 -i "C:\Users\username\.ssh\id_rsa"
개인 키를 SSH-Agent에 등록해 두면 더욱 편리합니다. 먼저 ssh-agent 서비스를 활성화하고 자동 시작으로 설정합니다:
set-service ssh-agent StartupType 'Automatic'
Start-Service ssh-agent
그다음 개인 키를 ssh-agent 데이터베이스에 추가합니다:
ssh-add "C:\Users\username\.ssh\id_rsa"
이후에는 SSH 접속 시 RSA 키 경로를 지정하지 않아도 키가 자동으로 사용됩니다. RSA 키에 별도의 암호를 설정하지 않았다면 비밀번호 입력 없이 안전하게 서버에 접속할 수 있습니다:
ssh root@192.168.1.102
그 외 알아두면 유용한 SSH 옵션은 다음과 같습니다:
-C– 클라이언트와 서버 간 트래픽을 압축합니다(느리거나 불안정한 연결 환경에서 유용)-v– SSH 클라이언트의 모든 동작에 대한 상세 정보를 출력합니다-R/-L– SSH 터널을 통한 포트 포워딩에 사용됩니다
SCP.exe로 SSH를 통해 파일 주고받기
Windows 10 SSH 클라이언트 패키지에 포함된 scp.exe 도구를 사용하면 로컬 컴퓨터의 파일을 SSH 서버로 복사할 수 있습니다:
scp.exe "E:\ISO\CentOS-8.1.x86_64.iso" root@192.168.1.202:/home
디렉터리 전체 내용을 재귀적으로 복사할 수도 있습니다:
scp -r E:\ISO\ root@192.168.1.202:/home
반대로 원격 서버의 파일을 로컬 컴퓨터로 가져오는 것도 가능합니다:
scp.exe root@192.168.1.202:/home/CentOS-8.1.x86_64.iso c:\iso
RSA 키 인증을 미리 구성해 두면 파일 전송 시 비밀번호를 입력할 필요가 없습니다. 예약 작업으로 자동 파일 복사를 구성할 때 특히 유용한 기능입니다.
이처럼 Windows 10에서는 별도의 서드파티 프로그램이나 도구 없이도 기본 제공되는 SSH 클라이언트로 원격 서버에 직접 접속하고, scp를 이용해 손쉽게 파일을 주고받을 수 있습니다.