Я подключаюсь к server2 следующим образом:
home$ ssh server1
server1$ ssh server2
server2$
Мне также иногда нужно scp таким образом, что занимает некоторое дополнительное время:
home$ ssh server1
server1$ scp server2:file .
server1$ exit
home$ scp server1:file .
Есть ли способ сделать это в одной команде из дома? Я использую аутентификацию с открытым ключом, но было бы неплохо, если бы она работала и с паролями.
Вы можете использовать SSH туннелирование следующим образом:
Это открывает сокет на вашем локальном компьютере, на порту 8888 (при условии, что никакой другой порт не использует этот порт), который туннелирует соединение с server2 (при условии, что SSH работает там через порт 22) через server1.
-N
И-f
флаги сказать SSH раскошелиться на задний план (вы должны убить процесс , если вы хотите , чтобы остановить туннель).Теперь вы можете scp файлы с server2, просто выполнив
источник
home$ server1 "ssh server2"
но когда в нем задействовано больше серверов, экранирование командной строки будет болезненным.
источник
Используйте SOCKS5 с динамическим туннелем
Создайте динамический туннель SSH к первой машине. Затем используйте первое соединение в качестве прокси-сервера SOCKS5, чтобы добраться до второго хоста в удаленной сети.
Это легко настроить с помощью замазки. Вы можете использовать прокси столько раз, сколько захотите. Некоторые программы поддерживают SOCKS5 напрямую. Как замазка и SSH.
В Linux прокси-цепочки могут использоваться для прокси программ, которые изначально не поддерживают SOCKS5. Под Windows мне нравится Proxycap. Хорошо работает с RDP.
Чтобы установить это с помощью Putty:
На первой странице настроек хоста под туннелями:
Затем в конфигурации для второго хоста под прокси:
Для подключения ко второму хосту. Сначала вам нужно подключиться и войти на первый хост. Тогда вы сможете подключиться ко второму хосту через прокси-соединение ssh,
Вы также можете сделать это из командной строки с помощью записи ssh_config: http://www.undeadly.org/cgi?action=article&sid=20070925181947
источник