Windows Server 2016 SSH 사용하기

2 분 소요

이제 Window 서버에서도 SSH를 사용할 수 있다.

서버와 클라이언트의 운영체제

서버운영체제 : Windows Server 2016 Datacenter 64bit (ip: 192.168.88.128)

클라이언트운영체제 : Windows 10 Pro 64bit

1단계 : 클라이언트에 OpenSSH를 설치하자

아래 경로에서 OpenSSH-64.zip를 다운로드한다.

https://github.com/PowerShell/Win32-OpenSSH/releases/tag/v8.0.0.0p1-Beta

image-20191107193139867

C:\Program Files\OpenSSH-Win64 폴더에 압축을 풀어준다.

image-20191107193654127

파워셀 콘솔을 열고 C:\Program Files\OpenSSH-Win64 폴더로 이동

cd "C:\Program Files\OpenSSH-Win64"

OpenSSH 설치

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

2단계 : 서버에 OpenSSH를 설치하자

C:\Program Files\OpenSSH-Win64 폴더에 압축을 풀어준다.

image-20191107195811412

파워셀 콘솔을 열고 C:\Program Files\OpenSSH-Win64 폴더로 이동

cd "C:\Program Files\OpenSSH-Win64"

OpenSSH 설치

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

ssh에서 사용하는 22번 포트 방화벽에서 허용( Windows 2012 and above servers only )

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

위의 스크립트가 실행이 안되면 아래 스크립트로 실행( Windows 2008 R2 )

netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22

sshd 시작하기 (이렇게 하면 %programdata%\ssh 하위에 host Key들이 자동으로 생성됨.)

net start sshd

image-20191107200412022

서버가 재시작되었을 때에도 자동으로 sshd 서비스를 올리기 위한 설정

Set-Service sshd -StartupType Automatic

3단계 : 비밀번호를 이용해 OpenSSH로 클라이언트에서 서버로 접속해보기

ssh administrator@192.168.88.128

기본적으로 비밀번호를 입력 하여 서버에 접속할 수 있다.

image-20191107214742355

image-20191107215014421

그러나 이러한 비밀번호 입력방식은 보안상 좋지 않다. 비밀번호만 알면 어디서든 누구나 서버에 접근할 수 있기 때문이다.

4단계 : SSH키를 이용해 OpenSSH로 클라이언트에서 서버로 접속해보기

클라이언트에서의 작업

비밀키와 공개키를 생성한다. 비밀키는 클라이언트에 가지고 있고 공개키는 서버에 전송할 것이다.

ssh-keygen

키를 어디에 저장하겠냐고 묻는데 그냥 엔터치면 기본경로(C:\Users\SHW\.ssh\id_rsa) 에 저장된다.

passphrase를 입력하라고 하는데 그냥 공백보다는 적절한 값을 입력해주는것이 좋다.

image-20191107215816348

image-20191107215857115

id_rsa : 클라이언트에 가지고 있을 비밀키

이 비밀키를 ssh-agent를 통하여 클라이언트에 등록해준다.

#ssh-agent 시작
net start ssh-agent

#비밀키등록
ssh-add id_rsa

passphrase를 입력해주면 비밀키 등록이 완료 된다.

image-20191107222047317

id_rsa.pub : 서버에 전송할 공개키이다.

id_rsa.pub 파일을 메모장으로 열어보면 이런 내용이 들어있다.

image-20191107220207052

이 공개키의 내용을 Ctrl + All , Ctrl + C 한다.

서버에서의 작업

%systemdrive%\Users\<사용자>\\.ssh 경로를 찾아간다. 만약 .ssh 폴더가 생성이 안되어 있다면

폴더를 만들면 된다. 마우스 오른쪽 새폴더 만들기에서 .ssh폴더는 에러나면서 만들어 지지 않으므로 명령어로 만들어야 한다.

mkdir .ssh

.ssh 폴더에 authorized_keys 파일을 만든다.

type NUL > authorized_keys

image-20191107223241934

클라이언더트에서 Ctrl + C 했던 내용을 그대로 붙여넣어 authorized_keys 에 한줄 추가해 준다. 그리고 저장한다.

image-20191107223417606

sshd 를 재시작해준다.

#sshd 중지
net stop sshd

#sshd 시작
net start sshd

image-20191107223924063

클라이언트에서 서버 접속

ssh administrator@192.168.88.128

image-20191107224402777

공개키와 비밀키 설정이 끝났기 때문에 당연히 비밀번호 없이 접속이 될 줄 알았지만 여전히 비밀번호로 인증하라고 나온다.

서버에서의 작업

다시 한번 서버설정을 들어간다.

%programdata%\ssh 하위의 sshd_config 를 편집해야한다.

image-20191107224830920

가장아래쪽의 Match Group administrators 이하 부분을 주석처리 해줘야 한다.

#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

image-20191107225327135

또한 비밀번호로 인증받는 설정을 사용하지 않게 해줘야 한다.

중간쯤의 PasswordAuthentication 부분의 주석을 풀어 준다.

PasswordAuthentication no

image-20191107225307950

그리고 sshd_config 파일을 저장한 후 sshd 를 재시작해준다.

#sshd 중지
net stop sshd

#sshd 시작
net start sshd

image-20191107223924063

클라이언트에서 서버 접속

ssh administrator@192.168.88.128

image-20191107225822248

이제 비밀번호 없이 SSH Key 바로 서버로 접속이 가능하다. ^^

[참고 자료]

Open SSH 설치 방법

https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH

SSH Key로 로그인

https://github.com/PowerShell/Win32-OpenSSH/wiki/ssh.exe-examples

댓글남기기