.ssh / config Methode zum Festlegen der Pseudo-Tty-Zuordnung und der Befehlsausführung

13

Gibt es eine Möglichkeit, in .ssh/configeinem Befehl Folgendes anzugeben :

ssh -t remote-host "screen -dR screen_name"

so kann ich einfach mit auf die Remote- screenSitzung zugreifen ssh remote-host?

Im Moment habe ich dieses Problem mit einem benutzerdefinierten Skript gelöst:

$ cat ~/bin/sssh 
#!/bin/sh

/usr/bin/ssh -t $1 "screen -dR ab"

~/binbleibt an erster Stelle $PATH, aber es ist unflexibel und hässlich.

Außerdem möchte ich einen Weg finden, um die automatische Vervollständigung des Hosts für mein benutzerdefiniertes Skript zu implementieren.

AB
quelle
Ich würde ersetzen $1mit $@. Dann können Sie weitere Optionen hinzufügen, nicht nur den Hostnamen. Versuchen Sie zum Abschluss die Ausführung . /usr/share/bash-completion/completions/ssh, gefolgt voncomplete -F _ssh sssh
Alex Stragies

Antworten:

17

Um das tty wie bei der -tOption zuzuweisen, geben Sie es RequestTTY forceals Eintrag in die ssh-Konfigurationsdatei ein (normalerweise in ~/.ssh/config). Um immer einen Befehl auf dem Server auszuführen, nachdem Sie eine Verbindung hergestellt haben, geben Sie RemoteCommand COMMANDden Eintrag ein, in dem COMMANDsich der Befehl befindet, den Sie bei der Verbindung ausführen möchten. Weitere Optionen finden Sie unter man ssh_config.

Host remote-host
    Hostname my.server.com
    User imauser
    IdentityFile /path/to/identity_file
    RequestTTY force
    RemoteCommand screen -dR screen_name
Brian Albert Monroe
quelle
7

Nutze die Macht, Luke!

RequestTTY forcein Ihrem ~/.ssh/configfür den gewünschten Gastgeber.

Veaceslav Mindru
quelle
1

Ich würde argumentieren, dass dies der flexibelste Weg ist. Mit einem Skript können Sie Parameter einrichten, Bedingungen hinzufügen und den Befehl nach Bedarf ändern, alles basierend auf den Eingaben.

Es gibt Möglichkeiten, den Befehl zu "erzwingen" authorized_keys. Ich kenne jedoch keine Möglichkeit, die Zuweisung von tty zu erzwingen, außer über die Befehlszeile oder einen Befehl auf dem Remote-Server aus den lokalen Konfigurationsdateien zu erzwingen.

Ich selbst habe ein Skript, das die Konfigurationsdatei scannt, mit verschiedenen Domänen gegen DNS prüft und die Titelzeichenfolge des Terminalemulators festlegt. Ich rufe es vom Bildschirm auf meinem lokalen System ( Ctrl-a g) auf.

Arcege
quelle
0

Hinweis: RemoteCommandBeginnt mit OpenSSH 7.6 zu arbeiten . In früheren Versionen (dh aktuellem Debian 9.9) funktioniert der SSH-Client nicht mehr ordnungsgemäß (zumindest mit git pull).

Mathissimo
quelle