У меня есть три машины A, B, C. Цель состоит в том, чтобы иметь возможность передавать файлы из A в C. У меня есть доступ по ssh из A в B и из B в C; B и C находятся в локальной сети. Этого можно добиться с помощью scp -o ProxyCommand
вариант и он работает. Но прежде чем я наткнулся на это решение, я попробовал ssh -L
метод, который не сработал. Проблема была выявлена, но не решена. Сначала было настроено локальное перенаправление ssh с A на C (на A) через. Б вот так:
ssh -p 8888 -L 5022:userC@hostC:22 userB@hostB
Использование ssh для проверки / тестирования на A:
ssh -p 5022 userC@localhost
Это не соответствует поговорке:
ssh_exchange_identification: Connection closed by remote host
/var/log/auth.log
на B говорит:
sshd[9873]: error: connect_to userC@hostC: unknown host (Temporary failure in name resolution)
Я проверил, что символ двоеточия (:) после hostC вызывает ошибку, но не нашел способа исправить это. любые идеи были бы полезны.
Спасибо
-L
предназначен для переадресации портов.
Формат -L port:host:hostport
Что бы вы ни пытались, добавляя имя пользователя в спецификацию имени хоста с помощью -L 5022:userC@hostC:22
было неверно.
————————————————————-
Самый простой способ выполнить multi hop ssh от хоста A через хост B к хосту C - с помощью переключателя команды ProxyJump. -J
доступно в более новых версиях ssh
ssh -J userB@hostB userC@hostC
Или с scp
scp -o 'ProxyJump userB@hostB' file userC@hostC:/path/