Я подключаюсь к server2 следующим образом:
home$ ssh server1
server1$ ssh server2
server2$
Мне также иногда приходится использовать scp таким образом, что занимает дополнительное время:
home$ ssh server1
server1$ scp server2:file .
server1$ exit
home$ scp server1:file .
Есть ли способ сделать это одной командой из дома? Я использую аутентификацию с открытым ключом, но было бы неплохо, если бы это работало и с паролями.
решение1
Я предлагаю использовать MobaXterm: вам просто нужно
- скачать его можно здесь:http://mobaxterm.mobatek.net/download-home-edition.html
- Нажмите «Новый сеанс» и выберите «ssh».
- Укажите имя или IP-адрес вашего компьютера «server2» в поле «Имя удаленного хоста».
- Укажите имя компьютера «server1» или IP-адрес в поле «SSH-отказ (подключение через шлюзовой сервер SSH)».
Это запустит новую команду SSH, напрямую на ваш компьютер "server2". В левой части окна вы также получите доступ к графическому инструменту передачи файлов SFTP, который также будет подключен напрямую к "server2".
решение2
Вы можете использовать SSH-туннелирование следующим образом:
ssh -f server1 -L 8888:server2:22 -N
Это открывает сокет на вашей локальной машине на порту 8888 (предполагая, что никакой другой процесс не использует этот порт), который туннелирует соединение к server2 (предполагая, что SSH работает на порту 22) через server1. Флаги -N
и -f
сообщают SSH о необходимости перейти в фоновый режим (вам придется завершить процесс, если вы хотите остановить туннель).
Теперь вы можете scp-файлы с server2, просто выполнив
scp -P 8888 localhost:file
решение3
home$ server1 "ssh server2"
Но когда речь идет о большем количестве серверов, экранирование командной строки может оказаться затруднительным.
решение4
Используйте SOCKS5 с динамическим туннелем
Создайте динамический туннель ssh к первой машине. Затем используйте первое соединение как прокси SOCKS5, чтобы добраться до второго хоста в удаленной сети.
Это легко настроить через putty. Вы можете повторно использовать прокси столько раз, сколько захотите. Некоторые программы поддерживают SOCKS5 напрямую. Например, putty и ssh.
Под Linux proxychains можно использовать для проксирования программ, которые изначально не поддерживают SOCKS5. Под Windows мне нравится Proxycap. Он хорошо работает с RDP.
Чтобы настроить это с помощью Putty:
На первой странице настроек хоста, в разделе туннели:
- создать динамический туннель
- Установите порт 9050.
- Оставьте поле назначения пустым, так как оно динамическое.
- Сохраните настройки. (Выполняется на странице сеанса.)
Затем в конфигурации для второго хоста, в разделе proxy:
- Выберите SOCK55.
- Измените имя хоста прокси на 127.0.0.1.
- Установите порт на 9050
- Затем настройте остальную часть сеанса как обычно.
- Сохраните настройки
Чтобы подключиться ко второму хосту. Сначала вам нужно подключиться и войти на первый хост. Затем вы сможете подключиться ко второму хосту через проксированное ssh-соединение,
Это также можно сделать из командной строки с помощью записи ssh_config: http://www.undeadly.org/cgi?action=article&sid=20070925181947