“Windows 10의 Ubuntu에 대한 배쉬”에 SSH로 연결하려면 어떻게해야합니까?


99

"Bash on Ubuntu on Windows"가 설치되어 작동하는 Windows 10 Anniversary Edition이 있습니다. 이 Ubuntu 인스턴스에 SSH로 연결할 수 있기를 원하지만 openssh-server가 설치 및 구성되어 있고 포트 2200에서 수신 대기 중이지만 "localhost : 2200"에 ssh하려고하면 "서버가 예기치 않게 나타납니다. 닫힌 네트워크 연결 ".

누구든지 이것을 성공적으로 달성 할 수 있었습니까?

여기에 이미지 설명을 입력하십시오


Process Hacker를 사용하고 'Network'탭을 보면 sshd (Windows 10의 Ubuntu에서 실행)가 2200 로컬 포트에서 수신 대기 중임을 나타냅니다.
Mick

그리고 시스템의 IP 주소에 연결하려고하면? 우분투는 종종 루프백 주소를 윈도우와 다르게 매핑하고 127.0.0.0/8 (종종 127.0.1.1)의 추가 값을 사용합니다
Frank Thomas

@Ramhound : 사실이 아닙니다. Localhost는 localhost이며 모든 것이 공유됩니다. links http://localhost/Linux 서브 시스템에서 완벽하게 수행 할 수 있으며 Windows 측 IIS에서 제공하는 웹 페이지를 볼 수 있습니다 . 분리가 없습니다.
Sami Kuhmonen

답변:


120

나는 그것을 작동시켰다; 방법은 다음과 같습니다.

ssh-server를 제거한 후 다시 설치하고 시작되었는지 확인하십시오.

sudo service ssh --full-restart

루트 액세스를 끄고 구성 파일에 다른 사용자를 추가했는지 확인하십시오.

예상대로 127.0.0.1:22의 하위 시스템에 연결할 수있었습니다. 이것이 도움이되기를 바랍니다.

스크린 샷이 있습니다.

  1. sudo apt-get purge openssh-server
  2. sudo apt-get install openssh-server
  3. sudo nano /etc/ssh/sshd_config 설정하여 루트 로그인을 허용하지 않습니다 PermitRootLogin no
  4. 그런 다음 그 아래에 다음과 같은 줄을 추가하십시오.

    AllowUsers yourusername

    비밀번호를 사용하여 로그인하려면 PasswordAuthentication로 설정되어 있는지 확인하십시오 yes.

  5. 다음을 추가 / 수정하여 권한 분리를 비활성화하십시오. UsePrivilegeSeparation no

  6. sudo service ssh --full-restart

  7. PuTTY와 같은 ssh 클라이언트를 사용하여 Windows에서 Linux 서브 시스템에 연결하십시오.


2
나는 그렇게 할 필요가 없었습니다 – 이상합니다 .. 그러나 이것은 아직 베타 단계에 있으므로 결과가 다를 수 있음을 기억하십시오
Master Azazel

7
또한 나는에 있었다 : 서비스 제어판에서 / 비활성화 윈도우 10 SSH 서버 브로커 서비스를 중지하고 설정 : PubkeyAuthentication을 아니오 sshdconfig에
math0ne

6
방화벽 규칙도 추가해야했습니다. 기존 규칙이 있었지만 이는 Windows SSH 서버 프록시에만 적용되었으며 해당 서비스를 중지하면 방화벽은 포트 22의 트래픽을 차단했습니다.
Pierre-Luc Paour

2
또한 (포트 변경했습니다 Port 2222/etc/ssh/sshd_config창하지 SSH 서버 포트 (22)에 연결 집어 경우, 파일)
arod

2
@ArtemRussakovskii bash 창을 닫을 때마다 전체 Linux 하위 시스템을 중지합니다.
Sakher

27

Windows 구현은 chroot를 제공하지 않으므로 / etc / ssh / sshd_config를 수정해야합니다.

UsePrivilegeSeparation no

또한 useradd 명령을 사용하여 사용자를 작성해야합니다.


4
이 단계는 작동시키기 위해 필수적이었습니다.
Mick

