Если ваш компьютер и промежуточный хост (сервер A) работают под управлением OpenSSH v7.3 или новее, вы можете использовать опцию ProxyJump, чтобы сделать это автоматически:
scp -oProxyJump=userA@serverA userB@serverB:remoteFile localDest
Для этого нужно открытьСоединение SSH с сервером A, затем проложите туннель через него, чтобы открыть соединение SSH (/ scp) с локального компьютера на сервер B, затем передайте файл через это соединение.Обратите внимание, что при подключении он будет запрашивать два пароля: сначала serverA, затем serverB.
Вы также можете автоматизировать это, создав файл конфигурации ssh на вашем компьютере (~ / .ssh / config) и выполнивзапись примерно такая:
Host serverB
ProxyJump userA@serverA
..., которая говорит ssh (и scp) автоматически выполнять ProxyJump всякий раз, когда вы запрашиваете соединение с serverB.См. документы OpenSSH в файле конфигурации для получения более подробной информации.
Если у вас недостаточно нового OpenSSH на обоих компьютерах, но netcat
(или nc
или что-то подобное)доступно на сервере А, вы, вероятно, также можете получить тот же эффект с опцией ProxyCommand.См. этот вопрос суперпользователя .