Git “Uyarı: Bilinen ana makineler listesine kalıcı olarak eklendi” diyor


192

Git veya iterken olduğu gibi uzaktan kumandayla etkileşimde bulunmak için git'i her kullandığımda, aşağıdaki mesaj gösterilir:

Uyarı: Bilinen ana makineler listesine kalıcı olarak '...' (RSA) eklendi.

Bu sinir bozucu mesajın görüntülenmesini nasıl önleyebilirim? Bu sadece bir sıkıntı - her şey düzgün çalışıyor.


1
Gerçekten her seferinde kastediyor musun ? Size formun bir istemini veriyor mu The authenticity of host '...' can't be established. RSA key fingerprint is .... Are you sure you want to continue connecting (yes/no)?yoksa bastırdınız mı? Eğer öyleyse, her seferinde aynı parmak izi mi? Değilse, bu gerçekten korkutucu . Daha az korkutucu seçenek, aslında bir şekilde hosts dosyasına yazmayı yönetmemesidir, bu yüzden her seferinde tekrar dener. Bir bakalım mı ~/.ssh/known_hosts?
Cascabel

1
Evet. <i> Her </i> seferde. Ancak, "Emin misin ..." mesajını göremiyorum - belki de bastırdım.
Donald Taylor

Ana bilgisayar listeleniyor ~/.ssh/known_hostsmu? (5000 kez listelendi mi?) ~/.ssh/configBir şey var mı / içeriyor mu (özellikle değeri StrictHostKeyChecking)?
Cascabel

Ana makine bu dosyada bir kez listelenir ve tek giriştir.
Donald Taylor

2
known_hostsDosyanızın içeriğinin kötü olduğunu tahmin ediyorum . Çok uzun bir satırda ana bilgisayar anahtarı olmalı. Orada yalnızca ana bilgisayar adınız varsa (örneğin) çalışmaz. Bu dosyayı kaldırmanızı (gerçekten yalnızca bu tek ana bilgisayarın bilgilerini içeriyorsa) ve SSH'nin bir sonraki bağlanışınızda oluşturmasına izin vermenizi öneririz. Bundan sonra sessiz olmalı.
üçlü

Yanıtlar:


240

Çözüm: Bir ~/.ssh/configdosya oluşturun ve satırı ekleyin:

UserKnownHostsFile ~/.ssh/known_hosts

Daha sonra Github'a bir sonraki erişiminizde mesajı göreceksiniz, ancak bundan sonra ana bilgisayar known_hostsdosyaya eklendiğinden mesajı görmeyeceksiniz . Bu, yalnızca günlük iletisini gizlemek yerine sorunu giderir.

Bu sorun bir süredir beni rahatsız ediyordu. Sorun, Windows için derlenen OpenSSH istemcisinin bilinen_hosts dosyasını~/.ssh/known_hosts

ssh -vvvvvvvvvvvvvvvvvvv git@github.com

debug3: check_host_in_hostfile: filename /dev/null
debug3: check_host_in_hostfile: filename /etc/ssh/ssh_known_hosts
debug3: check_host_in_hostfile: filename /dev/null
debug3: check_host_in_hostfile: filename /etc/ssh/ssh_known_hosts
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.

9
Evet, uyarıları veya hataları bastırmayı bir soruna uygun bir çözüm olarak görmüyorum. ;)
Jeremiah Gowdy

1
son zamanlarda ubuntu makinemde aynı sorunla karşılaştım. ~/.ssh/id_rsaBir sunucuya bağlanmak için farklı (varsayılan değerimden ) bir anahtar kullandıktan sonra bu şekilde davranmaya başladı . @ JeremiahGowdy'nin de belirttiği gibi, var debug3: load_hostkeys: loading entries for host "172.16.3.101" from file "/dev/null". SSH, /dev/nullanahtarı değiştirdikten sonra neden bilinen_hosts olarak kullanmaya başlıyor ?
m-ric

