13

Я использую Ccygwin на WinXP (с оболочкой bash). Я хочу SCP файл с моего локального хоста на удаленную машину - host2. Тем не менее, я могу только SSH к промежуточной машине - host1, а затем оттуда SSH к host2. (Обратите внимание, я не могу получить доступ к host2 с моего локального хоста).

Я думал, что туннелирование было моим ответом, но когда я пытаюсь настроить туннель

ssh -L 9999:localhost:9998 dalvarado@host1 'ssh -L 9998:localhost:1234 -N dalvarado@host2'

Но после ввода этой команды и нажатия Enter, система просто зависает. Как правильно настроить туннель, а затем SCP файл после?

Спасибо, -

4 ответа4

15

На это уже лучше всего ответили здесь.

Подводя итог: поместите следующее в ~/.ssh/config

Host target.machine
User          targetuser
HostName      target.machine
ProxyCommand  ssh proxyuser@proxy.machine nc %h %p 2> /dev/null

а затем просто scp target.machine в любое время вы хотите , чтобы прокси - сервер с помощью proxy.machine!

Также работает для ssh , поэтому сэкономит ваше время SSH-на целевой машине.

Кредит должен перейти к пользователю 24925, который ответил на это в 2011 году.

11

Чтобы настроить SSH-туннель, используйте следующий формат:

ssh -L 9999:host2:22 user@host1

Эта команда подключается к host1 как user и туннелирует порт 9999 на компьютере, который выдает команду на порт 22 на host2 . -N не обязателен, или вы можете использовать что-то вроде top или watch чтобы поддерживать сеанс, если это необходимо.

Затем просто выполните команду scp для host2 на локальном хосте:9999.

4

Начиная с OpenSSH 7.3, вы можете использовать -J или -o ProxyJump для указания хоста бастион / прыжок. Следовательно, для SSH к node2 через node1:

ssh -J you@node1 you@node2

У SCP нет аргумента -J , но он разрешает -o , так что это работает:

scp -o ProxyJump=you@node1 file.txt you@node2:~
3

Сначала вы можете скопировать файл на host1, например так:

scp file dalvarado@host1:.

Затем сделайте это, чтобы получить его на host2:

ssh -t dalvarado@host1 'scp file dalvarado@host2:.'

Опция -t для ssh заставляет его выделять псевдо-терминал, что может упростить scp на хосте host1 для запроса ключевой фразы / пароля. Если у вас запущен и настроен ssh-агент везде, вам не нужно будет вводить фразу-пароль / пароль.

Я предлагаю эту альтернативу, потому что если вы используете туннель, вам все равно понадобятся две команды: одна для настройки туннеля и одна для копирования файла через него. Это кажется проще.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .