Schritt 1
Stellen Sie sicher, dass Ihr lokaler Agent bereit ist
Nur weil Sie in Ihren Bastion-Server ssh können, ohne Ihren Schlüsselpfad anzugeben oder zur Eingabe des Kennworts aufgefordert zu werden, bedeutet dies nicht, dass Ihr ssh-Agent ausgeführt wird und Ihren Schlüssel hält. Einige moderne Betriebssysteme (z. B. OSX) erledigen dies für Sie.
Auf Ihrem lokalen Computer
$ ssh-add -L
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13== ~/.ssh/mykey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13== ~/.ssh/sharedkey.pem
Abb.1
Das bedeutet, dass Ihr Agent ausgeführt wird und Ihren Schlüssel hat.
$ ssh-add -L
The agent has no identities.
Abb.2
Das heißt, Sie haben Ihrem Agenten keine Schlüssel hinzugefügt. Beheben Sie das mit:
ssh-add ~/.ssh/mykey.pem ~/.ssh/sharedkey.pem
Abb. 3
Schritt 2
Stellen Sie sicher, dass Ihr Remote-Agent bereit ist
SSH in Ihren Bastionsserver und wiederholen Sie die Prüfung aus Abb.1 und Abb.2 . Der Fehler, den Sie mit größerer Wahrscheinlichkeit erhalten, ist jedoch folgender:
$ ssh-add -L
Could not open a connection to your authentication agent.
Abb.4
Dies bedeutet höchstwahrscheinlich, dass Ihr SSH-Client Ihre Authentifizierungsagentenverbindung nicht weiterleitet.
Sie können dies mit dem -A
Flag erzwingen (solange die sshd- Konfiguration auf dem Server dies zulässt, was die Standardeinstellung ist ).
$ ssh -A bastion.ec2
Abb.5
Schritt 3
Stellen Sie sicher, dass Sie die richtigen Tasten verwenden
Wenn Sie Ihrem Agenten Schlüssel hinzugefügt haben, leitet Ihr Agent weiter und Ihr Remote-Agent listet Ihre lokalen Schlüssel auf. Es gibt nur zwei mögliche Gründe, warum Sie keine Verbindung erhalten. Entweder verwenden Sie nicht den richtigen Schlüssel oder Sie verwenden nicht den richtigen Benutzernamen.
Geben Sie das öffentliche Gegenstück zu Ihrem privaten Schlüssel aus:
$ cd
$ cd .ssh
$ ssh-keygen -y -f mykey.pem
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13
$ ssh-keygen -y -f sharedkey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13
Abb.6
Diese sollten die gleichen sein, die Sie ssh-add -L
bis zum ==
Ende gesehen haben.
Auf die eine oder andere Weise müssen Sie in die Box gelangen, zu der Sie keine Verbindung herstellen können, und den Inhalt der $HOME/.ssh/authorized_keys
Datei für den Benutzer anzeigen, als den Sie eine Verbindung herstellen möchten. Sie müssen sicherstellen, dass sich der öffentliche Schlüssel, den Sie mit dem obigen Befehl ausgeben, in dieser Datei in einer eigenen Zeile befindet. Sie können nicht darauf vertrauen, sharedkey.pub
dass die Bro 2-Würfel, die Sie per E-Mail erhalten haben, richtig sind. Überprüfen! Dies erfordert möglicherweise, dass jemand anderes, der SSH als dieser Benutzer verwenden kann, die Datei "authorized_keys" erhält oder Root-Zugriff erhält. Wenn Sie so weit gekommen sind und es immer noch nicht funktioniert, können Sie keine Abkürzungen mehr verwenden.
Schritt 4
Mach es einfach
Hoffentlich haben Sie die oben genannten Schritte dazu gebracht. Lassen Sie uns jetzt die Kopfschmerzen verschwinden, solange Sie diese Workstation verwenden.
Konfigurieren Sie Ihren lokalen SSH-Client
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
Abb.7
Wenn Sie Abb. 7 nichts anderes wegnehmen , sollte es die richtige Verwendung von ProxyCommand
& sein ForwardAgent
.
Füllen Sie Ihr .bash_profile automatisch aus
Sie möchten dies nicht ssh-add
jedes Mal manuell tun müssen, wenn Sie sich bei Ihrem Computer anmelden. ~/.bash_profile
ist ein Skript, das jedes Mal ausgeführt wird, wenn Sie sich anmelden **. Setzen Sie die Linie aus Abb. 3 drin und Sie sollten immer Ihren Agenten bereit haben.
** Verwechseln Sie dies nicht mit dem, .bashrc
was für jedes neue [interaktive] Terminal ausgeführt wird. Ihr Agent wird auch dann weiter ausgeführt, wenn Sie alle Terminalsitzungen schließen. Sie müssen Ihre Schlüssel nicht neu laden
Alternative zur Verwendung von .bash_profile
Ich habe auch eine Übersicht erstellt, die einen OSX / macOS-Startagenten hinzufügt . Mit dieser Methode können Sie den ssh-agent
Startvorgang starten. Es ist sehr einfach zu installieren:
curl -sSL https://gist.github.com/RichardBronosky/429a8fff2687a16959294bcee336dd2a/raw/install.sh | bash
ForwardAgent yes
mit ,-A
wenn der Host es nicht zulässt.