Je me connecte via SSH à partir d'une machine sur laquelle mes clés sont stockées, je les transfère vers une deuxième machine, puis j'essaie d'utiliser les clés à partir de tmux. Il me semble "perdre" la redirection en entrant dans tmux. Comment "transférer à nouveau" pour pouvoir utiliser mes clés depuis tmux?
$ ssh [server] -o ForwardAgent=yes
$ git pull # Succeeds.
$ /bin/bash
$ git pull # Still succeeds, despite new shell.
$ exit
$ tmux attach
$ git pull # Permission denied (publickey)
Réponses:
Si vous attachez une session tmux déjà existante, le shell n'hérite pas des variables d'environnement de votre shell de connexion. En particulier, il n'héritera pas des variables d'environnement de l'agent ssh.
Essayez ce correctif :
Créez ce script et placez-le dans $ HOME / .ssh / saveagent
Ajoutez-le à votre script de démarrage du shell. Par exemple, si vous utilisez bash:
Après avoir attaché le tmux, exécutez
. $HOME/.ssh/latestagent
Voir aussi Comment puis-je exécuter un script immédiatement après la connexion via SSH? et attacher à la session tmux et exécuter une commande
la source
saveagent
script doit être:echo "export $var=\"$(eval echo '$'$var)\""
. b - lelatestagent
script doit être appelé avecsource
au lieu desh
, donc la définition des variables affectera le shell appelant. c - l'appellatestagent
automatique du script lors de l'attachement de tmux peut être fait via la méthode décrite ici: unix.stackexchange.com/questions/86925/…À moins que vous ne vouliez source un script contenant toutes les variables dont vous avez besoin dans chaque shell que vous générez dans un nouveau shell généré par les mêmes
tmux
sessions de serveur, vous voudrez probablement diretmux
de mettre les variables dans la session ou les environnements globaux avec laset-environment
commande. Par exemple, comme ceci (pour bash):n'oubliez pas d'ajouter le
-g
drapeau si vous le souhaitez également dans d'autres sessions et de l'utiliser-t <session>
si vous l'exécutez de l'extérieur detmux
.la source
Après avoir lu les autres réponses ici, j'ai décidé de simplement copier ma paire de clés publique / privée sur le serveur distant, afin de ne plus avoir à me soucier du transfert d'agent.
la source