Führen Sie einen Remote-Befehl mit der Datei ssh config aus

32

Ich möchte in der Lage sein, einen Befehl für die Ausführung von ssh login auf einem Server einzurichten, ohne ihn eingeben zu müssen. Grundsätzlich suche ich nach der ssh-Konfigurationsdatei, die äquivalent ist zu:

ssh host command

so dass ich nur noch tippen muss:

ssh host

und der Befehl wird ausgeführt.

PeterJCLaw
quelle

Antworten:

16

Es ist auch möglich, einen Befehl in Ihre Datei mit autorisierten Schlüsseln einzufügen. ( ~/.ssh/authorized_keys). Auf diese Weise können Sie einen benutzerdefinierten Befehl für jeden Schlüssel in der Datei ausführen. Ich verwende dies, um Shell-Verbindungen über meine Firewall weiterzuleiten. Das Ergebnis ist, dass ich zu einem Host ssh kann und die Sitzung automatisch mit einem Host innerhalb des Netzwerks verbindet. Der authorized_keysEintrag sieht so aus:

command="ssh -Tq <hostname> \"$SSH_ORIGINAL_COMMAND\"",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA... the rest of the key ...

Insbesondere ist die Weiterleitung für meine Gitolite-Instanz. Dies ermöglicht einen einfachen Zugriff von außen, ohne den Gitolit-Wirt direkt einem externen Zugriff auszusetzen. Weitere Informationen finden Sie in der Manpage. ( http://linux.die.net/man/8/sshd )

dav
quelle
1
Das ist großartig, ich wusste nicht, dass du das kannst. +1
Brian Wigginton
3
Wenn Sie den Befehl in die Datei "authorized_keys" einfügen, werden Dinge wie "rsync" und "scp" nicht mehr ausgeführt. Das Öffnen des Terminals ist fehlgeschlagen, kein Terminal. Beachten Sie auch, dass Sie sich nicht anmelden können, wenn der Befehl fehlschlägt. Ich habe das auf die harte Tour entdeckt.
John Hunt
11

Wenn Sie OpenSSH ausführen, sieht es so aus, als würde ~/.ssh/rces beim Anmelden ausgeführt .

Kegeltöter
quelle
3
Befindet /.ssh/rcsich auf dem Client- oder Server-Computer? Sieht aus wie aus den Dokumenten des Servers, oder?
Heavyd
1
Ja, das wäre auf dem Server.
Coneslayer
Leider rcscheint die Datei nicht zu screen
funktionieren. Es wird der
10

Sie könnten einen Bash-Alias ​​einrichten.

Fügen Sie in Ihre .bashrc-Datei Folgendes ein:

alias ssl='ssh some_host run_command'

Dann müssten Sie nicht einmal den Hostnamen eingeben.

Wenn Sie dies mit mehreren Hosts tun möchten (und mehrere Aliase nicht funktionieren), verwenden Sie ein kleines Skript:

kevin@box:~$ cat ssl.sh
#!/bin/sh
ssh $1 some_command
kevin@box:~$
Kevin M
quelle
2

Sie können dies in Ihrem System lösen .ssh/config file, indem Sie für den Host, auf dem Sie einen Befehl ausführen möchten, Folgendes hinzufügen

  RequestTTY yes
  RemoteCommand <some command>

Wo <some command>ist dein Befehl? Dies funktioniert auch mit screen oder tmux.

Florian Lautenschlager
quelle