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.

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 )


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


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:~$

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.