Я хочу загрузить файлы со своего офисного компьютера на свой ноутбук.
Я могу подключить свою офисную машину по SSH к серверу организации, а затем по SSH с сервера на свою офисную машину.
Единственные команды, которые принимает сервер организации, это ssh, ssh1 и ssh2.
Как я могу загрузить файл со своего офисного (удаленного) компьютера через сервер на мой портативный (локальный) компьютер?
Ответы:
В предыдущих ответах упоминается, как использовать директиву ProxyJump (добавлена в OpenSSH 7.3) для соединения через промежуточный сервер (обычно называемый хостом бастиона), но упоминается просто как аргумент командной строки.
Если это не машина, к которой вы не будете подключаться в будущем, лучше всего настроить ее на
~/.ssh/config
.Я бы поставил файл как:
Если вы используете более раннюю версию OpenSSH, которая не поддерживает ProxyJump, вы должны заменить ее на эквивалентную:
и если ваша локальная версия ssh была действительно древней, которая не поддерживала
-W
:хотя этот последний требует, чтобы машина бастиона была
nc
установлена.Прелесть ssh в том, что вы можете настроить каждый пункт назначения в файле, и они будут складываться очень хорошо. Таким образом, вы работаете в
office-machine
качестве имени хоста во всех инструментах (ssh, scp, sftp ...), так как они были прямыми, и они выяснят, как подключиться, основываясь на ssh_config. Вы также можете иметь подстановочные знаки, например,Host *.internal.company.local
чтобы все хосты, оканчивающиеся таким образом, проходили через определенный бастион, и это будет применяться ко всем из них. После правильной настройки единственное различие между выполнением однопроходных соединений или двадцати будет в более медленном времени соединения.источник
Если у вас недавно установлен OpenSSH (8.0), вы можете использовать
-J
переключатель (jump) :В старых версиях (но не ниже 7.3) вы можете использовать
ProxyJump
директиву в командной строке:или в
ssh_config
файле, как показывает ответ @ Ángel.Существуют и другие параметры, такие как
ProxyCommand
или переадресация портов, которые вы можете использовать даже в более старых версиях OpenSSH. Они описаны в разделе Поддерживает ли OpenSSH многопользовательский вход?источник
ssh -J userA@orgserv userB@officecomp cat remote/path > local/path
scp
он не поддерживает-J
, он все еще может быть достаточно новым, чтобы поддерживатьProxyJump
опцию; Попробуйте один из других ответов, которые явно используют эту опцию.ssh
вопросы, которые предлагают изменить вашconfig
для конкретных хостов, когда достаточно простого параметра командной строки, чтобы сделать работу.-J user@intermediate
каждый раз , когда мне нужно для подключения.Иногда мы можем просто использовать конвейер. Это время сегодня.
Вы также можете загрузить
Да, есть другие решения, включающие проксирование и т. Д., Но знание того, как это сделать, полезно.
источник
cat
!Используйте
ProxyJump
конфигурацию:источник
Существует древний протокол под названием ZMODEM : в наши дни его поддерживают немногие программы, но когда он работает, это может быть довольно удобно.
Сначала проверьте, поддерживает ли терминальная программа вашего ноутбука ZMODEM. (Например, вы можете настроить iTerm2 (на Mac) для поддержки ZMODEM. Пример сценария доступен здесь .)
В вашем офисе запустите:
sudo apt install lrzsz
Теперь все, что вам нужно сделать, это ssh на офисную машину и запустить
sz (filename)
. Файл будет загружен через ваш терминал.источник
Конфигурация под ssh пользователя:
~/.ssh/config
Теперь вы можете копировать с сервера интрасети прямо через 3 сервера перехода.
scp user@server.intranet.company:/home/user/ ./*
Я предпочитаю это, потому что больше не нужно указывать серверы переходов с scp
источник
Через SCP-3:
источник
-3
описывается как «Копии между двумя удаленными узлами передаются через локальный узел». хотя я считаю, что этот вопрос предусматривает, что локальный хост не может получить доступ к «remote2».-3
. Но это предполагает, что вы можете подключиться со средней машины обратно к первой.-J
/JumpHost
. Совсем наоборот, так как имеет ограничение, о котором упоминает @Joe.