Git ve SSH, hangi anahtar kullanılıyor?


94

Dizininizin .ssh30 anahtar (15 özel ve 15 genel) içerdiğini varsayalım .

Git'te, belirli bir uzak depoya bağlanmak için hangisinin kullanıldığını kontrol edebilirsiniz?


10
Kim "kapatmaya" oy verdiyse, bu soru doğrudan programlamayla ilgilidir, aynı nedenle burada GIT ile ilgili sorulara izin verilir
James Raitsev

1
Muhtemelen ... Bu gerçekten bir süper kullanıcı sorusu, buradaki sorun git değil, üzerinde çalıştığı platform. Git "in git" sorununu kontrol edemezsiniz, çünkü git umursamaz, sadece ssh'ı nasıl kullandığınız ve nasıl yapılandırıldığı ile ilgilidir. Ssh-agent, herhangi bir anahtar yönetim sistemi kullanıyor musunuz, hangi işletim sistemini kullanıyorsunuz, hangi sürümü, vb.
Arafangion

Yanıtlar:


68

.ssh/configDosyadaki aşağıdaki giriş sorunu çözer

  host git.assembla.com
  user git
  identityfile ~/.ssh/whatever

~/.ssh/whateverÖzel anahtarınıza giden yol nerede

Ek olarak, kullanıcı ve ana bilgisayar şuradan alınabilir

git push git@git.assembla.com:repo_name.git
         ^__ ^_______________
         user host

yani farklı bir ana bilgisayar için başka bir ssh anahtarı kullanmak istersem, ilkinden sonra aynısını tekrar eder miydim? Kimlik dosyası kendisinden önceki ilk ana bilgisayarla ilgili mi?
MikeSchem

tamam, evet, durum bu gibi görünüyor cyberciti.biz/faq/…
MikeSchem

68

Ssh'nin ayrıntılı modda yürütülmesi, diğer adıyla ssh -v user@host, oturum açmak için hangi anahtar dosyalarının ayrıntılarını da içeren çok sayıda hata ayıklama bilgisi yazdıracaktır.

debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/user/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 332
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).

Eğer seyahatseverlerin Git kendi içinde 4. Adım, bu kombine Şimdi eğer SSH yardımı sayfasında , ssh -vT git@github.comsize cevap verebilirim.

Not: -iAnahtarı, komut yürütme sırasında ssh'a hangi anahtar dosyasının kullanılacağını söylemek için de kullanabilirsiniz.



1
Anahtar dosyasını şu şekilde bulmak için ssh komutunun standart hata çıktısını da grep edebilirsiniz: ssh -vv user@host 2> >(grep Offering)- bu işleri kolaylaştıracaktır. Son dosya genel anahtar olmalıdır. Örneğin:debug1: Offering RSA public key: /Users/macbookpro/.ssh/id_rsa
Gianfranco S.

3
githubile aynı şey değil git.
ForeverWintr

9

Üzerinde belirtilmediği sürece .ssh/configvarsayılan özel anahtar dosyasını kullanacaktır.

Varsayılan dosya, ~/.ssh/id_rsaveya ~/.ssh/id_dsaveya ~/.ssh/identityprotokol sürümüne bağlıdır.


Anahtarlar bilinen ana bilgisayarlara ne zaman eklenir?
mountainLion

6

Zevkime göre en pratik olduğunu söyleyebilirim:

GIT_SSH_COMMAND='ssh -v' git …

Tabii ki, koşullara bağlı olarak, sadece mevcut SHELL'in ortamına aktarmanız faydalı olabilir, böylece her seferinde manuel olarak eklemek zorunda kalmazsınız. O zaman şu şekilde olur:

export GIT_SSH_COMMAND='ssh -v'
git …

- man gitÖnerildiği gibi Git'in SSH kullanımıyla operasyonlarını etkileyebilecek birkaç çevresel değişken var. man sshSize göre -vseçeneği dağıtırken bazı hata ayıklama bilgileri alabilirsiniz (sadece değil, daha fazlasını merak ediyorsanız kılavuza da bakın).

hangi anahtar kullanılıyor?

Çıktıda şöyle görürdünüz ...

debug1: Offering public key: …

… Qn'inizin cevabı budur.


1
EVET. Kabul edilen cevap bu olmalıdır. O pencerelerde CMD çalışmasını sağlamak için (ugh), kullanım: set GIT_SSH_COMMAND=ssh -v. Bu, ssh-config Inlcude-Path'in Windows'ta böyle bir şey olması gerektiğini anlamama yardımcı oldu: Include /C/Users/YourUserName.ssh/configssh yapmak ve dolayısıyla git, daha sonra örneğin HOST *git / ssh'nin kullandığı kimlik dosyasını belirtmek için bir girdi kullanan bir yapılandırma dosyası kullanmak.
icyerasor

5

Yana gitsadece kullanır sshbağlamak için, bu hangisi anahtar kullanacak sshuzak ana bilgisayara bağlanmak için kullanmak. Ayrıntılar için ~/.ssh/configdosyaya bakın; hostBlok kullanan IdentityFilekullanımına özel anahtarı belirtmek için yönergesi. ssh_config(5)Manpage tam ayrıntıları içerir.


Hmm .. dosya sistemimde mevcut değil. Olmalı mı?
James Raitsev

1
@JAM Hangi işletim sistemini kullanıyorsunuz? Ayrıca, bazen yapılandırma dosyası şu /etc/ssh/ssh_config

MAKOS'tayım. /etc/ssh_config
Yorumlanmış

@sarnold ~/.ssh/configKendiniz yaratabilirsiniz .
xdazz

4

Bu süper bir avantaj olabilir, ancak çalıştırdıktan sonra ssh -vT git@github.combana /root/.sshanahtarları kontrol ettiğini gösterdi , ana dizinimi kontrol etmesini bekliyordum ve sonra kök olarak oturum açtığımı fark ettim!


Bu teknik, aynı sshsorgulama yöntemlerinin yanı sıra doğru çözümlerdir. Teşekkürler.
eigenfield

1

Uzak sunucuda sshd_config dosyasını düzenleyin ve LogLevel'i INFO'dan VERBOSE'a değiştirin ve ssh'ı yeniden başlatın.

Artık günlük dosyanız, her bir kullanıcının kimliğini doğrulamak için kullanılan anahtarın parmak izini tutacaktır.

Ubuntu'da bu dosyalar şunlardır:

/etc/ssh/sshd_config
/var/log/auth.log

ancak başka bir dağıtımda farklı olabilirler. Yalnızca konumlarını google'da arayın (örneğin bazıları / var / log / secure kullanın).

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.