Как scp со вторым удаленным хостом
интересно, есть ли способ для меня, чтобы SCP файл с узла remote2 непосредственно с моей локальной машины, проходя через узел remote1.
сети позволяют подключаться только к хосту remote2 с хоста remote1. Кроме того, ни узел remote1, ни узел remote2 не могут scp для моей локальной машины.
есть что-то вроде:
scp user1@remote1:user2@remote2:file .
первое окно: ssh remote1, потом scp remot2:file ..
второй снаряд: scp remote1:file .
первое окно: rm file; logout
я мог бы написать скрипт, чтобы сделать все эти шаги, но если есть прямой путь, я бы предпочел использовать его.
спасибо.
EDIT: я думаю что-то вроде открытия SSH-туннелей, но я смущен тем, какое значение поставить где.
на данный момент получить доступ к remote1, у меня есть следующие в $HOME/.ssh/config на моей локальной машине.
Host remote1
User user1
Hostname localhost
Port 45678
один раз на remote1, чтобы открыть remote2, это стандартный локальный DNS и порт 22. Что я должен надеть remote1 и/или изменить на localhost?
4 ответов:
Я не знаю, как скопировать файл непосредственно в одной команде, но если вы можете уступить запуску экземпляра SSH в фоновом режиме, чтобы просто открыть туннель переадресации портов, вы можете скопировать файл в одной команде.
такой:
# First, open the tunnel ssh -L 1234:remote2:22 -p 45678 user1@remote1 # Then, use the tunnel to copy the file directly from remote2 scp -P 1234 user2@localhost:file .обратите внимание, что вы подключились как
user2@localhostв фактическихscpкоманда, потому что это на порту 1234 на localhost, что первыйsshэкземпляр прослушивает прямые соединения сremote2. Отметим также, что вам не нужно запускать первую команду для каждой последующей копии файла; вы можете просто оставить ее запущенной.
двойной
sshдаже в вашем сложном случае, вы можете обрабатывать передачу файлов с помощью одной командной строки, просто с
ssh; -)
И это полезно, еслиremote1не удается подключиться кlocalhost:ssh user1@remote1 'ssh user2@remote2 "cat file"' > file
tarно вы теряете свойства файла (владение, разрешения...).
,tarваш друг, чтобы сохранить эти параметры файла:ssh user1@remote1 'ssh user2@remote2 "cd path2; tar c file"' | tar xвы также можете сжать, чтобы уменьшить сеть пропускная способность:
ssh user1@remote1 'ssh user2@remote2 "cd path2; tar cj file"' | tar xjи
tarтакже позволяет передавать рекурсивный каталог через basicssh:ssh user1@remote1 'ssh user2@remote2 "cd path2; tar cj ."' | tar xj
ioniceесли файл огромен и вы не хотите беспокоить другие важные сетевые приложения, вы можете пропустить ограничение пропускной способности сети предоставлен
scpиrsyncинструменты (например,scp -l 1024 user@remote:fileне использует более 1 Мбит / сек).но, обходной путь использует
ioniceчтобы сохранить одну командную строку:ionice -c2 -n7 ssh u1@remote1 'ionice -c2 -n7 ssh u2@remote2 "cat file"' > fileПримечание:
ioniceможет быть недоступно в старых дистрибутивах.
это будет делать трюк:
scp -o 'Host remote2' -o 'ProxyCommand ssh user@remote1 nc %h %p' user@remote2:path/to/file .чтобы SCP файл с хоста
remote2непосредственно, добавьте два варианта (HostиProxyCommand) в ваш ~/.ssh / config файл (см. также этой ответ на суперпользователя). Затем вы можете запустить:scp user@remote2:path/to/file .С вашего локального компьютера без необходимости думать о
remote1.
С openssh версии 7.3 и легко. Используйте ProxyJump опция в конфигурационном файле.
# Add to ~/.ssh/config Host bastion Hostname bastion.client.com User userForBastion IdentityFile ~/.ssh/bastion.pem Host appMachine Hostname appMachine.internal.com User bastion ProxyJump bastion # openssh 7.3 version new feature ProxyJump IdentityFile ~/.ssh/appMachine.pem. #no need to copy pem file to bastion hostкоманды для запуска входа в систему или копирования
ssh appMachine # no need to specify any tunnel. scp helloWorld.txt appMachine:. # copy without intermediate jumphost/bastion host copy.**конечно, вы можете указать Bastion Jump host с помощью опции "-J" для команды ssh, если она не настроена в файле конфигурации.
Примечание scp тут не кажется, поддерживает флаг "- J " на данный момент. (я не мог найти в справочных страницах. Однако выше scp работает с настройка файла конфигурации)
Comments