1. ホーム
  2. git

[解決済み] Git SSH エラー。"ホストへの接続: 不正なファイル番号"

2022-04-28 02:54:26

質問

私は ギットガイド が、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

WindowsでMINGGWシェルを使っているときだけ、悪いファイル番号のメッセージが表示されます。LinuxユーザはTimed outと表示されるだけです。

問題あり。

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接続することで解決できます(ファイアウォールやプロバイダがブロックすることはありません)。 また、github.comではなく、"ssh.github.com"にsshする必要があるのも重要な点です。 そうしないと、sshサーバではなく、ウェブサーバに報告することになります。 以下は、この問題を解決するために必要なすべての手順です。

解決方法

(まず最初に、以下の説明に従ってキーを生成したことを確認します。 http://help.github.com/win-set-up-git/ )

create file ~/.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 :))

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