Farklı kullanıcı adları ve farklı anahtarlar kullanarak SSH Agent iletme


19

Bir Orada çok benzer soru cevap halinde bu sorunun cevabı olabileceğini. Maalesef, "sorduğum soruyu cevaplamaya gerek yok, çünkü sorun düşündüğüm şey değildi."

Kurulum

  1. Sunucu bastion.ec2 SSH bağlantısı kabul benim iş istasyonu aracılığıylassh -i mykey.pem myname@bastion.ec2
  2. Sunucu service1.ec2 ssh bağlantıları kabul yalnızca bastion.ec2 gelen aracılığıylassh -i sharedkey.pem shareduser@service1.ec2

Gereksinimler

  1. Her iki tuş da sadece iş istasyonumda, bu yüzden anahtarı kopyalamadan 2. komutu yapamıyorum
  2. Güvenlik nedeniyle ssh anahtarlarını bastion.ec2 dosyasına kopyalamak yerine ssh-agent iletmeyi kullanmak istiyorum

Çözüm

Burada devreye giriyorsunuz. 2. bağlantı için nasıl farklı bir anahtar iletebilirim?

Paylaşılan kullanıcı mykey.pub içeriyorsa, bu ~/.ssh/authorized_keysişe yarar :

ssh -i mykey.pem myname@bastion.ec2 ssh shareduser@service1.ec2

Ancak, her kullanıcının ortak anahtarını her sunucuya koymasını istemiyorum.

Yanıtlar:


23

Aşama 1

Yerel temsilcinizin hazır olduğundan emin olun

Anahtar yolunuzu belirtmeden veya parola girmeden bastion sunucunuza ssh yapabilmeniz, ssh aracınızın çalıştığı ve anahtarınızı tuttuğu anlamına gelmez. Bazı modern işletim sistemleri (örneğin: OSX) bunu sizin için halleder.

Yerel makinenizde

$ ssh-add -L
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13== ~/.ssh/mykey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13== ~/.ssh/sharedkey.pem

fig.1

Bu, ajanınızın çalıştığı ve anahtarınızın olduğu anlamına gelir.

$ ssh-add -L
The agent has no identities.

incir. 2

Bu, ajanınıza herhangi bir anahtar eklemediğiniz anlamına gelir. Bunu şu şekilde düzeltin:

ssh-add ~/.ssh/mykey.pem ~/.ssh/sharedkey.pem

Şek. 3

Adım 2

Uzak aracınızın hazır olduğundan emin olun

SSH'yi bastion sunucunuza ekleyin ve kontrolü şekil 1 ve şekil 2'den itibaren tekrarlayın . Ancak, alma olasılığınız daha yüksek olan hata şudur:

$ ssh-add -L
Could not open a connection to your authentication agent.

res.4

Bu büyük olasılıkla SSH istemcinizin kimlik doğrulama aracısı bağlantınızı yönlendirmediği anlamına gelir.

Bunu -Abayrakla zorlayabilirsiniz ( sunucudaki sshd yapılandırması izin verdiği sürece, bu varsayılan değerdir ).

$ ssh -A bastion.ec2

fig.5

Aşama 3

Doğru tuşları kullandığınızdan emin olun

Aracınıza anahtarlar eklediyseniz, ajanınız yönlendiriyor ve uzak ajanınız yerel anahtarlarınızı listeliyor. Bağlantı kurmamanızın sadece iki nedeni olabilir. Ya doğru anahtarı kullanmıyorsunuz ya da doğru kullanıcı adını kullanmıyorsunuz.

Herkese açık meslektaşınızı özel anahtarınıza gönderin:

$ cd
$ cd .ssh
$ ssh-keygen -y -f mykey.pem
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13
$ ssh-keygen -y -f sharedkey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13

fig.6

Bunlar, ssh-add -Lyakından ==sonuna kadar gördüğünüzle aynı olmalıdır .

Şimdi şu ya da bu şekilde bağlanamadığınız kutuya girmeniz ve bağlanmaya $HOME/.ssh/authorized_keysçalıştığınız kullanıcı için dosyanın içeriğine bakmanız gerekiyor. Yukarıdaki komutla çıkardığınız ortak anahtarın bu dosyada kendi başına bir satırda olduğundan emin olmalısınız. sharedkey.pubBro 2 küplerinin size e-postayla gönderilmesinin doğru olduğuna güvenemezsiniz . Doğrulayın! Bunun için, yetkili kullanıcı_keys dosyasını almanız için kullanıcı olarak SSH alabilecek başka birini almanız veya root erişimi almanız gerekebilir. Buraya kadar geldiyseniz ve hala çalışmıyorsa, kısayollar almanın ötesindesiniz.