6
Harika çalışıyor! Sonunda aptal uyarı durdu. Btw Windows'ta, ~in ~/.ssh/configkullanıcının ana klasörüdür. Kolayca açmak için Win-R tuşuna basın , cmd Enter tuşuna basın . Komut istemi ana klasörünüzde zaten açılmış olmalıdır. Yazın cd .ssh girin ve ardından start . Enter Windows Explorer klasörü açmak için. Daha sonra config dosyasını Not Defteri'nde ( kaydederken .txt uzantısı yok ) oluşturabilirsiniz. (Pro kullanıcıları doğrudan komut isteminde yeni bir dosyaya yankılanabilir ;)). Uzaktan kumandayı iki kez içeren bir git komutu çalıştırın git fetch.
ADTC

1
neden ssh için 20 v'niz var?
bubakazouba

3
@bubakazouba Daha fazla v, günlük o kadar ayrıntılı olur, bunun için belgeleri kontrol edin. Üçü yeterli, yirmi aşırıya kaçmış: D
Petr Mánek

90

Aşağıdaki satırı ssh config dosyanıza ekleyin ($ HOME / .ssh / config):

LogLevel=quiet

Komut satırından ssh çalıştırıyorsanız, komut dizesine aşağıdaki seçeneği ekleyin:

-o LogLevel=quiet

Örneğin, aşağıdakiler machine.example.org üzerinde kurulu gcc sürümünü yazdırır (ve uyarı vermez):

ssh -o UserKnownHostsFile=/dev/null \
    -o StrictHostKeyChecking=no \
    -o LogLevel=quiet \
    -i identity_file \
    machine.example.org \
    gcc -dumpversion

1
"Config" dosyasına "LogLevel = quiet" eklemek işe yaradı. Teşekkür ederim.
Donald Taylor

3
Güvenliği korumak için, "LogLevel = quiet" ı bir "Host" bölümüne koymak iyi olur.
Joe

39
LogLevel=quietkötü bir fikir, tüm hataların görüntülenmesini istiyor, sadece bu özel iğrenç hatadan kaçınmak istiyor. Muhtemelen ssh'i dosya /dev/nullolarak kullanmak için kandırdığı için known_hosts, muhtemelen known_hostsparmak izi kontrolünü kapatmak istediğinden , ancak yapamadı, çünkü ssh derebeyleri ona izin vermedi.
Elazar Leibovich

@bukzor loglevel=errorbağlantı sonlandırıldığında hala "<server> Bağlantısı kapalı" görüntüler, bu da komut dosyası oluşturmak için gerçekten can sıkıcı bir durumdur.
Guss

Sorunu gerçekten çözmediği için bunu düşürdüm. Sadece gizler.
alaboudi

60

Set LogLeveliçin ERROR(değil QUIET) içinde ~/.ssh/configbu hataları görmemek için dosyanın:

Host *
   StrictHostKeyChecking no
   UserKnownHostsFile /dev/null
   LogLevel ERROR

2
Bu benim durumumda en iyi şekilde çalıştı - veya komut satırında "-oLogLevel = HATA" belirtebilirsiniz
Brad

5

Bu mesaj, daha önce hiç bağlanmadığınız bir ana bilgisayara bağlandığınızı bildiren SSH'den geliyor. SSH oturumunuzda bir MITM saldırısına işaret edebilecek bir ana bilgisayar anahtarı değişikliği hakkında bir uyarıyı kaçırabileceğiniz anlamına geleceği için kapatmayı önermem.


1
Ama her gün 10-15 kez bağlanıyor ve yine de bu uyarıyı alıyorum.
Donald Taylor

@JackB. Bakın ~/.ssh/known_hostsve sunucunuzun orada olup olmadığını görün.
Borealid

Anahtar bir nedenden dolayı değişiyor mu? Dosyadaki parmak izini ssh ile çıkan parmak izine karşı kontrol edin. Ayrıca, .ssh dizininizin modu 0700 olarak mı ayarlanmış?
Jason Carreiro

2
@ JasonCarreiro, ben büyük bir çocuğum, kimsenin rafımın içine MITM saldırısı çekmeyeceğini biliyorum, güvenlik bir ödünç vermiyor ve yeni bilgisayarların CA'yı yönetmeye gerek kalmadan önceden paylaşılan anahtarla kutudan çıkmasını istiyorum veya ssh-keyscan.
Elazar Leibovich

4

Uyarı mesajlarını bastırmak sshiçin aşağıdaki satırları ekleyebilirsiniz ~/.ssh/config:

Host *
LogLevel error

