SSH aracısından belirli bir iletilmiş anahtar kullanın.


30

Diyelim ki Github için diğer anahtarlarla birlikte bir anahtarım var. Benim ssh ajana (çok anahtarı ekledik ssh-add -LBenim içinde benim ev bilgisayar A'da çizgilerin döner sürü) .ssh/configBen kurdunuz kullanımına hangi anahtar hangi evsahibi ile, örneğin bu yüzden

ssh -T -vvv git@github.com 2>&1 | grep Offering

verir

debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.github

Beklendiği gibi sadece bir anahtar sunuluyor. Ama sonra bazı B ana bilgisayarına ForwardAgent yessshing ve aynı komutu tekrarlayarak, anlıyorum

debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.linode2
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.helium
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.github

Yani bütün anahtarlarımı deniyor. Bu problemlidir çünkü sunucular geri dönmeden önce sadece sınırlı sayıda anahtar denenebilir Too many authentication failures. Bu yüzden .ssh/configeklemek için B ana bilgisayarında düzenlemeyi denedim

Host github.com
  IdentityFile /Users/doxna/.ssh/id_rsa.github
  IdentitiesOnly yes

ama sonra anahtar teklif almıyorum, ama daha doğrusu

debug2: key: /Users/doxna/.ssh/id_rsa.github ((nil))

ki sanırım anahtarın bulunmadığı anlamına gelir (?) Ve sonuçta, anahtar ev bilgisayarımda A, B bilgisayarında değil, yani soru B bilgisayarına nasıl başvuracağıdır? Umarım soruyu açıklamayı başardım.

Yanıtlar:


28

Doğru fikri aldın. Kaçırdığınız tek bölüm, işaret ettiği dosyanın IdentityFilevar olması gerektiğidir. Özel bir anahtar içermesine gerek yoktur, sadece açık anahtarın bulunması yeterlidir.

B ana bilgisayarına ortak anahtarı yazarak aracı açabilirsiniz ssh-add -L | grep /Users/doxna/.ssh/id_rsa.github > ~/.ssh/id_rsa.github.pubve ardından bu dosyayı işaretleyin.~/.ssh/config


Bilginize, genel anahtarın adı önemli değildir. İçeriğe bağlı olarak aracıdan uygun anahtarı seçer.
akostadinov

@akostadinov Doğru. sshİlişkili bir özel anahtar dosyası olmayan bir genel anahtar dosyasına işaret ederseniz , dosyadaki genel anahtarı okumalı ve aracının imzayı oluşturmak için karşılık gelen özel anahtarı kullanmasını sağlamalıdır.
kasperd

Bu, anahtarınızı B ana bilgisayarına etkili bir şekilde kazandırır! Anahtarı sunucuya kaydetmeyen bir çözüm için aşağıdaki @ mc0e yazısına verilen cevaba bakınız.
Pitt

2
@Pitt Hayır değil. Sadece genel anahtarı saklar . Ve bu, açık anahtarın hiçbir zaman gizli tutulması beklenmemesi nedeniyle bir sorun değildir. Ajan iletme, aracı iletme bulunduğu sürece anahtarı kullanmalarına izin verir, ancak aracı hiçbir zaman gizli anahtarı asla göndermez.
kasperd

@ kasperd, özel bir anahtarın gerçek bir kopyasına gerek duymazken, bir kullanıcı aracısına anahtarla canlı bir bağlantı kurarken. Root olarak giriş yapmış diğer kullanıcıların ajan bağlantılarına erişebilirsiniz.
mc0e

5

@Kasperd'dan güzel bir cevap, ancak B ana bilgisayarının güvenliğini tehlikeye attığında veya orada kök yetkisi olan herkese güvenmiyorsan, o zaman hala giriş yaptığın sürece kötüye kullanım için tüm anahtarlarını açığa çıkardığını unutma. o ana bilgisayarda.

Bu yüzden daha iyi bir yaklaşım sadece ihtiyacınız olan anahtarlara erişimi ileriye götürmek olabilir. Belki ssh-agent-filterhangisinin debian / Ubuntu havuzlarında ya da github'da olduğunu deneyin .

EDIT: Anahtarları seçici bir şekilde yönlendirmek ssh-identyerine, yerleştim ssh-agent-filter, ancak birinin umduğu gibi sorunsuz bir deneyim değil.


1
@ Kasperd'in cevabına yaptığı yorumdan: "öyle değil. Sadece kamu anahtarını saklıyor. Ve genel anahtarın ilk etapta gizli tutulması beklenmemesi nedeniyle bu bir sorun değil. aracı, aracı iletme işlemi devam ettiği sürece kullanın, ancak aracı hiçbir zaman gizli anahtarı hiçbir yere göndermez "
Bdoserror

1
@Bdoserror Root olarak, ilişkili kullanıcı oturum açtığında ssh-agent bağlantısını kötüye kullanabilirsiniz. Sadece SSH_*gerçek bir kopyasına sahip olmasanız da, ortam değişkenlerini kopyalayın ve anahtarı kullanarak gitmek istediğiniz yere giriş yapın.
mc0e

Açıklığa kavuşturmak için: bu cevap gerçekten yanlıştır - mc0e'nin kötüye kullanım senaryosu gerçek olsa da, ortak anahtarın kaydedilmesiyle hiçbir ilgisi yoktur - eğer orta ana bilgisayar tehlikeye atılırsa, aracı bağlantınız ne olursa olsun, özel anahtarınızla kimlik doğrulamak için kullanılabilir ortak anahtarı ara ana bilgisayara kaydettiğinizden veya kaydetmediğinizden. Özel anahtar kodunuz tehlikeye girmez ve ortak anahtarın kaydedilmesi kolaylaşmaz, çünkü aracıyla bağlantısı olan herhangi bir saldırgan ortak anahtarlar için istediği gibi isteyebilir.
Monica'yı

@ marc-lehmann yazdıklarımı yeniden okudu. Tuşları iletirseniz o zaman bunlar görünür, ancak hangi tuşların iletileceğini sınırlayabilirsiniz.
mc0e

Yazdıklarını okudum - lütfen yorumlarımızın içeriğini, kişiye değil. Sorun, cevabınızın yanlış olması çünkü yazdığınız gibi, anahtarların uzak ana bilgisayara iletildiğini varsayıyor. Böyle bir şey olmaz ve anahtarların kendileri açığa çıkarılmaz.
Monica’yı
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.