1
궁금해서 freebsd.org/cgi/man.cgi?sshd_config(5) 에서 찾았습니다 . UsePrivilegeSeparation :
krs013

sshd (8)가 들어오는 네트워크 트래픽을 처리 할 권한없는 자식 프로세스를 만들어 권한을 분리할지 여부를 지정합니다. 인증에 성공하면 인증 된 사용자의 권한이있는 다른 프로세스가 작성됩니다. 권한 분리의 목표는 권한이없는 프로세스 내에 손상이 포함되어 권한 상승이 방지되는 것입니다. 인수는 "yes", "no" '또는 "sandbox"여야합니다. UsePrivilegeSeparation이 "sandbox"로 설정된 경우 사전 인증 권한이없는 프로세스에는 추가 제한이 적용됩니다. 기본값은 "sandbox"입니다.
krs013


24

위의위원회의 답변은 훌륭했습니다. 그들에게 감사합니다. 그리고 그들은 매우 가까워졌지만 여전히 127.0.0.1 문제로 Connection이 닫혔습니다 .

나는 이 게시물 에서 추가 단계를 발견하고 추가 하여 혹을 극복했습니다. 특히, 처음부터 시작하여 이것을 첫 번째 / 첫 번째 단계 ( -purge 한정 자라고 함 )로 추가하면 마침내이 문제의 변형이 해결되었습니다.

sudo apt-get remove --purge openssh-server
sudo apt-get install openssh-server
sudo vi /etc/ssh/sshd_config # Change Port from 22 to 2222 (Just in case MS-Windows is using port 22; which, by the way, SSH on MS-Windows can be disabled if you want to use port 22).
sudo service ssh --full-restart

다시 한 번 감사드립니다.이 추가가 다른 사람들에게 도움이되기를 바랍니다. = :)


2
왜 공감해야합니까? 언급 한대로이 지침만으로는 제 경우에는 효과가 없었으며 위의 추가 단계가 효과적이었습니다. 나는 그것을 얻지 못한다.
NYCeyes

1
"지원되는 인증 방법을 사용할 수 없습니다 (서버 전송 : 공개 키)"라는 매우 다른 오류가 발생하여이 단계로 해결했습니다.
Mike Viens

2
어떤 이유로 든, Windows는 포트 2222에서 실행 중임을 인식하지 못했습니다. 다른 프로세스를 사용하지 않았으며 포트 충돌의 증거가 없었지만 포트를 변경하자마자 포트가 변경되었습니다. 작업.
forresthopkinsa

포트 2222는 다른 서비스를 실행하지 않지만 22는 작동하지 않습니다. 22는 작동합니다. 여러 SSH 연결을 원하기 때문에 문제가됩니다.
mFeinstein

4

저는 Azazel 마스터가 제안한대로 문제를 해결했습니다. 포트에 연결할 때 22비밀번호를 요청했지만 Linux 하위 시스템에서 설정 한 비밀번호가 작동하지 않았습니다.

해결 방법 # 1 :
SSH 포트를 변경 /etc/ssh/sshd_config하고 서브 시스템에서 SSH 서버를 다시 시작하십시오.

해결 방법 # 2 :
Windows의 서비스 제어판에서 "SSH 서버 브로커 서비스"를 비활성화 / 중지하고 서브 시스템에서 SSH 서버를 다시 시작하십시오.


1
이것은 22 번 포트의 창문에서 무언가가 실행중인 경우에만 적용됩니다.
Master Azazel

3
당신은 win10 내 기본 설치에 참조로 Ofcz, 22에서 실행중인 서비스 ... 거기
scotty86

2

ssh를 사용할 수없는 이유는 서버에서의 로깅에 표시됩니다.

chroot ( "/ var / run / sshd") : 기능이 구현되지 않음 [preauth]

리눅스 서브 시스템은 chroot를 구현하지 않은 것으로 보이며 ssh 서버가이를 필요로하므로 연결이 허용되지 않습니다.


3
맞습니다. 그러나 다른 답변은 chroot 요구 사항을 해결하는 방법을 설명합니다.
Mahmoud Al-Qudsi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.