Windows 10 Linux 하위 시스템 SSH 클라이언트 자원을 일시적으로 사용할 수 없음


24

Windows 10 Linux Subsystem 내 원격 서버로 ssh하려고합니다. MS Windows 10 Home Insider Preview 빌드 14366을 사용하고 있습니다.

명령 프롬프트에서 다음을 입력하십시오.

ssh user@domain.com

ssh 명령을 입력 한 후 몇 초 후에 다음 메시지가 표시됩니다.

SSH : 호스트 domain.com 포트 22에 연결 : 리소스를 일시적으로 사용할 수 없음

Git Bash 내에서 Putty와 ssh를 사용하여 성공적으로 연결할 수 있습니다.

따라서 문제가 로컬 PC, 특히 Linux 하위 시스템에 있다고 생각합니다. Linux 환경에서는 여전히 매우 친환경적이며이 메시지를 해석하는 방법을 잘 모르겠습니다. 어떤 리소스를 사용할 수 없으며, 사용할 수 있도록하려면 어떻게해야합니까?


첫 번째 추측 : Windows 방화벽? ps> 및 수퍼 유저에 오신 것을 환영합니다 :) Google은 포크와 관련이있는 것 같습니다. 제발 편집 게시물을 당신이 오류를 제공 명령 줄을 추가합니다.
Hastur


AFAIK Linux 하위 시스템은 '정상적인'Windows 10이 아닌이 버전에서만 사용할 수 있기 때문에 Windows 10의 Insider Preview 빌드를 사용하고 있는지 확인하십시오. 그렇지 않으면 Cygwin을 사용하고 있습니까?
gogoud

@ggoud-운영 체제를 포함하도록 질문을 업데이트했습니다. 실제로 Insider Preview 빌드입니다.
kell

2
또한이 문제가 있습니다. 그것은으로 ssh를 같은 지원하는 모든 프로그램에 영향을 미치는 gitapt-get
scicalculator

답변:


9

내가 알 수있는 한, 이것은 WSL의 버그입니다. Microsoft가 다음 빌드에서이 문제를 해결하기를 바랍니다. 그러나 지금은 약간 못생긴 해킹을 사용할 수 있습니다.

업데이트 # 1 : 확실히 버그. Github 에서이 문제 를 발견 했습니다 . 이 모든 것을 끝내고 싶지 않다면 쉘을 다시 시작하는 해결책을 제안했습니다.

TL; DR SSH 설정을 끝내려면 이것을 추가하십시오 (보통 ~/.ssh/config) :

Host *
    ProxyCommand nc %h %p %r

그것이 작동하는 이유는 다음과 같습니다 우리의 SSH 문제 때문에 방화벽 문제가되지 않습니다 nctelnet작업 동일한 호스트와 포트 (시도에 telnet <host> <port>nc <host> <port>: 당신은 같은 것을 참조한다 SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.7). 이것은 우리가 유리하게 사용할 수 있습니다.

SSH를 사용하면 표준 입력을 받아 ProxyCommand옵션을 통해 서버의 포트로 보내는 프록시를 사용할 수 있습니다. 일반적으로 점프 호스트라고도하는 중간에있는 요새 SSH 서버를 사용하여 보호 된 호스트에 네트워크로 터널링하는 데 사용됩니다 (자세한 내용은 이 링크 참조 ).

이 핵은 SSH에게 점프 호스트가없는 프록시를 사용하도록 지시합니다. 따라서 모든 네트워크 리소스 할당을 Netcat으로 푸시하여 SSH의 TCP 리소스 할당에 실패했습니다. SSH는 네트워크 연결없이 SSH 작업을 수행하며 Netcat은 TCP 연결을 통해 원시 데이터를 SSH 서버로 보냅니다.

경고 : 이렇게하면 ProxyCommand모든 호스트의가 수정되므로을 사용하는 다른 SSH 구성 호스트와 상호 작용하는 방법을 모르겠습니다 ProxyCommand. 이것을 테스트 할 수있는 몇 대의 서버가 있으며이 답변을 결과로 업데이트 할 것입니다. 유해한 부작용이 없을 가능성이 있지만 보장 할 수는 없습니다.

업데이트 # 2 : 몇 대의 서버로 몇 가지 테스트를 수행했는데 작동하는 것 같습니다. SSH는 여러 항목이 적용될 때 구성에서 최상위 항목을 사용합니다. 따라서이 ProxyCommand핵 위에 존재 하는 기존 선물은 그것을 대체 할 것입니다. 새 SSH 명령이 실행될 때 SSH 구성을 다시 읽고 다른 항목이없는 경우 ProxyCommandSSH는 hack을 사용 ProxyCommand하여 "가장 바깥 쪽"SSH 세션에만 적용 할 수 있습니다. 경고의 말씀 : 설정 파일의 맨 위에 (또는 SSH하려는 항목 위에) 해킹을 넣으면 SSH 세션이 필요한 SSH 세션이 ProxyCommand다른 세션을 무시 ProxyCommand하고 대신 호스트 주소를 확인하고 연결을 시도합니다. Netcat으로 직접.


세부 사항 @ computergeek125에 감사드립니다. 불행히도, 제안 된대로 구성을 설정 한 후에도 여전히 같은 메시지가 나타납니다. 호스트 domain.com 포트 22에 연결 : 자원을 일시적으로 사용할 수 없음 자세한 출력을 위해 nc -v <host> <port>를 실행할 때 같은 오류 : 리소스를 일시적으로 사용할 수 없습니다. 확실하지 않은 무언가가 잘못되었을 수 있습니다. Git bash 쉘을 사용하는 ssh 문제가 없으므로 지금은 그것을 고수 할 것입니다. BTW, 내 시스템은 현재 빌드 14393이므로 질문 당시 버전의 버그 인 경우 여전히 27 빌드 버그입니다.
kell

흥미 롭습니다. 나는 그 빌드에 대해 약간의 연구를해야 할 것이다. 나는 당시에 14903을 뛰었습니다. (지금은 최대 14905입니다.) 내가 가진 빌드에서 고정 된 것일 수 있습니다.
computergeek125

SSH 구성을 어떻게 편집합니까? Windows 콘솔의 bash vi ~/.ssh/config에서 빈 파일을 열어 보았습니다 . 나는 당신의 명령을 붙여 넣었지만 저장하려고 할 때 (esc-> :-> wq) 나에게 말합니다"~/.ssh/config" E212: Cannot open file for writing
Dan

그래, 이상해 어떤 Windows 빌드를 실행하고 있으며 어떤 결과가 ls -al ~/.ssh있습니까?
computergeek125

3

이것은 또한 나에게 문제였으며, bash의 모든 인터넷 트래픽을 차단하는 내 (Symantec) 방화벽이었습니다.

프로세스를 인식하지 못하는 타사 방화벽 공급자의 일반적인 문제인 것 같습니다.

https://github.com/Microsoft/BashOnWindows/issues/809

방화벽을 비활성화하면 정상적으로 작동합니다. 현재 더 나은 솔루션을 찾을 수 없습니다.



0

나중에 참조 할 수 있도록 Nginx를 설치하면 기본적으로 SSH가 차단되지 않고 "자원을 일시적으로 사용할 수 없습니다"라는 오류 메시지가 표시됩니다.

sudo ufw 허용 ssh


Windows 10 자체에는 방화벽이 있습니다. 왜 그렇게 제안 했습니까?
Biswapriyo

나는 동일한 문제가 있었기 때문에 저도 같은 문제가 향후 사용자를 위해 것을 제안하고있어 Nginx의 서버에 SSH를 차단 되었기 때문에이었다
andrerpena
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.