Windows 10의 리눅스 서브시스템 사용하기(SSH 설정 및 접속)

개요

(빠른 적용을 위한 단계별 속성 가이드는 이 문서의 끝부분을 참고하세요.)

SSH 프로토콜을 이용하여 윈도우 시스템에 접속하는 방법은 윈도우용 SSH 서버 프로그램을 설치하는 방법이 있을 수 있고 최근 윈도우 10에서 제공하는 리눅스 하위 시스템을 설치 후 이 시스템에 접근하는 방법이 있습니다.

Windows 10 레드스톤1(RS1, 1607)부터 그동안 베타로 지원하고 있던 리눅스 시스템을 하위 시스템으로 제공하고 있습니다.



2018년 10월 1일 현재는 공식 빌드로는 레드스톤4이며 이 글에서 사용되고 있는 윈도우는 레드스톤 3(1709)입니다.

아래 설명은 위 세번째 리눅스 하위 시스템을 설치 후 SSH 사용에 대한 내용입니다.


리눅스 하위 시스템 설치

  1. 사용 중인 윈도우 10의 버전을 확인하여 리눅스 하위 시스템을 지원하는 버전으로 업그레이드합니다.설정 -> 시스템 -> 정보


  2. appwiz.cpl 명령을 실행하여 ‘프로그램 및 기능’을 실행합니다.
    Windows 기능 켜기/끄기를 실행한 후 ‘Linux용 Windows 하위 시스템’을 찾아 설치합니다.



  3. 시스템을 다시 시작하면서 하위 시스템 설치를 위한 설정을 마칩니다.
    윈도우 키 + R을 눌러 나오는 실행 대화 상자에서 ‘bash’ 명령을 실행합니다.


  4. A실제로는 하위 시스템 패키지가 설치되지 않았습니다.
    웹 브라우저로 ‘https://aka.ms/wslstore’를 방문하여 패키지 설치를 마무리합니다.


  5. Ubuntu 리눅스를 중심으로 설명을 진행하므로 Ubuntu를 선택한 후 설치를 진행합니다.


  6. 설치를 마친 후 사용자 이름과 암호를 설정해야 합니다. 윈도우 사용자 이름이 아니어도 좋습니다.
    여기에서 입력한 사용자가 Ubuntu의 기본 관리자가 되어 sudo 명령에 사용됩니다.



  7. 이로써 윈도우 10에 Ubuntu 리눅스 하위 시스템 설치가 완료되었습니다.

    이제부터는 Ubuntu의 일반적인 사용법에 따라 필요한 패키지를 설치 후 사용하면 됩니다.

SSH 서버 설치 및 운용

이 글을 쓰기 위해 설치한 Ubuntu 버전은 18.04 LTS(Bionic Beaver)이며 초기 설치 시 OpenSSH 서버가 설치되어 있지만 몇가지 필요한 설정을 해야 합니다.

  1. 호스트 키 생성
    ‘ssh-keygen -A’ 명령으로 호스트 키가 /etc/ssh 경로에 생성되도록 합니다.

    test@DESKTOP-B38MLS1:/etc/ssh$ sudo /etc/init.d/ssh stop
    test@DESKTOP-B38MLS1:/etc/ssh$ sudo ssh-keygen -A
    
  2. sshd_config 설정
    기본값으로 공개 키 인증만 허용하고 있습니다. 공개 키 인증에 대해서는 Xshell 도움말을 참고하시기 바랍니다. 다음은 보안상으로는 권장하고 있지 않지만 설치 초기 원활한 접속을 해 보기 위해 사용자 암호를 허용해 보겠습니다. 다음은 이를 위한 sshd_config 설정입니다.

    test@DESKTOP-B38MLS1:/etc/ssh$ sudo vi /etc/ssh/sshd_config
    …
    # To disable tunneled clear text passwords, change to no here!
    PasswordAuthentication yes
    …
    test@DESKTOP-B38MLS1:/etc/ssh$ sudo /etc/init.d/ssh start
    


    호스트 키로서 rsa 키와 ecdsa 키를 생성하지 않아 해당 키를 적재할 수 없다는 메시지가 나왔습니다. 해당 키를 생성해 넣거나 sshd_config에서 해당 키 사용을 하지 않겠다는 설정을 하면 위 메시지는 나오지 않습니다. SSH 사용에는 문제가 없는 내용입니다.

Xshell에서 하는 접속

테스트를 위해 현재 시판 중인 Xshell 6.0을 사용하였습니다.


  1. 접속

    [C:\~]$ ssh localhost
    Host 'localhost' resolved to ::1.
    Connecting to ::1:22...
    Connection established.
    To escape to local shell, press 'Ctrl+Alt+]'.
    …


  2. 처음하는 접속이므로 해당 서버의 호스트 키에 대한 정보를 저장할지 여부를 묻습니다. ‘한 번 수락’이나 ‘수락 및 저장’을 선택하여 접속을 진행합니다.


  3. Ubuntu 설치 시 생성하였던 사용자 이름을 입력합니다. Ubuntu 설치 시 생성하였던 사용자의 암호를 입력합니다. 위 sshd_config에서 암호 인증을 허용하여 ‘Password’란이 활성화되었습니다.


  4. 다음은 최종 로그인이 완료된 후의 화면입니다.


  5. 참고로 윈도우 파일 시스템은 /mnt/c에 마운트되어 있습니다.

    test@DESKTOP-B38MLS1:~$ df -h
    Filesystem Size Used Avail Use% Mounted on
    rootfs 40G 15G 25G 38% /
    none 40G 15G 25G 38% /dev
    none 40G 15G 25G 38% /run
    none 40G 15G 25G 38% /run/lock
    none 40G 15G 25G 38% /run/shm
    none 40G 15G 25G 38% /run/user
    C: 40G 15G 25G 38% /mnt/c
    test@DESKTOP-B38MLS1:~$
    


속성 단계별 가이드

  1. 윈도우 10 레드스톤 1 이후 버전 설치

  2. ‘프로그램 및 기능 => Windows 기능 켜기/끄기’에서 ‘Linux용 Windows 하위 시스템’ 설치

  3. 웹 브라우저에서 ‘https://aka.ms/wslstore’ 방문 후 Ubuntu 선택하여 설치 진행 => bash 셸 윈도우가 실행되면서 설치가 진행됨.

  4. bash 셸에서 호스트 키 생성. 암호 입력하지 않아야 함.(또는 ssh -A 명령으로 가능한 모든 호스트 키 자동 생성)

    test@DESKTOP-B38MLS1:$ sudo ssh-keygen -t ed25519
    Generating public/private ed25519 key pair.
    Enter file in which to save the key (/root/.ssh/id_ed25519): 
    /etc/ssh/ssh_host_ed25519_key
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    …
  5. /etc/sshd_config를 수정하여 Password 인증 허용(선택)

    test@DESKTOP-B38MLS1:$ sudo vi /etc/ssh/sshd_config
    …
    # To disable tunneled clear text passwords, change to no here!
    PasswordAuthentication yes
    …
    
  6. ssh 서버 구동

    test@DESKTOP-B38MLS1:$ sudo /etc/init.d/ssh start
  7. Xshell에서 접속 후 사용

    [C:\~]$ ssh localhost
    
    Host 'localhost' resolved to ::1.
    Connecting to ::1:22...
    Connection established.
    To escape to local shell, press 'Ctrl+Alt+]'.
    …