Bu, uyarıları devre dışı bırakır, ancak hata iletilerini devre dışı bırakır. Daha hassas bir kontrol istiyorsanız , diğer ayarlar gibi ana bilgisayar başına ~/.ssh/configyapılandırılabilir LogLevel.


2

Bu, ana bilgisayar için anahtarda değişiklikler olduğu anlamına gelir ~/.ssh/known_hostsve otomatik olarak GÜNCELLEMEZ. Bu nedenle bu uyarı mesajını her aldığınızda.

Bu, anahtarı aynı IP adresiyle değiştiren yeniden oluşturulan sanal makinelere bağlanmak için sıklıkla olur

Çözüm

Yalnızca bir girişiniz varsa, ~/.ssh/known_hostsdosyayı silebilir ve ilk bağlantıdan sonra anahtarın orada olacağını ve bundan sonra herhangi bir uyarı mesajı bulunmayacağını.

Birden fazla girişiniz varsa, kaldırmak için aşağıdaki komutu kullanabilirsiniz

$ ssh-keygen -R <hostname>

Benim için iyi çalışıyor


0

GitHub'dan bir havuz kullanıyorsanız, bu sorunu tamamen ortadan kaldırmak için URL'nin HTTPS sürümünü kullanmayı düşünün :

HTTP düğmesini tıklayın ve bunun yerine bu URL'yi kopyalayın

Deponuzu Windows GitHub uygulamasından kopyalarsanız, uzak URL için kullandığı yöntem budur. Belki de bilmediğimiz bir şey biliyorlar.


Not: Özel anahtar kimlik doğrulaması kullanıyorsanız, HTTP (S) kullanamazsınız.
qwertzguy

0

Aynı sorum var ve .sshiçinde bir dosya olmadığını buldum ~. Bu yüzden sadece .sshdizini ~yol altında oluşturuyorum ve sorun çözüldü.



0

Ssh anahtarı ekle

ssh-keygen -t rsa -b 4096 -C "abc@abc.com"

eval "$(ssh-agent -s)"

ssh-add ~/.ssh/bitbucket_rsa

sandık yapılandırma dosyası

crate ~/.ssh/config

satırın altına ekle.

UserKnownHostsFile ~/.ssh/known_hosts

Sonra pub anahtarı ekleyin ve deponuzu klonlayın ... Tamam .....


0

Linux / Cent OS VM'de aynı hatayla karşılaşmıştım ve bunun nedeni yeniden başlatmadan sonra IP'nin değişmesiydi. Bu sorunu aşmak için, ağda statik bir IP tanımladım ve bu girdiyi / etc / hosts dosyasına ekledim. Statik IP için biraz daha yüksek bir aralık değerinden bahsedin. Örneğin, geçerli IP'niz (ipconfig / ifconfig) 192.168.0.102 ise, bir sonraki yeniden başlatmadan sonra bu 192.168.0.103 olabilir. Bu nedenle, IPV4 ayarlarındaki statik IP'nizi, hile yapması gereken 192.168.0.181 olarak tanımlayın.


anahtar kelimeleri vurgulamaya çalışın ve başkaları için cevabınıza ulaşmaya yardımcı olacak formatla açık olun
Agilanbu

0

Benim durumumda, sunucuyu kuran yönetici bu seçenekleri ~/.ssh/config

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

Hangi ~/.ssh/known_hostsdosyayı kullanmadan çoğu durumda iyi çalıştı . Ancak işletme gitlab repo için, "Uyarı: Kalıcı olarak ... bilinen ana bilgisayarlar listesine eklendi."

Benim çözümüm, UserKnownHostsFile /dev/nullyaratılmasına izin veren çizgiyi yorumlamaktı ~/.ssh/known_hosts. Bundan sonra daha fazla uyarı vermedi.

Bilgisayarınızda eski / geçersiz girişler de olabilir known_hosts.

# find entry in ~/.ssh/known_hosts
ssh-keygen -F <hostname>

# delete entry in ~/.ssh/known_hosts
ssh-keygen -R <hostname>

0

özel anahtarınızı ssh-agent'a ekleyin:

ssh-add ~/.ssh/id_rsa

-1

Devam eden downvotes nedeniyle çözümümü indiriyorum.
SSH istemcisinin kaynak kodunu hacklemeden en iyi çözümdü.
Birisi ilgileniyorsa düzenleme geçmişini kontrol edin.

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.