이 문서는 최신 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 기능 켜기/끄기 를 클릭합니다. |
5 | Linux용 Windows 하위 시스템(베타)를 체크하고 확인을 눌러 필요 기능을 설치합니다. (재부팅 과정이 필요합니다.) |
6 | Win+R – cmd – bash 입력 또는 Win+R – bash를 입력하여 bash shell을 시작합니다. |
7 | Ubuntu 설치를 물을 경우 y 를 입력하여 설치를 진행합니다. (‘파일 시스템을 추출하는 중’에서 계속 진행되지 않을 경우 엔터를 눌러 refresh를 시도해봅니다.) |
8 | 사용자 계정을 생성합니다. |
9 | root 계정의 패스워드를 설정합니다. (sudo passwd root) |
10 | root 계정으로 전환합니다. (su – root) |
11 | 우분투 패키지를 업데이트, 업그레이드합니다. sudo apt-get update sudo apt-get upgrade |
12 | sshd_config 파일을 에디터로 엽니다. (vi /etc/ssh/sshd_config) |
13 | Windows 10에서 자체 내장된 SSH 서버와 포트 번호가 충돌하기 때문에 bash shell상에서는 22번 포트로 SSH에 연결할 수 없습니다. Port 22 를 Port [다른 포트 번호] 로 설정합니다. |
14 | sshd_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 [호스트명] |
16 | SSH 서비스를 재시작합니다. sudo /etc/init.d/ssh restart 또는 sudo service ssh restart |
17 | Xshell (SSH 접속 프로그램)을 실행하여 아래와 같이 연결합니다. – 로컬 호스트에서 연결할 경우 주소표시줄에 ssh://[계정명]:[패스워드]@127.0.0.1 [포트번호] 또는 터미널창에 ssh [계정명]:[패스워드]@127.0.0.1 [포트번호] 를 입력합니다. – 외부 호스트에서 연결할 경우 주소표시줄에 ssh://[계정명]:[패스워드]@[IP주소] [포트번호] 또는 터미널창에 ssh [계정명]:[패스워드]@[IP주소] [포트번호] 를 입력합니다. |
SSH 연결이 정상 작동하는 것을 확인할 수 있습니다. |