Git SSH hatası: “Ana bilgisayara bağlan: Bozuk dosya numarası”


153

Git kılavuzunu takip ettim ama github'a bağlanmaya çalışırken bu garip sorunum var:

$ 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

Bu .ssh altındaki yapılandırma dosyam

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

Herhangi bir fikir?


Bugün anladım. Ve görünüşe göre Github çökmüştü.
ysrb

TL; DR: "Bozuk dosya numarasını" yoksay. Aradığınız bilgiler bu mesajda değil. Bir şey ifade edebilir. Ayrıntılar stackoverflow.com/a/22788046
Stéphane Gourichon

Yanıtlar:


186

Bu sorunu kendim yaptıktan sonra, benim için çalışan bir çözüm buldum:

Hata mesajı:

    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

Kötü dosya numarası iletisini yalnızca MINGGW kabuğunu kullanan pencerelerde görürsünüz. Linux kullanıcıları zaman aşımına uğrayacak.

Sorun:

SSH muhtemelen 22 numaralı bağlantı noktasında engellendi. Bunu yazarak görebilirsiniz

    $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

Gördüğünüz gibi durum Filtrelenir, yani bir şey onu engelliyor demektir. 443 numaralı bağlantı noktasına bir SSH gerçekleştirerek bunu çözebilirsiniz (güvenlik duvarınız / isp'niz bunu engellemez). Ayrıca github.com yerine ssh yerine "ssh.github.com" yazmanız gerekir. Aksi takdirde, ssh sunucusu yerine web sunucusuna rapor vereceksiniz. Bu sorunu çözmek için gereken tüm adımlar aşağıdadır.

Çözüm:

(Öncelikle http://help.github.com/win-set-up-git/ adresinde açıklandığı gibi anahtarlarınızı oluşturduğunuzdan emin olun )

~ / .ssh / config dosyası yarat (kullanıcı dizininizde bulunan ssh yapılandırma dosyası. %USERPROFILE%\.ssh\config

Aşağıdaki kodu içine yapıştırın:

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

Dosya 'yı kaydet.

SSH'yi her zamanki gibi gerçekleştirin:

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

Kullanıcı adını veya bağlantı noktası numarasını belirtmem gerekmediğini unutmayın.



1
"Aşağıdaki kodu yapıştırın:", anlamıyorum. Kötü dosya numarasını nasıl çözebilirim? Oluşturmalı ve not defteri dosyası olarak mı kaydetmeliyim?
David Dimalanta

27
Bunun yerine alıyorumssh: connect to host ssh.github.com port 443: Bad file number
cqcn1991

Bu, daha önce çalışan kurulumumun aniden çalışmayı bıraktığı bitbucket.org için de çalıştı. En iyi yanı, tek yapmam gereken SSH yapılandırma dosyasında değişiklik yapmak oldu.
Kevin Condon

2
Bir kullanırken .ssh/config, pencerelerin 7 dosyayı yapmak emin bir User-Çevre Var sahip HOMEolan %USERPROFILE%benim ssh bulamadım zaman> bana yardımcı, - olarak değer
Jook

40

Anahtar bilgiler @ Sam'in cevabında yazılmıştır, ancak gerçekten dikkat çekici değildir, bu yüzden açıklığa kavuşturalım.

"Bozuk dosya numarası" bilgilendirici değildir, sadece git's ssh dosyasını Windows'ta çalıştırmanın bir işaretidir.

Anahtarsız bile görünen çizgi -v:

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

aslında alakasız .

Eğer odaklanırsanız, gerçek sorunun ne olduğu hakkında bir ipucu olmadığı için zamanınızı boşa harcarsınız, sadece git'in ssh'sini Windows'ta çalıştırmanın bir etkisi. Git veya ssh kurulumunun veya yapılandırmasının yanlış olduğuna dair bir işaret bile değil. Gerçekten, görmezden gel .

Linux'taki aynı komut benim için bu mesajı üretti, bu da sorun hakkında gerçek bir ipucu verdi:

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

Gerçek çözüm: "hatalı dosya numarasını" yok sayın ve daha fazla bilgi edinin

-vKomut satırında eklenen satırlara odaklanın . Benim durumumda:

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

Benim sorunum IP adresinde bir yazım hatasıydı, ama seninki farklı olabilir.

Bu soru "hatalı dosya numarası" veya bir bağlantının zaman aşımına uğramasının birçok nedeni hakkında mı?

Birisi "kötü dosya numarası" nın yalnızca asıl neden "bağlantı zaman aşımı" olduğunda göründüğünü kanıtlayabilirse, bağlantının neden zaman aşımına uğradığını ele almak mantıklıdır.

O zamana kadar, "kötü dosya numarası" sadece genel bir hata mesajıdır ve bu soru "yoksay ve diğer hata mesajlarını ara" diyerek tamamen yanıtlanır.

EDIT: Qwertie de "Bağlantı reddedildi" de olabileceği gibi hata iletisinin gerçekten genel olduğunu belirtti. Bu, analizi doğrular.

Lütfen bu soruyu genel ipuçlarıyla ve yanıtlarla karıştırmayın, bu sorunun asıl konusu (ve başlığı) ile ilgisi yoktur, "Git SSH hatası:" Ana bilgisayara bağlan: Bozuk dosya numarası "". Kullanarak -vkendi sorularını hak eden daha bilgilendirici bir mesajınız varsa, başka bir soru açın, o zaman bir bağlantı oluşturabilirsiniz.


1
Evet, scpkomut satırıma -v ekleyerek "debug1: adrese bağlanın 216.34.181.70 port 22: Bağlantı" Bozuk dosya numarası "ndan önce" reddedildi, bu nedenle her zaman "zaman aşımına uğradı" hatası değildir.
Qwertie

Oh, Windows, araç geleneksel olarak Linux ve diğer UNIX benzeri sistemlerde kullanıldığında bile her zaman belirsiz hata mesajları gösteriyor ...
lilydjwg


5

Güvenlik duvarınız veya bir engelleyici uygulamanız (PeerBlock vb.) Bağlantı noktanızı engelliyor olabilir


5

Ayrıca şunları da deneyebilirsiniz:

telnet example.com 22

sunucuya bağlantınız olup olmadığını görmek için. Bu mesajı gördüm ve sonunda VPN'in erişimi engelliyordu. VPN ile bağlantısı kesildi ve gitmek güzeldi.


4

Bulduğum şey, bağlantınız zayıf olduğunda olur. Birkaç dakika önce repoğuma ittiğimde başarısız oldu ve bundan bir süre sonra bağlantı kesildi.

Geri döndükten sonra, itme hemen geçti.

Bunun ya sizin tarafınızdan ya da onların bağlantısından kaynaklanan bir düşüşten kaynaklanabileceğine inanıyorum.


1
Bu hatayı, iki ayrı cihazdan ssh kullanırken bağlantımı kesiyor gibi görünen Verizon Jetpack'imi kullanırken de alıyorum. Jetpack'teki bir şey bağlantıyı kesiyor ve bağlantı bad file numberkesildiğinde hatayı alıyorum.
cod3monk3y

1
Telefonumun hotspot bağlantısını dizüstü bilgisayarımla kullanırken bu hatayı alıyorum.
Lucas Morgan

@LucasMorgan burada aynı. Bu olduğunda bunu kullanıyordum.
frostymarvelous

3

SSH 22'den fazla engellenirse

sadece originhttps'ye güncelleyin

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

değişikliklerin yapıldığını doğrula

git remote -v


ancak bu yöntemi bu yöntemle her havuz için yapmanız gerekir. Bir yapılandırma dosyasında global olarak uygulanır.
Sam

2

Aynı sorunu yaşadım ve bulabildiğim her çözümü denedim, ama hiçbiri işe yaramadı. Sonunda Git Bash'ten çıkmayı ve tekrar açmayı denedim ve her şey mükemmel çalıştı.

Bu yüzden Git Bash'ten çıkmayı ve tekrar açmayı deneyin.


2

Kurulumu yaptığınız git bash örneğinden çıkmayı ve yeniden açmayı deneyin. Sonunda benim için çalıştı.


10
" nihayetinde benim için çalıştı" bana bu süreçte katkıda bulunmuş olabilecek başka şeyler yapıyor olabileceğinizi düşündürüyor.
Jake Berger

1

Pencerelerde git bash çıkın ve yeniden çalıştırın ama işe yaramadı, nihayet ben (frustated) bir yeniden başlatma yaptı ve bir dahaki sefere çalıştı :)


1

Ortak anahtarlarınızı GitHub Yönetim arayüzünüz üzerinden yayınlayıp yayınlamadığınızı bir kez daha kontrol edin.

Ardından, 22 numaralı bağlantı noktasının bir şekilde engellenmediğinden emin olun ( bu soruda gösterildiği gibi )


1
>> Önce 'git' in GitHub kullanıcı hesabı adınız olduğundan emin olun. Git kılavuzunda açıklandığı gibi: Her şeyi test edin. Her şeyin çalıştığından emin olmak için şimdi GitHub'a SSH göndereceksiniz. “Git@github.com” bölümünü değiştirmeyin. Orada olması gerekiyordu. >> Sonra port 22'nin bir şekilde engellenmediğinden emin olun -> Windows xp güvenlik duvarını devre dışı bıraktım, ancak hiçbir şey değişmedi.
Massimo Ugues

1

Benim durumumda git host'umuzun IP adresi değişmişti.

Sadece DNS önbelleğini yıkamak sorunu çözdü.


0

443 numaralı bağlantı noktasını kullanmak için yapılandırma dosyası oluşturmak benim için çalışmadı. Sonunda wifi bağlantımı kapatmaya çalıştım, tekrar açtım ve sorun kayboldu. Tuhaf. Aptalca bir çözüm ama birisine yardımcı olabilir :)


0

Uzaktan kumandanızı git remote -v ile kontrol edin ssh: /// gituser @ myhost: /git/dev.git gibi bir şey

üçlü /// eğik çizgi yüzünden yanlış


0

Kurumsal ağda bitbucket'e erişirken bu sorunu gördüm, git ev ağında iyi çalışıyor.

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

Bu sorunu çözmek için https protokolünü kullandım.

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

Lütfen "myaccount" ve "myrepo" ifadelerini değiştirmek için ilgili kelimeleri kullanın.


0

Aşağıdaki çözüm, Windows 7 (32 Bit) bilgisayarımdaki şirket güvenlik duvarı kurulumunun arkasında AWS EC2 Ubuntu örneğine SSH'yi denemeye çalıştığımda Proxy-

Aşağıdaki bloğu C:\Users\<YOUR_WINDOWS_USER>\.ssh\configdosya-

> 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'ye eklemek istediğiniz ana bilgisayar başına benzer bir yapılandırma eklemeniz gerekir.


-1

Windows'ta açık bir FileZilla-Connection olduğunda sorun yaşadım. Kapalı FileZilla -> Sorun çözüldü.


-1

Bu, git bash'da aşağıdaki adımları kolayca kullanabileceğiniz bazı yazımları kaydetmek için basit bir çözümdür.

(1) uzak depo oluşturmak

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

Not: Parolanız '@' işareti içeriyorsa, bunun yerine '% 40' kullanın

(2) Sonra uzak depo ile istediğiniz her şeyi yapın

ex:- git push origin master

-2

Benim durumumda sadece WiFi yönlendiricinin yeniden başlatılması yardımcı oldu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.