Galat Git SSH: "Sambungkan ke host: Nomor file salah"


153

Saya mengikuti panduan git tetapi saya memiliki masalah aneh ini ketika mencoba terhubung ke 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

Ini adalah file konfigurasi saya di bawah .ssh

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

Ada ide?


Punya hari ini. Dan sepertinya Github turun.
ysrb

TL; DR: Abaikan "nomor file buruk". Informasi yang Anda cari tidak ada dalam pesan itu. Itu bisa berarti apa saja. Detail tentang stackoverflow.com/a/22788046
Stéphane Gourichon

Jawaban:


186

Setelah mengalami masalah ini sendiri, saya menemukan solusi yang berfungsi untuk saya:

Pesan eror:

    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

Anda hanya akan melihat pesan nomor file yang buruk ketika di windows menggunakan shell MINGGW. Pengguna Linux hanya akan mendapatkan Timed out.

Masalah:

SSH mungkin diblokir pada port 22. Anda dapat melihat ini dengan mengetik

    $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

Seperti yang Anda lihat negara disaring, yang berarti ada sesuatu yang memblokirnya. Anda dapat menyelesaikan ini dengan melakukan SSH ke port 443 (firewall / ISP Anda tidak akan memblokir ini). Penting juga bahwa Anda perlu ssh ke "ssh.github.com" alih-alih github.com. Jika tidak, Anda akan melaporkan ke server web alih-alih server ssh. Di bawah ini semua langkah yang diperlukan untuk menyelesaikan masalah ini.

Larutan:

(Pertama-tama pastikan Anda membuat kunci Anda seperti dijelaskan di http://help.github.com/win-set-up-git/ )

buat file ~ / .ssh / config (file konfigurasi ssh terletak di direktori pengguna Anda. Pada windows mungkin %USERPROFILE%\.ssh\config

Rekatkan kode berikut di dalamnya:

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

Simpan file.

Lakukan ssh seperti biasa:

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

Perhatikan bahwa saya tidak harus memberikan nama pengguna atau nomor port.


4
Dengan kata lain, Anda membuat koneksi SSH melalui port HTTPS .
Enrico Campidoglio

1
Di "Tempel kode berikut di dalamnya:", saya tidak mengerti. Bagaimana saya bisa menyelesaikan nomor file yang salah? Haruskah saya membuatnya dan menyimpannya sebagai file notepad?
David Dimalanta

27
Saya malah mendapatkanssh: connect to host ssh.github.com port 443: Bad file number
cqcn1991

Ini juga berfungsi untuk bitbucket.org, ketika pengaturan saya yang sebelumnya bekerja tiba-tiba berhenti bekerja. Bagian terbaiknya adalah bahwa satu-satunya hal yang harus saya lakukan adalah membuat perubahan pada file konfigurasi SSH.
Kevin Condon

2
Saat menggunakan .ssh/configfile di windows 7, pastikan Anda memiliki Var Pengguna-Lingkungan HOMEdengan %USERPROFILE%nilai -> membantu saya, ketika ssh saya tidak dapat menemukannya
Jook

40

Informasi kuncinya ditulis dalam jawaban @ Sam tetapi tidak terlalu menonjol, jadi mari kita perjelas.

"Nomor file buruk" tidak informatif, ini hanya pertanda menjalankan git's ssh di Windows.

Baris yang muncul bahkan tanpa -vberalih:

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

sebenarnya tidak relevan .

Jika Anda fokus pada itu Anda akan membuang-buang waktu karena itu bukan petunjuk tentang apa masalah sebenarnya, hanya efek menjalankan ssh git pada Windows. Itu bahkan bukan tanda bahwa git atau ssh menginstal atau konfigurasi salah. Sungguh, abaikan saja .

Perintah yang sama di Linux malah menghasilkan pesan ini untuk saya, yang memberikan petunjuk aktual tentang masalahnya:

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

Solusi aktual: abaikan "nomor file buruk" dan dapatkan informasi lebih lanjut

Fokus pada baris yang ditambahkan dengan -vpada baris perintah. Dalam kasus saya itu adalah:

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

Masalah saya adalah salah ketik pada alamat IP, tetapi masalah Anda mungkin berbeda.

Apakah pertanyaan ini tentang "nomor file yang buruk", atau tentang banyak alasan mengapa koneksi bisa habis?

Jika seseorang dapat membuktikan bahwa "nomor file yang buruk" hanya muncul ketika alasan sebenarnya adalah "waktu koneksi habis" maka masuk akal untuk menjelaskan mengapa koneksi bisa waktu habis.

Sampai saat itu, "nomor file buruk" hanyalah pesan kesalahan umum dan pertanyaan ini dijawab sepenuhnya dengan mengatakan "abaikan saja dan cari pesan kesalahan lainnya".

EDIT: Qwertie menyebutkan bahwa pesan kesalahan memang generik, karena dapat terjadi pada "Sambungan ditolak" juga. Ini mengkonfirmasi analisis.

Tolong jangan mengacaukan pertanyaan ini dengan petunjuk umum dan jawaban, mereka tidak ada hubungannya dengan topik aktual (dan judul) dari pertanyaan ini yang merupakan "Kesalahan Git SSH:" Hubungkan ke host: nomor file buruk "". Jika menggunakan -vAnda memiliki pesan yang lebih informatif yang pantas dengan pertanyaan mereka sendiri, kemudian buka pertanyaan lain, maka Anda dapat membuat tautan ke sana.


1
Yup, menambahkan -v ke scpbaris perintah saya menambahkan "debug1: sambungkan ke port 216.34.181.70 port 22: Sambungan ditolak" sebelum "Nomor file salah" sehingga tidak selalu merupakan kesalahan "batas waktu".
Qwertie

Oh, Windows selalu menampilkan pesan kesalahan yang tidak jelas, bahkan ketika alat ini secara tradisional digunakan di Linux dan sistem lain yang mirip UNIX ...
lilydjwg



5

Anda juga dapat mencoba:

telnet example.com 22

untuk melihat apakah Anda memiliki konektivitas ke server. Saya melihat pesan ini dan ternyata VPN yang saya akses memblokir akses. Terputus dari VPN dan saya baik untuk pergi.


4

Apa yang saya temukan adalah, ini terjadi ketika koneksi Anda buruk. Saya memilikinya beberapa menit yang lalu ketika mendorong ke repo saya, itu terus gagal dan beberapa saat setelah itu, koneksi terputus.

Setelah itu kembali, dorongan segera pergi.

Saya percaya itu bisa disebabkan oleh penurunan koneksi dari sisi Anda atau mereka.


1
Saya juga mendapatkan kesalahan ini ketika menggunakan Verizon Jetpack saya, yang sepertinya menjatuhkan koneksi saya ketika saya menggunakan ssh dari dua perangkat terpisah. Jadi sesuatu di Jetpack menjatuhkan koneksi, dan saya mendapatkan bad file numberkesalahan ketika koneksi terputus.
cod3monk3y

1
Saya mendapatkan kesalahan ini saat menggunakan koneksi hotspot ponsel saya dengan laptop saya.
Lucas Morgan

@LucasMorgan sama di sini. Itulah yang saya gunakan ketika ini terjadi.
frostymarvelous

3

Jika SSH diblokir lebih dari 22

cukup perbarui originke https Anda

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

verifikasi bahwa perubahan telah dilakukan

git remote -v


benar, namun Anda harus melakukan ini untuk setiap repositori dengan metode ini. Dalam file konfigurasi itu diterapkan secara global.
Sam

2

Saya hanya memiliki masalah yang sama dan mencoba setiap solusi yang dapat saya temukan, tetapi tidak ada yang berhasil. Akhirnya, saya mencoba berhenti dari Git Bash dan membukanya kembali, dan semuanya bekerja dengan sempurna.

Jadi, cobalah berhenti dari Git Bash dan buka kembali.


2

Cobalah untuk keluar dari instance git bash di mana Anda membuat pengaturan dan coba buka kembali. Akhirnya berhasil untuk saya.


10
" akhirnya bekerja untuk saya" membuat saya berpikir bahwa Anda mungkin telah melakukan hal-hal lain dalam proses yang mungkin telah berkontribusi.
Jake Berger

1

Pada windows saya mencoba berhenti git bash dan menjalankan kembali tetapi tidak berhasil, akhirnya saya (frustasi) melakukan restart dan itu berhasil lain kali :)


1

Periksa ulang apakah Anda telah menerbitkan kunci publik Anda melalui antarmuka Administrasi GitHub Anda.

Kemudian pastikan port 22 tidak terhalang (seperti yang diilustrasikan dalam pertanyaan ini )


1
>> Pertama, pastikan 'git' adalah nama akun pengguna GitHub Anda. Seperti dijelaskan pada panduan git: Uji semuanya. Untuk memastikan semuanya berfungsi sekarang Anda akan SSH ke GitHub. Jangan mengubah bagian "git@github.com". Itu seharusnya ada di sana. >> Kemudian pastikan port 22 entah bagaimana tidak diblokir -> Saya menonaktifkan windows xp firewall tetapi tidak ada yang berubah.
Massimo Ugues

1

Dalam kasus saya, alamat IP host git kami telah berubah.

Cukup pembilasan cache DNS memperbaiki masalah.


0

Membuat file config untuk menggunakan port 443 tidak berhasil untuk saya. Akhirnya saya mencoba mematikan koneksi wifi saya, menyalakannya lagi dan masalahnya hilang. Aneh. Solusi konyol tetapi dapat membantu seseorang :)


