Git SSHエラー:「ホストへの接続:不正なファイル番号」


153

私はgitガイドに従いましたが、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 2014

TL; DR:「不正なファイル番号」を無視します。あなたが探している情報はそのメッセージにはありません。何か意味があるかもしれません。上の詳細stackoverflow.com/a/22788046
ステフェイン・グーリッホン

回答:


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シェルを使用しているWindowsでのみ、不正なファイル番号のメッセージが表示されます。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

ご覧のとおり、状態はFilteredです。つまり、何かがそれをブロックしています。これを解決するには、ポート443へのSSHを実行します(ファイアウォール/ ispはこれをブロックしません)。github.comの代わりに "ssh.github.com"にsshする必要があることも重要です。それ以外の場合は、SSHサーバーではなくWebサーバーにレポートします。以下は、この問題を解決するために必要なすべての手順です。

解決:

(まず最初に、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 2013

27
私は代わりにssh: connect to host ssh.github.com port 443: Bad file number
cqcn1991

これは、以前に機能していたセットアップが突然機能しなくなったときに、bitbucket.orgでも機能しました。最良の部分は、私がしなければならなかった唯一のことは、SSH構成ファイルに変更を加えることでした。
ケビンコンドン

2
使用している場合.ssh/configのWindows 7上のファイルを、必ずユーザーEnviromentalヴァール持たせる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エラー:「ホストに接続:不正なファイル番号」」というこの質問の実際のトピック(およびタイトル)とは何の関係もありません。-vあなたが自分の質問に値するより有益なメッセージを使用している場合は、別の質問を開いてから、それにリンクを張ることができます。


1
scpはい、コマンドラインに-vを追加すると、「debug1:connect to address 216.34.181.70 port 22:Connection refused」の前に「Bad file number」が追加されるため、常に「タイムアウト」エラーになるとは限りません。
Qwertie 2014

ああ、Windowsは、ツールが伝統的にLinuxや他のUNIXライクなシステムで使用されている場合でも、常にあいまいなエラーメッセージを表示します...
lilydjwg



5

次のことも試すことができます。

telnet example.com 22

サーバーに接続できるかどうかを確認します。私はこのメッセージを見て、それが私がいたVPNがアクセスをブロックしていることになりました。VPNから切断され、私は行ってよかった。


4

私が見つけたのは、これはあなたの接続が悪いときに起こるということです。数分前にリポジトリにプッシュしたときにそれがありましたが、失敗し続け、しばらくすると接続がダウンしました。

それが戻って来た後、プッシュはすぐに通過しました。

私はそれがあなたの側か彼らのどちらかからの接続の低下のどちらかによって引き起こされると信じています。


1
Verizon Jetpackを使用しているときにもこのエラーが発生します。2つの別々のデバイスからsshを使用しているときに接続が切断されているようです。したがって、Jetpackの何かが接続をドロップしbad file number、接続がダウンしたときにエラーが発生します。
cod3monk3y 2013

1
ラップトップで携帯電話のホットスポット接続を使用すると、このエラーが発生します。
Lucas Morgan

@LucasMorganも同じです。これが起こったときにそれを使っていました。
frostymarvelous 2016年

3

SSHが22を超えてブロックされている場合

originhttpsに更新するだけです

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

変更が加えられたことを確認する

git remote -v


正解ですが、この方法では、すべてのリポジトリに対してこれを行う必要があります。設定ファイルでは、グローバルに適用されます。
サム・

2

私は同じ問題を抱えており、見つけることができるすべての解決策を試しましたが、どれもうまくいきませんでした。結局、私はGit Bashを終了して再度開いてみましたが、すべてが完全に機能しました。

そこで、Git Bashを終了して、もう一度開いてみてください。


2

セットアップに使用したgit bashインスタンスを終了して、もう一度開いてみてください。最終的にはうまくいきました。


10
最終的に私のため働いた」とは、あなたが貢献したかもしれないプロセスで他のことをしていたかもしれないと私に思わさせます。
ジェイクバーガー

1

ウィンドウズで私はgit bashを終了して再実行しようとしましたが、うまくいきませんでした


1

GitHub管理インターフェースを介して公開鍵を公開したことを再確認します。

次に、ポート22が何らかの方法でブロックされていないことを確認します(この質問に示されているように


1
>>最初に、「git」がGitHubユーザーアカウント名であることを確認します。gitガイドで説明されているように:すべてをテストします。すべてが正常に機能していることを確認するには、GitHubにSSHで接続します。「git@github.com」の部分は変更しないでください。それはそこにあるはずです。>>次に、ポート22が何らかの理由でブロックされていないことを確認します-> Windows XPファイアウォールを無効にしましたが、何も変更されていません。
Massimo Ugues、2011

1

私の場合、gitホストのIPアドレスが変更されていました。

DNSキャッシュをフラッシュするだけで問題は解決しました。


0

ポート443を使用するように構成ファイルを作成しても、うまくいきませんでした。最後に、Wi-Fi接続をオフにしてもう一度オンにしようとしたところ、問題は解決しました。変だ。愚かな解決策ですが、誰かを助けるかもしれません:)


0

git remote -vでリモートを確認しますssh:/// gituser @ myhost:/git/dev.gitのようなもの

トリプル///スラッシュのために間違っています


0

gitがホームネットワークで正常に動作しているときに、企業ネットワークでbitbucketにアクセスすると、この問題が発生しました。

$ 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

次の解決策は、企業ファイアウォールの背後にあるWindows 7(32ビット)PCからAWS EC2 UbuntuインスタンスにSSHで接続しようとしたときに機能しました。

次のブロックを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.