web-dev-qa-db-ja.com

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

git guide に従いましたが、githubに接続しようとするとこの奇妙な問題があります:

$ ssh -v [email protected]
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

何か案が?

153
Massimo Ugues

自分でこの問題を抱えた後、私は私のための実用的なソリューションを見つけました。

エラーメッセージ:

    ssh -v [email protected]
    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 :))

ユーザー名もポート番号も指定する必要がないことに注意してください。

186
Sam

鍵となる情報は@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を使用している場合、独自の質問に値するより有益なメッセージがあり、別の質問を開いてから、リンクを作成できます。

40

これは私のために働いた:

ssh -v [email protected] -p 443
15

以下を試すこともできます。

telnet example.com 22

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

5
Fostah

ファイアウォールまたはブロッカーアプリケーション(PeerBlockなど)がポートをブロックしている可能性があります

5

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

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

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

4
frostymarvelous

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

Originをhttpsに更新するだけです

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

変更が行われたことを確認する

git remote -v

3
marknery

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

そのため、Git Bashを終了して再度開いてみてください。

2
Joe Lencioni

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

2
om39a

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

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

1
aboy021

GitHub管理インターフェイスを介して公開キーを公開したことを再確認してください。

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

1
VonC

Windowsでは、git bashを終了して再実行しようとしましたが、機能しませんでした

1
nischayn22

企業ネットワークでbitbucketにアクセスすると、この問題が発生しましたが、ホームネットワークでは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://[email protected]/myaccount/myrepo.git
Password for 'https://[email protected]':

対応する単語を使用して、「myaccount」と「myrepo」を置き換えてください。

0
ywu

企業ファイアウォールの背後にあるプロキシを設定している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するホストごとに同様の構成を追加する必要があります。

0
KunalP

ポート443を使用するように構成ファイルを作成しても機能しませんでした。最後に、wifi接続をオフにして、再びオンにしようとすると、問題はなくなりました。奇妙な。愚かな解決策が誰かを助けるかもしれない:)

0
teleco

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

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

0
daitangio