Windows Server 2016 SSH 사용하기
이제 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
C:\Program Files\OpenSSH-Win64 폴더에 압축을 풀어준다.
파워셀 콘솔을 열고 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 폴더에 압축을 풀어준다.
파워셀 콘솔을 열고 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
서버가 재시작되었을 때에도 자동으로 sshd 서비스를 올리기 위한 설정
Set-Service sshd -StartupType Automatic
3단계 : 비밀번호를 이용해 OpenSSH로 클라이언트에서 서버로 접속해보기
ssh administrator@192.168.88.128
기본적으로 비밀번호를 입력 하여 서버에 접속할 수 있다.
그러나 이러한 비밀번호 입력방식은 보안상 좋지 않다. 비밀번호만 알면 어디서든 누구나 서버에 접근할 수 있기 때문이다.
4단계 : SSH키를 이용해 OpenSSH로 클라이언트에서 서버로 접속해보기
클라이언트에서의 작업
비밀키와 공개키를 생성한다. 비밀키는 클라이언트에 가지고 있고 공개키는 서버에 전송할 것이다.
ssh-keygen
키를 어디에 저장하겠냐고 묻는데 그냥 엔터치면 기본경로(C:\Users\SHW\.ssh\id_rsa) 에 저장된다.
passphrase를 입력하라고 하는데 그냥 공백보다는 적절한 값을 입력해주는것이 좋다.
id_rsa : 클라이언트에 가지고 있을 비밀키
이 비밀키를 ssh-agent를 통하여 클라이언트에 등록해준다.
#ssh-agent 시작
net start ssh-agent
#비밀키등록
ssh-add id_rsa
passphrase를 입력해주면 비밀키 등록이 완료 된다.
id_rsa.pub : 서버에 전송할 공개키이다.
id_rsa.pub 파일을 메모장으로 열어보면 이런 내용이 들어있다.
이 공개키의 내용을 Ctrl + All , Ctrl + C 한다.
서버에서의 작업
%systemdrive%\Users\<사용자>\\.ssh 경로를 찾아간다. 만약 .ssh 폴더가 생성이 안되어 있다면사용자>
폴더를 만들면 된다. 마우스 오른쪽 새폴더 만들기에서 .ssh폴더는 에러나면서 만들어 지지 않으므로 명령어로 만들어야 한다.
mkdir .ssh
.ssh 폴더에 authorized_keys 파일을 만든다.
type NUL > authorized_keys
클라이언더트에서 Ctrl + C 했던 내용을 그대로 붙여넣어 authorized_keys 에 한줄 추가해 준다. 그리고 저장한다.
sshd 를 재시작해준다.
#sshd 중지
net stop sshd
#sshd 시작
net start sshd
클라이언트에서 서버 접속
ssh administrator@192.168.88.128
공개키와 비밀키 설정이 끝났기 때문에 당연히 비밀번호 없이 접속이 될 줄 알았지만 여전히 비밀번호로 인증하라고 나온다.
서버에서의 작업
다시 한번 서버설정을 들어간다.
%programdata%\ssh 하위의 sshd_config 를 편집해야한다.
가장아래쪽의 Match Group administrators 이하 부분을 주석처리 해줘야 한다.
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
또한 비밀번호로 인증받는 설정을 사용하지 않게 해줘야 한다.
중간쯤의 PasswordAuthentication 부분의 주석을 풀어 준다.
PasswordAuthentication no
그리고 sshd_config 파일을 저장한 후 sshd 를 재시작해준다.
#sshd 중지
net stop sshd
#sshd 시작
net start sshd
클라이언트에서 서버 접속
ssh administrator@192.168.88.128
이제 비밀번호 없이 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
댓글남기기