it-swarm.com.de

Kann ich env-Variablen über ssh weiterleiten?

Ich arbeite mit mehreren verschiedenen Servern, und es wäre nützlich, einige Umgebungsvariablen so einstellen zu können, dass sie auf allen Servern aktiv sind, wenn ich SSH-fähig bin. Das Problem ist, dass der Inhalt einiger Variablen sensible Informationen enthält (hashed) Passwörter), und ich möchte es nicht in einer .bashrc-Datei herumliegen lassen - ich möchte es nur im Speicher behalten.

Ich weiß, dass Sie SSH verwenden können, um die DISPLAY-Variable (über ForwardX11) oder einen SSH-Agentenprozess (über ForwardAgent) weiterzuleiten. Ich frage mich, ob es eine Möglichkeit gibt, den Inhalt beliebiger Umgebungsvariablen automatisch über SSH-Verbindungen weiterzuleiten. Im Idealfall könnte ich etwas in eine .ssh/config -Datei setzen, damit es automatisch ausgeführt wird, wenn ich es brauche. Irgendwelche Ideen?

36
singingwolfboy

Das ist möglich, aber es muss die Serverkonfiguration geändert werden.

Lesen Sie die Einträge für AcceptEnv in sshd_config (5) und SendEnv in ssh_config (5) .

update:

Sie können sie auch in der Befehlszeile übergeben:

ssh [email protected] "FOO=foo BAR=bar doz"

Beachten Sie, dass jeder, der Zugriff auf den Remote-Computer hat, die Umgebungsvariablen sehen kann, die an einen laufenden Prozess übergeben werden.

Wenn Sie diese Informationen geheim halten möchten, leiten Sie sie besser durch stdin:

cat secret_info | ssh [email protected] remote_program
28
salva

Sie können dies nicht automatisch tun (mit Ausnahme von $DISPLAY, das Sie zusammen mit Ihren Xauth-Informationen mit -X weiterleiten können, sodass Remote-Programme tatsächlich eine Verbindung zu Ihrem Display herstellen können). Sie können jedoch ein Skript mit einem "Here document" verwenden:

ssh ... <<EOF
export FOO="$FOO" BAR="$BAR" PATH="\$HOME/bin:\$PATH"
runRemoteCommand
EOF

Die nicht maskierten Variablen werden lokal erweitert und das Ergebnis an die Gegenseite übermittelt. Für die Variable PATH wird der entfernte Wert von $HOME festgelegt.

11
Aaron Digulla

So etwas wie:

ssh [email protected] bash -c "set -e; $(env); . thescript.sh"

... könnte funktionieren (ungetestet)

Ein bisschen hacken, aber wenn Sie die Serverkonfiguration aus irgendeinem Grund nicht ändern können, könnte es funktionieren.

0