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
何か案が?
自分でこの問題を抱えた後、私は私のための実用的なソリューションを見つけました。
エラーメッセージ:
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 :))
ユーザー名もポート番号も指定する必要がないことに注意してください。
鍵となる情報は@Samの答えに書かれていますが、あまり目立っていませんので、明確にしましょう。
-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
を使用している場合、独自の質問に値するより有益なメッセージがあり、別の質問を開いてから、リンクを作成できます。
これは私のために働いた:
ssh -v [email protected] -p 443
以下を試すこともできます。
telnet example.com 22
サーバーに接続できるかどうかを確認します。このメッセージが表示され、アクセスしていたVPNが最終的にブロックされました。 VPNから切断されて、私は行ってよかったです。
ファイアウォールまたはブロッカーアプリケーション(PeerBlockなど)がポートをブロックしている可能性があります
私が見つけたのは、これはあなたの接続が悪いときに起こるということです。数分前、リポジトリにプッシュしたときにそれがありましたが、失敗し続け、その後しばらくして接続が切断されました。
それが戻った後、プッシュはすぐに通過しました。
私はそれがあなたの側か彼らのどちらかからの接続の低下によって引き起こされると信じています。
SSHが22を超えてブロックされている場合
Origin
をhttpsに更新するだけです
git remote set-url Origin https://github.com/ACCOUNT_NAME/REPO_NAME.git
変更が行われたことを確認する
git remote -v
私は同じ問題を抱えていて、見つけることができるすべての解決策を試しましたが、どれもうまくいきませんでした。最終的に、Git Bashを終了して再度開いてみましたが、すべてが完全に機能しました。
そのため、Git Bashを終了して再度開いてみてください。
セットアップを行ったgit bashインスタンスを終了して、再度開いてみてください。最終的にはうまくいきました。
私の場合、gitホストのIPアドレスが変更されていました。
DNSキャッシュをフラッシュするだけで問題は解決しました。
GitHub管理インターフェイスを介して公開キーを公開したことを再確認してください。
次に、ポート22が何らかの形でブロックされていないことを確認します( この質問に示されている )
Windowsでは、git bashを終了して再実行しようとしましたが、機能しませんでした
企業ネットワークで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」を置き換えてください。
企業ファイアウォールの背後にあるプロキシを設定している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するホストごとに同様の構成を追加する必要があります。
ポート443を使用するように構成ファイルを作成しても機能しませんでした。最後に、wifi接続をオフにして、再びオンにしようとすると、問題はなくなりました。奇妙な。愚かな解決策が誰かを助けるかもしれない:)
Git remote -vでリモートを確認しますssh:/// gituser @ myhost:/git/dev.gitのようなもの
トリプル///スラッシュのために間違っています