Dizininizin .ssh
30 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?
Dizininizin .ssh
30 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?
Yanıtlar:
.ssh/config
Dosyadaki 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
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.com
size cevap verebilirim.
Not: -i
Anahtarı, komut yürütme sırasında ssh'a hangi anahtar dosyasının kullanılacağını söylemek için de kullanabilirsiniz.
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
github
ile aynı şey değil git
.
Üzerinde belirtilmediği sürece .ssh/config
varsayılan özel anahtar dosyasını kullanacaktır.
Varsayılan dosya, ~/.ssh/id_rsa
veya ~/.ssh/id_dsa
veya ~/.ssh/identity
protokol sürümüne bağlıdır.
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 ssh
Size göre -v
seç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.
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/config
ssh 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.
Yana git
sadece kullanır ssh
bağlamak için, bu hangisi anahtar kullanacak ssh
uzak ana bilgisayara bağlanmak için kullanmak. Ayrıntılar için ~/.ssh/config
dosyaya bakın; host
Blok kullanan IdentityFile
kullanımına özel anahtarı belirtmek için yönergesi. ssh_config(5)
Manpage tam ayrıntıları içerir.
/etc/ssh/ssh_config
/etc/ssh_config
~/.ssh/config
Kendiniz yaratabilirsiniz .
Bu süper bir avantaj olabilir, ancak çalıştırdıktan sonra ssh -vT git@github.com
bana /root/.ssh
anahtarları kontrol ettiğini gösterdi , ana dizinimi kontrol etmesini bekliyordum ve sonra kök olarak oturum açtığımı fark ettim!
ssh
sorgulama yöntemlerinin yanı sıra doğru çözümlerdir. Teşekkürler.
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).