Étape 1
Assurez-vous que votre agent local est prêt
Ce n'est pas parce que vous pouvez ssh dans votre serveur bastion sans spécifier votre chemin de clé ou être invité à entrer le mot de passe que votre agent ssh est en cours d'exécution et détient votre clé. Certains systèmes d'exploitation modernes (par exemple: OSX) gèrent cela pour vous.
Sur votre machine locale
$ ssh-add -L
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13== ~/.ssh/mykey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13== ~/.ssh/sharedkey.pem
Fig. 1
Cela signifie que votre agent est en cours d'exécution et possède votre clé.
$ ssh-add -L
The agent has no identities.
fig.2
Cela signifie que vous n'avez ajouté aucune clé à votre agent. Corrigez cela avec:
ssh-add ~/.ssh/mykey.pem ~/.ssh/sharedkey.pem
fig.3
Étape 2
Assurez-vous que votre agent distant est prêt
SSH dans votre serveur bastion et répétez la vérification des fig.1 et fig.2 . Cependant, l'erreur que vous êtes le plus susceptible d'obtenir est la suivante:
$ ssh-add -L
Could not open a connection to your authentication agent.
fig.4
Cela signifie très probablement que votre client SSH ne transfère pas votre connexion d'agent d'authentification.
Vous pouvez forcer cela avec l' -A
indicateur (tant que la configuration sshd sur le serveur le permet, ce qui est la valeur par défaut ).
$ ssh -A bastion.ec2
fig.5
Étape 3
Assurez-vous que vous utilisez les bonnes touches
Si vous avez ajouté des clés à votre agent, votre agent transfère et votre agent distant répertorie vos clés locales. Il n'y a que deux raisons probables pour lesquelles vous n'obtenez pas de connexion. Soit vous n'utilisez pas la bonne clé, soit vous n'utilisez pas le bon nom d'utilisateur.
Sortez l'homologue public sur votre clé privée:
$ cd
$ cd .ssh
$ ssh-keygen -y -f mykey.pem
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13
$ ssh-keygen -y -f sharedkey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13
fig.6
Ceux - ci devraient être les mêmes que ce que vous voyez de ssh-add -L
jusqu'à la ==
proximité de la fin.
Maintenant, d'une manière ou d'une autre, vous devez entrer dans la boîte à laquelle vous ne parvenez pas à vous connecter et regarder le contenu du $HOME/.ssh/authorized_keys
fichier pour l'utilisateur auquel vous essayez de vous connecter. Vous devez vous assurer que la clé publique que vous sortez avec la commande ci-dessus se trouve dans ce fichier sur une ligne seule. Vous ne pouvez pas croire que les sharedkey.pub
cubes Bro 2 vous ont envoyé un e-mail. Vérifier! Cela peut nécessiter d'obtenir quelqu'un d'autre qui peut se connecter en tant qu'utilisateur pour vous obtenir le fichier authorized_keys ou obtenir un accès root. Si vous êtes allé si loin et que cela ne fonctionne toujours pas, vous êtes au-delà des raccourcis.
Étape 4
Rendre facile
J'espère que les étapes ci-dessus vous ont permis de commencer. Maintenant, faisons disparaître ce mal de tête aussi longtemps que vous utilisez ce poste de travail.
Configurez votre client ssh local
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 [email protected]
fig.7
Si vous ne retirez rien d'autre de la fig.7, cela devrait être la bonne utilisation de ProxyCommand
& ForwardAgent
.
Remplissez automatiquement votre .bash_profile
Vous ne voulez pas avoir à faire ssh-add
manuellement chaque fois que vous vous connectez à votre machine. ~/.bash_profile
est un script qui s'exécute à chaque connexion **. Mettez la ligne de la fig. 3 là-dedans et vous devriez toujours avoir votre agent prêt.
** Ne confondez pas cela avec celui .bashrc
qui s'exécute pour chaque nouveau terminal [interactif]. Votre agent continue de fonctionner même si vous fermez toutes vos sessions de terminal. Pas besoin de recharger vos clés
Alternative à l'utilisation de .bash_profile
J'ai également créé un résumé qui ajoute un agent de lancement OSX / macOS . Vous pouvez utiliser cette méthode pour démarrer votre ssh-agent
démarrage. Il est très simple à installer:
curl -sSL https://gist.github.com/RichardBronosky/429a8fff2687a16959294bcee336dd2a/raw/install.sh | bash
ForwardAgent yes
avec-A
si l'hôte ne le permet pas.Vous ne transférez pas les clés. Vous transférez l'agent et il peut avoir des clés complètement indépendantes de celles que vous utilisez pour l'authentification lors du premier saut. Vérifiez les clés de votre agent à l'aide de
ssh-add -L
.Mais encore mieux, exécutez la connexion sur
ProxyCommand ssh -W %h:%p [email protected]
, ce qui évitera la nécessité de transmettre l'agent, le tas ou les options de ligne de commande et la nécessité d'authentifier de l'hôte immédiat.Vous pouvez simplement mettre cela dans votre configuration (voir
man ssh_config
).la source
ssh-add mykey.pem sharedkey.pem
puis confirmezssh-add -L
ensuitessh -At [email protected] ssh [email protected]