Wann möchte ich starten (oder neu starten) ssh-agent
Es gibt mir ein paar Befehle, die ich ausführen soll eval $(ssh-agent)
. Natürlich schlägt dies für Fische fehl, da es die Syntax für bash oder csh gibt.
Die Befehle sehen wie folgt aus:
SSH_AUTH_SOCK=/var/folders/v4/c116f_790t7g58lh3jbr7_vm0000gq/T//ssh-L95xhmGl9FZo/agent.36846; export SSH_AUTH_SOCK;
SSH_AGENT_PID=36847; export SSH_AGENT_PID;
echo Agent pid 36847;
oder für csh:
setenv SSH_AUTH_SOCK /var/folders/v4/c116f_790t7g58lh3jbr7_vm0000gq/T//ssh-Tf8etHZfP9k3/agent.36873;
setenv SSH_AGENT_PID 36874;
echo Agent pid 36874;
Die csh-Version läuft ohne Beanstandung, wenn ich das tue eval (ssh-agent -c)
, und dann echo $SSH_AGENT_PID $SSH_AUTH_SOCK
gibt die erwartete Ausgabe an. In neuen Shells bleiben diese Variablen jedoch nicht erhalten. Was macht setenv
tun? klar es set
s Variablen irgendwie, aber es ist nirgends in der Dokumentation. Wenn ich ein neues Terminal starte, gehen die Variablen verloren, sodass ich nicht sicher bin, ob sie exportiert wurden.
Das habe ich gerade gefunden setenv
ist eine Fischfunktion mit Definition set -gx
Ich nehme an, es setzt die Variable als global
Variable und exportiert es. Ich verstehe den Gültigkeitsbereich der Variablen nicht gut, deshalb ist das das Richtige für die ssh-agent
Variablen?
Für den Kontext mache ich dies auf der Grundlage von Anweisungen bei github . Ich benutze seit Jahren einen SSH-Schlüssel für Github und habe das noch nie getan ssh-agent
oder ssh-add
Ding, aber ich bemerkte es beim Einrichten auf einem neuen Computer. Es scheint auch, dass os x ssh-agent alleine ausführt (oder etwas anderes, das ich in der Vergangenheit schon lange eingerichtet habe), weil es es gibt $SSH_AUTH_SOCK
bereits. Also ist es vielleicht nicht wichtig, dies zu tun? ssh-add
läuft ohne Beanstandung auch ohne Rennen ssh-agent
.
type setenv
functions setenv
siehe mein edit.type
ist aber schön. Es scheint eine Kombination von zu seinwhich
undfunctions
.Antworten:
Ich habe das vor einiger Zeit geschrieben:
Zur Hervorhebung verwende ich create Universal- Variablen aus der Ausgabe von ssh-agent und setenv werden erstellt global Variablen
quelle
kill -0
? Ich sehe das nicht in der Manpage. Und/proc
existiert nicht auf meinem System (vielleicht hat os x es nicht).kill -0 pid
Gibt erfolgreich zurück, wenn diese PID ein laufender Prozess ist, andernfalls ein Fehler. ich benutze/proc
um zu überprüfen, ob eine laufende pid tatsächlich ein ssh-agent-Prozess ist: Es gibt andere Möglichkeiten, dies zu tun (pgrep, ps-Ausgabe analysieren)/proc/
Leitung zu:and ps -p $SSH_AGENT_PID | grep -q 'ssh-agent'
'[s]sh-agent'
Sie stimmen also nicht versehentlich mit dem Befehl grep selbst in der Ausgabe von ps überein.Dies funktioniert für mich unter FreeBSD 10.2. Fügen Sie ~ / .config / fish / config.fish Folgendes hinzu:
Der erste Satz ohne -Ux legt die Umgebungsvariablen für das erste Terminal fest, das ssh-agent startet. Der zweite Satz mit -Ux legt die Umgebungsvariablen für alle anderen Terminals fest.
quelle