Ich habe einen privaten Schlüssel für mein Github-Konto eingerichtet, dessen Passphrase meines Erachtens im Schlüsselbund von OS X gespeichert ist. Ich muss es auf keinen Fall eingeben, wenn ich ein Terminalfenster öffne und eintrete ssh [email protected]
.
Wenn ich bash über eine ssh-Sitzung oder lokal in einer tmux-Sitzung ausführe, muss ich die Passphrase jedes Mal eingeben, wenn ich versuche, ssh auf github zu setzen.
Diese Frage legt nahe, dass ein ähnliches Problem mit dem Bildschirm besteht, aber ich verstehe das Problem nicht gut genug, um es in tmux zu beheben. Es gibt auch diese Seite, die eine ziemlich komplizierte Lösung enthält, aber für zsh.
EDIT :
Als Antwort auf die Antwort von @ Mikel erhalte ich von einem lokalen Terminal die folgende Ausgabe:
[~]
$ echo $SSH_AUTH_SOCK
/tmp/launch-S4HBD6/Listeners
[~]
$ ssh-add -l
2048 [my key fingerprint] /Users/richie/.ssh/id_rsa (RSA)
[~]
$ typeset -p SSH_AUTH_SOCK
declare -x SSH_AUTH_SOCK="/tmp/launch-S4HBD6/Listeners"
Wohingegen ich über ssh oder im tmux bekomme:
[~]
$ echo $SSH_AUTH_SOCK
[~]
$ ssh-add -l
Could not open a connection to your authentication agent.
[~]
$ typeset -p SSH_AUTH_SOCK
bash: typeset: SSH_AUTH_SOCK: not found
echo $SSH_AGENT_PID
Gibt nichts zurück, egal von welcher Shell ich es starte.
typeset -p SSH_AUTH_SOCK
?bash: typeset: SSH_AUTH_SOCK: not found
aus ssh / tmux heraus. Ich werde es heute Abend vor Ort versuchen, wenn nötig.Antworten:
Mein Kollege hat einige Bash-Funktionen erstellt, um einen Live-Agenten zu finden: https://github.com/wwalker/ssh-find-agent
Er verwendet es hauptsächlich für die Verbindung zwischen Systemen (Laptop zu Desktop usw.), aber ich verwende es am häufigsten für lokale tmux-Sitzungen, in denen Sie sich von Ihrem Fenstermanager abmelden / anmelden (OS X für mich).
Verwendung
Laden Sie ssh-find-agent.bash herunter (
git clone git://github.com/wwalker/ssh-find-agent.git
funktioniert).Fügen Sie ~ / .bashrc Folgendes hinzu:
Dann können Sie Folgendes eingeben, um SSH_AUTH_SOCK in Ihrer aktuellen Shell festzulegen:
quelle
Eine elegante Lösung von dagit.o :
Erstellen
~/.ssh/rc
Hinzufügen
~/.tmux.conf
quelle
Fügen Sie in Ihrer
.tmux.conf
Konfigurationsdatei die folgende Zeile hinzu:Dadurch werden diese Umgebungsvariablen von Ihrer Hauptshell in alle Shells kopiert, die in tmux geöffnet wurden. Dadurch kann ssh-agent in diesen tmux-Shells ordnungsgemäß arbeiten.
quelle
update-environment
. Das OP sollte ihrenupdate-environment
Wert überprüfen und möglicherweise aktualisieren, wo immer er bereits geändert wird.update-environment
ist richtig eingestellt. Das Problem tritt jedoch weiterhin auf.tmux
Server vorhanden ist, was dem Zweck des erneuten Anfügens widerspricht ... Vielleicht gibt es eine Befehlszeilenoption, um diese Variablen erneut zu aktualisieren?Es ist mir passiert, dass Fenster, die beim Herstellen einer Verbindung über ssh von OS X erstellt wurden, nach einer Weile nach meiner Passphrase fragten. Ich habe einen Weg gefunden, das zu beheben, indem ich diese Zeile von http://santini.di.unimi.it/extras/ph/my-tmux-setup.html gestohlen habe
Führen Sie es einfach aus dem Bereich, der sich beschwert.
quelle
Ich bin mir nicht sicher, ob Sie bash oder eine andere Shell verwenden, aber das tmux-Setup dieses Typen sieht so aus, als würde es für bash funktionieren. Ich persönlich verwende zsh mit oh-my-zsh und habe festgestellt, dass ssh-agent nach dem Hinzufügen von tmux funktioniert
zu meiner .zshrc-Datei und lud die Konfiguration in meinen laufenden zsh-Sitzungen neu. Ich fand auch die zsh-orientierte Lösung dieses Typen , aber es stellte sich für mich als unnötig heraus.
quelle
Was macht:
drucken?
Führen Sie es in Ihrem normalen Terminal und dann in Ihrer
tmux
Sitzung aus. Sie sollten dasselbe drucken.quelle
ssh
ist einfach. Aktivieren Sie die Agentenweiterleitung. Der einfachste Weg, dies zu tun, ist,ssh -A
statt auszuführenssh
. Verwenden Sie einen Alias, damit Sie ihn nicht jedes Mal eingeben oder in Ihren einfügen müssen.SSH/config
.Es gibt viele Lösungen, aber die einfachste findet sich in der Antwort von Hans Ginzel vom 8. Januar 2016 auf eine verwandte StackOverflow-Frage vom 27. Januar 2014 . Fügen Sie Ihrer Shell
~/.profile
oder ähnlichem einfach Folgendes hinzu :Es müssen keine mehrzeiligen Funktionen definiert oder neue temporäre Dateien erstellt werden. Wenn Sie keinen Alias erstellen möchten
ssh
, ändern Sie ihn einfach infixssh
und entfernen ihn&& ssh
am Ende und führenfixssh
Sie ihn aus, wenn Sie versuchen,ssh
aus einer erneut angehängten tmux-Sitzung heraus zu starten.Die Antwort von Hans Ginzel legt nahe, dass eine "neuere Version" von tmux benötigt wird, um zu funktionieren
show-env -s
. Dies funktioniert für mich in tmux 2.7, und auf meiner Lektüre des Changelog ,-s
wurde am 3. Juni 2008 aufgenommen kurz vor der Veröffentlichung von tmux 0,3. tmux 2.3 (29. September 2016) ist in Debian stable.quelle