0

Periksa remote Anda dengan git remote -v Sesuatu seperti ssh: /// gituser @ myhost: /git/dev.git

salah karena triple /// slash


0

Saya melihat masalah ini ketika saya mengakses bitbucket di jaringan perusahaan, sementara git bekerja dengan baik di jaringan rumah.

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

Saya menggunakan protokol https untuk mengatasinya.

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

Silakan gunakan kata-kata yang sesuai untuk mengganti "akun saya" dan "laporan saya".


0

Solusi berikut ini bekerja untuk saya ketika mencoba SSH ke AWS EC2 Ubuntu instance dari PC Windows 7 (32 Bit) saya di belakang firewall perusahaan yang mengatur Proxy-

Tambahkan blok berikut ke C:\Users\<YOUR_WINDOWS_USER>\.ssh\configfile-

> 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>

Anda perlu menambahkan konfigurasi serupa per host yang Anda inginkan ke SSH.


-1

Saya punya masalah ketika saya memiliki FileZilla-Connection terbuka pada Windows. FileZilla Tertutup -> Masalah terpecahkan.


-1

Ini adalah solusi sederhana untuk menghemat beberapa pengetikan Anda dapat menggunakan langkah-langkah berikut di git bash dengan mudah ..

(1) buat repositori jarak jauh

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

Catatan: Jika kata sandi Anda mengandung tanda '@' gunakan '% 40' sebagai gantinya

(2) Kemudian lakukan apa pun yang Anda inginkan dengan repositori jarak jauh

ex:- git push origin master

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.