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 -A
bayrakla 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 -L
yakı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.pub
Bro 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-add
Makinenize her giriş yaptığınızda manuel olarak yapmak istemezsiniz . ~/.bash_profile
her giriş yaptığınızda çalışan bir betiktir **. Dan çizgi koyun şek. 3 orada ve her zaman ajan hazır olmalıdır.
** Bunu .bashrc
her 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
ForwardAgent yes
ile-A
ev sahibi izin vermiyor eğer.