활용하기

WSL(Windows Subsystem for Linux)로 SSH 연결하기

이 문서는 최신 Windows 버전에서 더 이상 작동하지 않습니다. 아래 포스트에서 더 자세한 내용으로 갱신되었습니다 : https://jootc.com/p/20171224581

WSL(Windows 10 Bash Shell) SSH 연결 방법 로컬 쉘(또는 외부 호스트)에서 로컬 서버를 통해 SSH를 연결하는 방법을 설명합니다.
* Win10 Build 14393.0 기준
1다음과 같은 사용 환경을 준비합니다.   Windows 10 x64 버전 1607 (Windows 1주년 Redstone1 업데이트)
2설정 – 업데이트 및 복구 – 개발자용 탭에서 ‘개발자 기능 사용’에 있는
3개의 버튼 중에서 ‘개발자 모드’를 체크합니다.
3개발자 모드 관련 패키지 설치가 완료되기까지 기다립니다.
4프로그램 및 기능 (제어판 – 프로그램 – 프로그램 및 기능 또는 Win+R – appwiz.cpl)에서 Windows 기능 켜기/끄기 를 클릭합니다.
5Linux용 Windows 하위 시스템(베타)를 체크하고 확인을 눌러 필요 기능을
설치합니다. (재부팅 과정이 필요합니다.)
6Win+R – cmd – bash 입력 또는 Win+R – bash를 입력하여
bash shell을 시작합니다.
7Ubuntu 설치를 물을 경우 y 를 입력하여 설치를 진행합니다.
(‘파일 시스템을 추출하는 중’에서 계속 진행되지 않을 경우
엔터를 눌러 refresh를 시도해봅니다.)
8사용자 계정을 생성합니다.
9root 계정의 패스워드를 설정합니다. (sudo passwd root)
10root 계정으로 전환합니다. (su – root)
11우분투 패키지를 업데이트, 업그레이드합니다.
sudo apt-get update
sudo apt-get upgrade
12sshd_config 파일을 에디터로 엽니다. (vi /etc/ssh/sshd_config)
13Windows 10에서 자체 내장된 SSH 서버와 포트 번호가 충돌하기 때문에
bash shell상에서는 22번 포트로 SSH에 연결할 수 없습니다.
Port 22Port [다른 포트 번호] 로 설정합니다.
14sshd_config에서 아래 내용과 동일하게 설정하고 저장합니다.
ListenAddress 0.0.0.0 (주석 제거)
다른 IP에서 접근하도록 허용합니다. 0.0.0.0은 모든 주소를 말합니다.
UsePrivilegeSeparation no
WSL이 chroot()를 지원하지 않기 때문에 no 값으로 설정해야 합니다.
PasswordAuthentication yes
SSH 연결시 패스워드 인증과정을 허용합니다.
15현재 호스트명이 /etc/hosts에 등록되지 않았을 경우
Connection closed by foreign host. 오류가 발생할 수 있습니다.
/etc/hosts에서 아래 정보를 추가합니다.
127.0.0.1 [호스트명]
16SSH 서비스를 재시작합니다.
sudo /etc/init.d/ssh restart
또는
sudo service ssh restart
17Xshell (SSH 접속 프로그램)을 실행하여 아래와 같이 연결합니다.
– 로컬 호스트에서 연결할 경우
주소표시줄에 ssh://[계정명]:[패스워드]@127.0.0.1 [포트번호] 또는
터미널창에 ssh [계정명]:[패스워드]@127.0.0.1 [포트번호] 를 입력합니다.
– 외부 호스트에서 연결할 경우
주소표시줄에 ssh://[계정명]:[패스워드]@[IP주소] [포트번호] 또는
터미널창에 ssh [계정명]:[패스워드]@[IP주소] [포트번호] 를 입력합니다.
SSH 연결이 정상 작동하는 것을 확인할 수 있습니다.
JooTC

안녕하세요. 테크놀로지에 관심이 많은 블로거입니다.

Recent Posts

Zalgo 텍스트와 이를 방지하는 방법

인터넷 커뮤니티 사이트에서 게시글이나 댓글에 간혹 장난을 목적으로 작성된 특이한 글자를 볼 수 있습니다. 위…

4주 ago

리눅스 kill, killall 명령어 – 특정 프로세스 종료하기

리눅스 명령어 - kill, killall 리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는…

4주 ago

JavaScript typeof null이 ‘object’인 이유

JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적…

4주 ago

Mocha Error: Resolution method is overspecified. 해결 방법

NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이…

1개월 ago

윈도우 11 설치 시 Microsoft 계정 로그인 없이 로컬 계정 만들기

언제부턴가 윈도우 11을 처음 설치할 때 마이크로소프트(Microsoft) 계정 로그인을 강제로 요구하게 되었습니다. 물론 마이크로소프트 계정이…

6개월 ago

에어팟 프로 2 케이스 스피커 소리를 완전히 끄는 방법

애플 에어팟 프로 2 (AirPods Pro 2) 케이스에는 스피커가 내장되어 있습니다. 그런데 간혹 아무 것도…

9개월 ago