it-swarm.com.de

ProxyCommand-Verwendung für mehrere Hops und Prompt-Authentifizierung

Wie kann ich den folgenden Befehl mit ProxyCommand umschreiben?

ssh -l username1 -t jumphost1 \
ssh -l username2 -t jumphost2 \
ssh -l username3 -t jumphost3 \
ssh -l username4    server

Das funktioniert nicht

ssh -o ProxyCommand="\
ssh -l username1 -t jumphost1  \
ssh -l username2 -t jumphost2  \
ssh -l username3 -t jumphost3" \
    -l username4    server

[email protected]'s password:
Pseudo-terminal will not be allocated because stdin is not a terminal.
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
ssh_exchange_identification: Connection closed by remote Host

Ich bin mir seiner Verwendung mit nc bewusst, suche aber nach einer Möglichkeit, es mit 3+ Hops zu verwenden, und verwende diese Option auch mit scp. Ich überprüfte ssh_config manpage, aber die informationen sind zumindest für mich recht knapp.

EDIT

Ich habe versucht, ProxyCommand zu verwenden, das in einem anderen ProxyCommand verschachtelt ist, wie unten vorgeschlagen, aber ich erhalte immer etwas in der folgenden Richtung

debug3: ssh_init_stdio_forwarding: 192.17.2.2:2222
debug1: channel_connect_stdio_fwd 192.17.2.2:2222
debug1: channel 0: new [stdio-forward]
debug2: fd 4 setting O_NONBLOCK
debug2: fd 5 setting O_NONBLOCK
debug1: getpeername failed: Bad file descriptor
debug3: send packet: type 90
debug2: fd 3 setting TCP_NODELAY
debug3: ssh_packet_set_tos: set IP_TOS 0x10
debug1: Requesting [email protected]
debug3: send packet: type 80
debug1: Entering interactive session.

Zum Glück seit 7.3-J oder ProxyJump erfüllt meinen Zweck - obwohl ich immer noch an der Einrichtung meiner Schlüssel arbeiten muss.

ssh -q -J [email protected],[email protected],[email protected] [email protected]
19
1.61803

Die Version nc wird nicht mehr empfohlen. Verwenden Sie die -W switch, der in neueren Versionen von OpenSSH bereitgestellt wird. Außerdem müssen Sie die Konfiguration nicht auf andere Hosts kopieren! Die gesamte Konfiguration muss auf Ihrem Host durchgeführt werden und beeinträchtigt das scp in keiner Weise. Erstellen Sie einfach eine Datei ~/.ssh/config mit:

Host jumphost1
  User username1
Host jumphost2
  User username2
  ProxyCommand ssh -W %h:%p jumphost1
Host jumphost3
  User username3
  ProxyCommand ssh -W %h:%p jumphost2
Host server
  User username4
  ProxyCommand ssh -W %h:%p jumphost3

Und dann verbinden Sie sich mit ssh server oder benutze scp file server:path/. Wenn Sie auf einem Oneliner bestehen (oder nicht sicher sind, was Sie mit ProxyCommand Verschachtelung meinen), dann ist es, wie bereits erwähnt, eine Hölle der Flucht:

ssh -oProxyCommand= \
  'ssh -W %h:%p -oProxyCommand= \
    \'ssh -W %h:%p -oProxyCommand= \
      \\\'ssh -W %h:%p [email protected]\\\' \
    [email protected]\' \
  [email protected]' \
[email protected]

Sie müssen im Grunde von innen gehen.

27
Jakuje