4. Adım

Kolaylaştır

Umarım yukarıdaki adımlar sizi bu duruma sokmuştur. Şimdi bu iş istasyonunu kullandığınız sürece baş ağrısını ortadan kaldıralım.

Yerel ssh istemcinizi yapılandırın

Host *
    # A lot of people put an IdentityFile line in this Host * section.
    # Don't do that unless you will use only 1 key everywhere forever.
    #IdentityFile id_rsa

Host bastion.ec2
    # You want to make sure you always forward your agent to this host.
    # But don't forward to untrusted hosts. So don't put it in Host *
    ForwardAgent yes
    # Go a head and put the IP here in case DNS ever fails you.
    # Comment it out if you want. Having it recorded is a good backup.
    HostName 172.31.0.1
    # You don't want to create a proxy loop later, so be explicit here.
    ProxyCommand none
    # SSH should try using all keys in your .ssh folder, but if you
    # know you want this key, being explicit speeds authentication.
    IdentityFile ~/.ssh/mykey.pem

# Connect effortlessly by hostname or IP address
# This assumes that your internal DNS uses the fake TLD ec2
# This assumes that 172.31.0.0 is your C-Class subnet
Host *.ec2 172.31.*
    # This command says proxy all ssh connections through bastion as if
    # you had done an ssh -A
    ProxyCommand ssh -W %h:%p bastion.ec2
    ForwardAgent yes
    # These next lines are documentation you leave as a love letter to
    # your future self when all else fails or you have to help a
    # coworker and decide to look at your own config.
    # ssh-add ~/.ssh/*.pem
    # ssh -At bastion.ecs ssh admin@172.31.18.19

şek.7

Şekil 7'den başka bir şey almazsanız , ProxyCommand& işlevinin doğru kullanımı olmalıdır ForwardAgent.

.Bash_profile dosyanızı otomatik olarak doldurun

ssh-addMakinenize her giriş yaptığınızda manuel olarak yapmak istemezsiniz . ~/.bash_profileher giriş yaptığınızda çalışan bir betiktir **. Dan çizgi koyun şek. 3 orada ve her zaman ajan hazır olmalıdır.

** Bunu .bashrcher yeni [interaktif] terminal için çalışanlarla karıştırmayın . Tüm terminal oturumlarınızı kapatsanız bile temsilciniz çalışmaya devam eder. Anahtarlarınızı yeniden yüklemenize gerek yok

.Bash_profile kullanmaya alternatif

Ayrıca bir OSX / macOS Launch Agent ekleyen bir özü oluşturdum . ssh-agentÖnyüklemenizi başlatmak için bu yöntemi kullanabilirsiniz . Kurulum çok kolaydır:

curl -sSL https://gist.github.com/RichardBronosky/429a8fff2687a16959294bcee336dd2a/raw/install.sh | bash

2. Adım: zorlayamaz ForwardAgent yesile -Aev sahibi izin vermiyor eğer.
dlamblin

@ Dlamblin teşekkürler, ilgili bilgileri ve sshd belgelerine bir bağlantı ekledim.
Bruno Bronosky

1

Burada devreye giriyorsunuz. 2. bağlantı için nasıl farklı bir anahtar iletebilirim?

Anahtarları iletmezsiniz. Aracıyı yönlendirirsiniz ve ilk atlamada kimlik doğrulama için kullandığınızdan tamamen bağımsız anahtarlara sahip olabilirsiniz. Düğmesini kullanarak ajanınızdaki tuşları kontrol edin ssh-add -L.

Ancak daha da iyisi, ProxyCommand ssh -W %h:%p myname@bastion.ec2aracı, öbek veya komut satırı seçeneklerini iletme ve hemen ana bilgisayardan kimlik doğrulama gerekliliğini önleyecek bağlantıyı çalıştırın .

Bunu yapılandırmanıza koyabilirsiniz (bkz. man ssh_config).


1
Neyse ki aslında burada neden bahsettiğinizi biliyorum, ama ortalama bir kullanıcı bilmiyordu. Anlamsallıkları "anahtarları değil aracıları yönlendirirsiniz" şeyi ile tartışırsınız. Bunu çözebilmem için bana yeterince şey verdin, bu yüzden cevabımı eklemeden önce cevabını düzeltme şansı vermek istiyorum. İpucu: ssh-add mykey.pem sharedkey.pemDaha sonra onaylamak ile ssh-add -Ldaha sonrassh -At myname@bastion.ec2 ssh shareduser@service1.ec2
Bruno Bronosky
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.