Ich verbinde mich über SSH von einem Computer aus, auf dem meine Schlüssel gespeichert sind, leite sie an einen zweiten Computer weiter und versuche dann, die Schlüssel in tmux zu verwenden. Ich scheine die Weiterleitung beim Betreten von tmux "zu verlieren". Wie kann ich "wieder weiterleiten", damit ich meine Schlüssel innerhalb von tmux verwenden kann?
$ 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)
Antworten:
Wenn Sie eine bereits vorhandene tmux-Sitzung anhängen, erbt die Shell die Umgebungsvariablen nicht von Ihrer Anmeldeshell. Insbesondere werden die Umgebungsvariablen des ssh-Agenten nicht übernommen.
Versuchen Sie dieses Update :
Erstellen Sie dieses Skript und speichern Sie es in $ HOME / .ssh / saveagent
Fügen Sie es Ihrem Shell-Startskript hinzu. Zum Beispiel, wenn Sie bash verwenden:
Nachdem Sie den tmux angeschlossen haben, führen Sie ihn aus
. $HOME/.ssh/latestagent
Siehe auch Wie kann ich ein Skript sofort nach dem Herstellen einer Verbindung über SSH ausführen? und An tmux-Sitzung anhängen und einen Befehl ausführen
quelle
saveagent
Skript sein sollte:echo "export $var=\"$(eval echo '$'$var)\""
. b - Daslatestagent
Skript sollte statt mit aufgerufensource
werdensh
, so dass sich das Setzen der Variablen auf die aufrufende Shell auswirkt. Derlatestagent
automatische Aufruf des Skripts beim Anhängen von tmux kann über die hier beschriebene Methode erfolgen: unix.stackexchange.com/questions/86925/…Sofern Sie kein Skript erstellen möchten, das alle Variablen enthält, die in jeder Shell benötigt werden, die Sie in einer neuen Shell, die von denselben
tmux
Serversitzungen erzeugt wurde, weiter erzeugen, möchten Sietmux
die Variablen wahrscheinlich mit demset-environment
Befehl in die Sitzung oder globale Umgebungen einfügen. Zum Beispiel so (für bash):Denken Sie daran, das
-g
Flag hinzuzufügen, wenn Sie es auch in anderen Sitzungen verwenden möchten, und es zu verwenden,-t <session>
wenn Sie es von außerhalb von ausführentmux
.quelle
Nachdem ich die anderen Antworten hier gelesen hatte, entschloss ich mich, mein öffentliches / privates Schlüsselpaar auf den Remote-Server zu kopieren, damit ich mich nicht mehr um die Weiterleitung von Agenten kümmern musste.
quelle