힘내 SSH 오류 :“호스트에 연결 : 파일 번호가 잘못되었습니다”


153

나는 git guide를 따르지 만 github에 연결하려고 할 때이 이상한 문제가 있습니다.

$ ssh -v git@github.com
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /c/Documents and Settings/mugues/.ssh/config
debug1: Applying options for github.com
debug1: Connecting to github.com [207.97.227.239] port 22.
debug1: connect to address 207.97.227.239 port 22: Attempt to connect timed out without establishing a connection
ssh: connect to host github.com port 22: Bad file number

이것은 .ssh 아래의 구성 파일입니다.

Host github.com
    User git
    Hostname github.com
    PreferredAuthentications publickey
    IdentityFile "C:\Documents and Settings\mugues\.ssh\id_rsa"
    TCPKeepAlive yes
    IdentitiesOnly yes

어떤 생각?


오늘이 있어요. 그리고 Github가 다운 된 것 같습니다.
ysrb

TL; DR : "잘못된 파일 번호"를 무시하십시오. 찾고있는 정보가 해당 메시지에 없습니다. 그것은 무엇이든 의미 할 수 있습니다. stackoverflow.com/a/22788046
Stéphane Gourichon

답변:


186

이 문제를 직접 겪은 후에 나에게 맞는 해결책을 찾았습니다.

에러 메시지:

    ssh -v git@github.com
    OpenSSH_5.8p1, OpenSSL 1.0.0d 8 Feb 2011
    debug1: Connecting to github.com [207.97.227.239] port 22.
    debug1: connect to address 207.97.227.239 port 22: Connection timed out
    ssh: connect to host github.com port 22: Connection timed out
    ssh: connect to host github.com port 22: Bad file number

MINGGW 쉘을 사용하는 창에서는 잘못된 파일 번호 메시지 만 표시됩니다. Linux 사용자는 시간 초과됩니다.

문제:

