Wie kann ich den folgenden Befehl mit umschreiben ProxyCommand
?
ssh -l username1 -t jumphost1 \
ssh -l username2 -t jumphost2 \
ssh -l username3 -t jumphost3 \
ssh -l username4 server
Das geht nicht
ssh -o ProxyCommand="\
ssh -l username1 -t jumphost1 \
ssh -l username2 -t jumphost2 \
ssh -l username3 -t jumphost3" \
-l username4 server
username1@jumphost1'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 bewusst nc
, suche aber nach einer Möglichkeit, es mit Hopfen der Klasse 3+ zu verwenden, und verwende diese Option auch mit scp
. Ich habe die ssh_config
Manpage überprüft , aber die Informationen sind zumindest für mich recht knapp.
BEARBEITEN
Ich habe versucht, ProxyCommand
geschachtelt in einer anderen zu verwenden, ProxyCommand
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, da 7.3
-J
oder ProxyJump
dient mein Zweck - obwohl ich immer noch meine Tasteneinstellung umgehen muss.
ssh -q -J user1@jumphost1,user2@jumphost2,user3@jumphost3 user@server
scp
, da SCP SCP-Steuermeldungen erwartet, stattdessen SSH-Steuermeldungen erhält und fehlschlägt. Auf der anderen SeiteProxyCommand
macht das es transparent und daher bekommt das äußerstessh
(oderscp
) die Nachrichten direkt vom anderen Ende.>
Aufforderung, wo auf die Unterbrechung der Zeilenfortsetzung gewartet wird - dh der Befehl wird nie ausgeführt.%
sollte funktionieren:%%h
in Ihrem FallIch habe das mit zwei Hops gemacht, aber es sollte für drei funktionieren. Am einfachsten ist es, die
~/.ssh/config
Datei auf jedem Host festzulegen. Wenn Sie also aktiv seinhosta
und zuhostd
viahostb
und hostc gelangen möchten, können Sie Ihre Konfigurationen folgendermaßen festlegen:In
hosta:~/.ssh/config
:In
hostb:~/.ssh/config
:In
hostc:~/.ssh/config
:Sie können dann
ssh hostd
auf jedem der Hosts in der Kette und Sie werden Ihren Weg zu machenhostd
.Die Verwendung von Netcat für den Proxy stört nicht
scp
.Wenn Sie aus irgendeinem Grund wirklich keine lokalen
~/.ssh/config
Dateien verwenden möchten , können Sie dies folgendermaßen tunhosta
:quelle
nc
Verwendung bewusst . Können Sie den Befehl, mit dem ich gepostet habe, tatsächlichProxyCommand
als Option neu schreiben ?scp
". Es stört nichtscp
. Aber ich werde Ihnen in Kürze den komisch langen Befehl als Schnitt geben.ProxyCommand
Verschachteln konzentrieren? Wenn Sie meinen Beitrag noch einmal lesen, werden Sie sehen, dass dies das Wesentliche ist. Ich dachte, ich könnte, anstatt wie Sie zu nisten, alle mittleren Knoten in einer Kette aneinanderreihenProxyCommand
. Ich frage mich immer noch, ob das irgendwie möglich ist.ProxyCommand
Anweisungen zum nächsten Host in der Kette mitnehmen.