Dies ist eine Erweiterung meiner früheren Frage . Ich muss einen lokal gespeicherten Befehl (dh mount /home
) auf einem Remote-Computer bei der SSH-Anmeldung ausführen . Im Moment benutze ich:
ssh -t mymachine.example.com 'mount /home ; /bin/bash'
Das funktioniert gut, aber ich habe mich gefragt, ob ich diesen Befehl in meinen .ssh/config
eingeben kann, damit ich ihn nicht jedes Mal eingeben muss. Ich habe eine LocalCommand
Option gefunden, sehe aber keine RemoteCommand
Option.
Es ist wichtig, dass die command-to-be-executed
Daten auf dem lokalen Computer gespeichert werden, da sie ein Kennwort zum Öffnen einer verschlüsselten Festplatte enthalten. Aus diesem Grund kann ich den Befehl nicht .profile
auf dem Remote-Computer eingeben.
~/.ssh/rc
ist der superuser wieder auf dem remote rechner gespeichert. Bezüglich Ihres Kommentars zumps
Anzeigen meiner Befehlszeilenparameter (einschließlich des Kennworts) stört mich das nicht. Es ist die entfernte Maschine, der ich nicht vertraue. Mein lokaler Computer wird nur von mir selbst verwendet, sodass niemand sonst Zugriff darauf hatps
.ps
Ausgabe erfolgt von der Remote-Maschine. Der Punkt ist: Alles, was Siessh
als Remote-Befehl angeben, wird auf dem Remote-Server in angezeigtps
.Dies wurde in OpenSSH 7.6 hinzugefügt:
Ref: https://www.openssh.com/txt/release-7.6
quelle
quelle
Dies können Sie in Zusammenarbeit mit der Remote-Maschine wie folgt tun.
Füllen Sie den Befehl auf Ihrem lokalen Computer so aus, dass er in der Umgebungsvariablen ausgeführt wird
LC_SSH_INITIAL_COMMAND
. SSH ist normalerweise so konfiguriert, dass alle Umgebungsvariablen des Formulars übergeben werdenLC_*
, da es sich normalerweise um Gebietsschemaeinstellungen handelt.Führen Sie auf dem Remotecomputer
eval "$LC_SSH_INITIAL_COMMAND"
die Per-Key-Einstellungen in~/.ssh/authorized_keys
oder von aus~/.ssh/rc
(beachten Sie, dass Sie bei Verwendung einer~/.ssh/rc
Datei darauf achtenxauth
müssen, dass die X11-Weiterleitung manuell ausgeführt wird).Mit der
authorized_keys
Methode können Sie auf ähnliche Weise einen Befehl ausführen, wenn die SSH-Sitzung beendet wird (es sei denn, der Shell-Prozess wird abrupt beendet; Sie sollten mindestens das HUP-Signal abfangen, damit Ihr Befehl ausgeführt wird, selbst wenn die Verbindung unterbrochen wird).Dies ist jedoch keine gute Lösung, um etwas globales wie das Mounten eines Dateisystems zu tun. Sie müssen darauf achten, nicht erneut zu mounten, wenn das Dateisystem bereits gemountet ist (z. B. aufgrund eines gleichzeitig ausgeführten SSH-Befehls), und nicht das Mounten beim Abmelden aufzuheben. Meine Empfehlung für diesen Anwendungsfall lautet weiterhin , das Mounten explizit durchzuführen, dann Remotebefehle auszuführen, ohne etwas Besonderes zu tun, und das Mounten aufzuheben, wenn Sie nicht mehr auf dieses Dateisystem zugreifen möchten.
quelle
Ich habe es nicht ausprobiert, aber ein Ansatz könnte sein
Subsystem
auf der Fernbedienung einsshd_config
, das den gewünschten Befehl ausführt, indem Sie einige Umgebungsvariablen lesenSendEnv
on the local.ssh/config
, um solche Schlüssel an den Remote-Server weiterzuleitenquelle