SSH는 아마도 포트 22에서 차단되었을 것입니다.

    $nmap -sS github.com -p 22
    Starting Nmap 5.35DC1 ( http://nmap.org ) at 2011-11-05 10:53 CET
    Nmap scan report for github.com (207.97.227.239)
    Host is up (0.10s latency).
    PORT   STATE    SERVICE
    22/tcp ***filtered*** ssh

    Nmap done: 1 IP address (1 host up) scanned in 2.63 seconds

보시다시피 상태는 필터링 됨으로, 무언가가 차단되고 있음을 의미합니다. 포트 443에 SSH를 수행하여이 문제를 해결할 수 있습니다 (방화벽 / isp는이를 차단하지 않습니다). github.com 대신 "ssh.github.com"으로 ssh를 실행해야합니다. 그렇지 않으면 ssh 서버 대신 웹 서버에보고합니다. 이 문제를 해결하는 데 필요한 모든 단계는 다음과 같습니다.

해결책:

(먼저 http://help.github.com/win-set-up-git/에 설명 된대로 키를 생성했는지 확인 하십시오 )

~ / .ssh / config 파일을 작성하십시오 (사용자 디렉토리에있는 ssh 구성 파일. Windows의 경우 %USERPROFILE%\.ssh\config

다음 코드를 붙여 넣으십시오.

    Host github.com
    User git
    Hostname ssh.github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa
    Port 443

파일을 저장하십시오.

평소처럼 ssh를 수행하십시오.

$ssh -T github.com 
    $Enter passphrase for key '.......... (you can smile now :))

사용자 이름이나 포트 번호를 제공 할 필요는 없습니다.



1
"다음 코드를 붙여 넣으십시오."에서 이해할 수 없습니다. 잘못된 파일 번호를 해결하려면 어떻게해야합니까? 메모장 파일을 만들어 메모장 파일로 저장해야합니까?
David Dimalanta

27
내가 대신받을ssh: connect to host ssh.github.com port 443: Bad file number
cqcn1991

이것은 이전에 작동 한 설정이 갑자기 작동을 멈출 때 bitbucket.org에서도 작동했습니다. 가장 중요한 부분은 SSH 구성 파일을 변경하는 것뿐이었습니다.
Kevin Condon

2
사용하는 경우 .ssh/config, Windows 7에서 파일을 확인 당신은 사용자 환경적인 바르가 HOME%USERPROFILE%내 SSH를 찾을 수 없을 때> 저를 도왔 - 같은 값을
Jook

40

핵심 정보는 @Sam의 답변으로 작성되었지만 실제로 중요하지는 않으므로 명확하게 설명하겠습니다.

"잘못된 파일 번호"는 정보가 아니며 Windows에서 git ssh를 실행하는 신호 일뿐입니다.

-v스위치 없이도 나타나는 라인 :

ssh: connect to host (some host or IP address) port 22: Bad file number

실제로는 관련이 없습니다 .

그것에 집중하면 실제 문제가 무엇인지에 대한 힌트가 아니라 Windows에서 git의 ssh를 실행하는 효과에 따라 시간을 낭비하게됩니다. git 또는 ssh 설치 또는 구성이 잘못되었다는 신호조차 아닙니다. 실제로 무시하십시오 .

Linux에서 매우 동일한 명령으로 대신이 메시지가 생성되어 문제에 대한 실제 힌트를 얻었습니다.

ssh: connect to host (some host or IP address) port 22: Connection timed out

실제 해결책 : "불량 파일 번호"를 무시하고 자세한 정보 얻기

-v명령 행에 추가되는 행에 중점을 둡니다 . 제 경우에는 다음과 같습니다.

debug1: connect to address (some host or IP address) port 22: Attempt to connect timed out without establishing a connection

내 문제는 IP 주소의 오타 였지만 귀하의 것과 다를 수 있습니다.

"잘못된 파일 번호"에 대한 질문입니까, 아니면 연결 시간이 초과 될 수있는 여러 가지 이유에 대한 질문입니까?

누군가 "실제 파일 번호"가 실제 이유가 "연결 시간 초과"인 경우에만 나타나는 것을 증명할 수 있으면 연결 시간이 초과 된 이유를 해결하는 것이 좋습니다.

그 때까지 "불량 파일 번호"는 일반적인 오류 메시지 일 뿐이며 "무시하고 다른 오류 메시지를 찾으십시오"라고 말하면이 질문에 완전히 대답 할 수 있습니다.

편집 : Qwertie는 "연결이 거부되었습니다"에서 발생할 수 있기 때문에 오류 메시지가 실제로 일반적이라고 언급했습니다. 이것은 분석을 확인합니다.

이 질문을 일반적인 힌트와 대답으로 어지럽히 지 마십시오. "Git SSH error :"Connect to host : Bad file number ""인이 질문의 실제 주제 및 제목과는 아무런 관련이 없습니다. 사용하는 경우 -v는 다음 다른 질문을 열고 자신의 질문을받을 자격이 더 많은 정보를 메시지를 가지고, 당신은에 대한 링크를 만들 수 있습니다.


1
예, scp명령 줄에 -v를 추가하면 "잘못된 파일 번호"앞에 "debug1 : 주소 216.34.181.70 포트 22에 연결 : 연결이 거부되었습니다"가 추가되어 항상 "시간 초과"오류는 아닙니다.
Qwertie

오, 윈도우는 도구가 리눅스와 다른 유닉스 계열 시스템에서 전통적으로 사용 되더라도 항상 모호한 오류 메시지를 보여줍니다.
lilydjwg



5

다음을 시도 할 수도 있습니다.

telnet example.com 22

서버에 연결되어 있는지 확인하십시오. 이 메시지를보고 접속중인 VPN이 종료되었습니다. VPN에서 연결이 끊겼습니다.


4

내가 찾은 것은 연결 상태가 좋지 않을 때 발생합니다. 몇 분 전에 레포로 푸시 할 때 실패했지만 계속 실패하고 연결이 끊어졌습니다.

그것이 돌아온 후, 푸시는 즉시 진행되었습니다.

나는 그것이 당신 편이나 그들과의 연결이 끊어지면 발생할 수 있다고 생각합니다.


1
Verizon Jetpack을 사용할 때도이 오류가 발생하는데, 두 개의 개별 장치에서 ssh를 사용할 때 연결이 끊어 질 것 같습니다. 따라서 Jetpack bad file number의 연결이 끊어지고 연결이 끊어지면 오류가 발생합니다.
cod3monk3y

1
랩톱과 휴대폰의 핫스팟 연결을 사용할 때이 오류가 발생합니다.
Lucas Morgan

@LucasMorgan 여기 동일합니다. 이것이 내가 일어날 때 사용했던 것입니다.
frostymarvelous

3

SSH가 22 개 이상 차단 된 경우

originhttps로 업데이트하십시오.

git remote set-url origin https://github.com/ACCOUNT_NAME/REPO_NAME.git

변경되었는지 확인

git remote -v


그러나이 방법으로 모든 저장소에 대해이 작업을 수행해야합니다. 구성 파일에서 전체적으로 적용됩니다.
Sam

2

방금 동일한 문제가 있었고 찾을 수있는 모든 솔루션을 시도했지만 아무도 효과가 없었습니다. 결국에는 Git Bash를 종료하고 다시 열어 보았습니다. 모든 것이 완벽하게 작동했습니다.

따라서 Git Bash를 종료하고 다시 열어보십시오.


2

설정을 완료 한 git bash 인스턴스를 종료하고 다시 열어보십시오. 결국 나를 위해 일했습니다.


10
" 결국 저를 위해 일했습니다"는 당신이 그 과정에서 다른 일을했을지도 모른다고 생각하게합니다.
Jake Berger

1

Windows에서 git bash를 종료하고 다시 실행하려고했지만 작동하지 않았습니다. 마침내 (절망) 다시 시작하고 다음에 작동했습니다 :)


1

GitHub 관리 인터페이스를 통해 공개 키를 게시했는지 다시 확인하십시오.

그런 다음 포트 22가 어떻게 든 막히지 않았는지 확인하십시오 ( 이 질문에 설명 된 대로 )


1
>> 먼저 'git'이 GitHub 사용자 계정 이름인지 확인하십시오. 자식 가이드에 설명 된대로 : 모든 것을 테스트하십시오. 모든 것이 작동하는지 확인하려면 이제 GitHub에 SSH를 설치합니다. "git@github.com"부분을 변경하지 마십시오. 거기 있어야합니다. >> 그런 다음 포트 22가 어떻게 든 막히지 않도록하십시오-> Windows XP 방화벽을 비활성화했지만 아무 것도 변경하지 않았습니다.
Massimo Ugues

1

필자의 경우 git 호스트의 IP 주소가 변경되었습니다.

단순히 DNS 캐시를 비우면 문제가 해결되었습니다.


0

포트 443을 사용하도록 구성 파일을 작성해도 효과가 없었습니다. 마지막으로 WiFi 연결을 끄고 다시 켜려고했는데 문제가 사라졌습니다. 기묘한. 바보 같은 솔루션이지만 누군가를 도울 수 있습니다 :)


0

git remote -v로 리모컨을 확인하십시오 .ssh : /// gituser @ myhost : /git/dev.git와 같은 것

트리플 // 슬래시 때문에 잘못되었습니다


0

회사 네트워크에서 비트 버킷에 액세스 할 때이 문제가 발생했지만 git은 홈 네트워크에서 정상적으로 작동합니다.

$ git pull
ssh: connect to host bitbucket.org port 22: Bad file number
fatal: Could not read from remote repository.

이 문제를 해결하기 위해 https 프로토콜을 사용했습니다.

$ git pull https://myaccount@bitbucket.org/myaccount/myrepo.git
Password for 'https://myaccount@bitbucket.org':

해당 단어를 사용하여 "myaccount"및 "myrepo"를 바꾸십시오.


0

회사 방화벽 설정 프록시-

C:\Users\<YOUR_WINDOWS_USER>\.ssh\config파일에 다음 블록을 추가하십시오.

> Host *
>      ProxyCommand "C:/Program Files/Git/mingw32/bin/connect.exe" -H <YOUR_PROXY_SERVER_HOST>:<YOUR_PROXY_SERVER_PORT> %h %p
>      IdentityFile "<PATH_OF_YOUR_IDENTITY_FILE>"
>      TCPKeepAlive yes
>      IdentitiesOnly yes
>     
>     Host <SERVER_HOST_NAME_OR_IP_YOU_WANT_TO_SSH_INTO>
>      Port <SERVER_HOST_PORT_YOU_WANT_TO_SSH_INTO>
>      Hostname <SERVER_HOST_NAME_OR_IP_YOU_WANT_TO_SSH_INTO>

SSH를하려는 호스트 당 유사한 구성을 추가해야합니다.


-1

Windows에서 열린 FileZilla-Connection이있을 때 문제가 발생했습니다. FileZilla를 닫았습니다-> 문제가 해결되었습니다.


-1

이것은 일부 타이핑을 저장하는 간단한 솔루션입니다 .git bash에서 다음 단계를 쉽게 사용할 수 있습니다.

(1) 원격 저장소를 만듭니다

git remote add origin https://{your_username}:{your_password}@github.com/{your_username}/repo.git

참고 : 비밀번호에 '@'기호가 포함 된 경우 대신 '% 40'을 사용하십시오.

(2) 그런 다음 원격 저장소로 원하는 것을하십시오.

ex:- git push origin master

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.