Kann der ProxyCommand von ssh_config einen lokalen Befehl ausführen, bevor eine Verbindung zu einem Remotecomputer hergestellt wird?


11

Bevor ich eine Verbindung zu einem bestimmten Remotecomputer herstellen kann, muss ich einen bestimmten lokalen Befehl ausführen. Also anstatt muss ssh me@remote.machineich tun

local_command
ssh me@remote.machine

Ich möchte dies automatisieren, damit ich es nur tun muss ssh remote.machine.

Ich weiß, dass ich dies auf Shell-Ebene erreichen kann, indem ich ein eigenes sshSkript erstelle , das aufruft /usr/bin/ssh. Kann ich dies jedoch mit der Option ProxyCommand von tun ssh_config?

Soweit ich es verstehe, brauche ich so etwas

Host remote.machine
    ProxyCommand local_command; ssh me@remote.machine

in meiner ~/.ssh/configAkte, aber nicht genau das natürlich, weil es kreisförmig ist!

Antworten:


9

Wenn Sie verwenden ProxyCommand, müssen Sie so etwas wie /usr/bin/nceine Verbindung zum Server herstellen.

Um Ihren Befehl vor dem Verbinden aufzurufen, müssen Sie sh -c "command list"die beiden Befehle zu einem zusammenführen.

Host remote.machine
    ProxyCommand sh -c "local_command; /usr/bin/nc %h %p"

MEHR:

Wenn Sie local_commandzu kompliziert sind, können Sie ein Skript verwenden:

cat my_connect.sh
#!/bin/bash

local_command
/usr/bin/nc "$1" "$2"

Die SSH-Konfiguration wird:

Host remote.machine
        ProxyCommand /path_to_my_connect.sh %h %p

Zuletzt können Sie dem einen eigenen Proxy hinzufügen /usr/bin/nc


1

Verwenden Sie das Beispiel von der Seite, die Sie verlinkt haben:

ProxyCommand /usr/bin/nc -X connect -x 192.0.2.1:8080 %h %p

Ruft nc (netcat) auf, um eine Verbindung zu einem Proxy herzustellen (Proxy läuft unter 192.0.2.1:8080) und übergibt% h und% p an den Befehl ssh (% h = Hostname,% p = Port).

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.