Как я могу переписать следующую команду с ProxyCommand
?
ssh -l username1 -t jumphost1 \
ssh -l username2 -t jumphost2 \
ssh -l username3 -t jumphost3 \
ssh -l username4 server
Это не работает
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
Я знаю о его использовании с nc
, но я ищу способ использовать его с 3+ прыжками, а также использовать эту опцию с scp
. Я проверил ssh_config
справочную страницу, но информации довольно мало, по крайней мере, для меня.
РЕДАКТИРОВАТЬ
Я пытался использовать ProxyCommand
вложенный в другом, ProxyCommand
как предложено ниже, но я всегда получаю что-то вроде следующего
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 no-more-sessions@openssh.com
debug3: send packet: type 80
debug1: Entering interactive session.
К счастью, поскольку 7.3
-J
или ProxyJump
служит моей цели - хотя мне все еще приходится обходить настройку ключей.
ssh -q -J user1@jumphost1,user2@jumphost2,user3@jumphost3 user@server
scp
, потому что SCP ожидает управляющие сообщения SCP, но вместо этого получает управляющие сообщения SSH и терпит неудачу. С другой стороны,ProxyCommand
он делает это прозрачно, и поэтому самый внешнийssh
(илиscp
) будет получать сообщения непосредственно с другого конца.>
подсказку, где ожидает прерывания строки, я думаю - команда никогда не выполняется.%
должен работать:%%h
в вашем случаеЯ сделал это с двумя прыжками, но это должно работать в течение трех. Самый простой способ - установить
~/.ssh/config
файл на каждом хосте. Итак, если вы хотите подключитьсяhosta
и получить доступhostd
через viahostb
и hostc`, вы можете настроить свои конфигурации следующим образом:В
hosta:~/.ssh/config
:В
hostb:~/.ssh/config
:В
hostc:~/.ssh/config
:Затем вы можете
ssh hostd
на любом из хостов в цепочке, и вы доберетесь доhostd
.Использование netcat для прокси не мешает
scp
.Если по какой-то причине вы действительно не хотите использовать локальные
~/.ssh/config
файлы, вы можете сделать это наhosta
:источник
nc
использовании. Можете ли вы переписать команду, которую я опубликовалProxyCommand
в качестве опции?scp
». Это не мешаетscp
. Но я дам вам комично длинную команду как редактирование в ближайшее время.ProxyCommand
вложенности? Если вы перечитаете мой пост, вы увидите, что это суть. Я думал , что я мог бы, вместо того , чтобы гнездиться , как вы делали, все цепи средних узловProxyCommand
. Я все еще задаюсь вопросом, возможно ли это как-то.ProxyCommand
директивы вместе с вами на следующий хост в цепочке.