ожидать скрипта для scp через промежуточного хоста

Я нашел команду для прямого scp моего файла на хост (C) через другой хост (B) с моего компьютера. Команда находится в этой форме:

scp -oProxyCommand="ssh -W %h:%p B" thefile C:destination

Я использовал ее, и она хорошо работает в командной строке. но когда я хочу написать сценарий ожидания, используя эту команду, у меня появились некоторые ошибки. написанный сценарий находится в этой форме:

#!/usr/bin/expect set arg1 [lindex $argv 0] spawn scp -oProxyCommand="ssh -W %h:%p B" ./$arg1 C:destination interact

и ошибка:

unknown option -- W

W опция работает в командной строке, но не в сценарии ожиданий. Может ли кто-нибудь сказать мне, почему?

1
задан 10 June 2017 в 05:52

3 ответа

Намного легче было бы настроить это в ~/.ssh/config, где вам не нужно заботиться о синтаксисе сценариев ожидания и его проблемах с аргументами. Создайте ~/.ssh/config с этим контентом:

Host C
  ProxyCommand ssh -W %h:%p B

, а затем подключитесь только с помощью

spawn scp ./$arg1 C:destination

Или просто используйте упрощенную версию, используя опцию ProxyJump:

[ f3]
1
ответ дан 22 May 2018 в 21:41
  • 1
    Спасибо за ваш ответ. Но есть некоторые странные проблемы. Я сделал файл, о котором вы говорили (~ / .ssh / config), как вы сказали. Когда я выполняю команду " scp -oProxyCommand = " ssh -W% h:% p B " myfile C: destination " в терминале это работает очень хорошо, но когда я выполняю это: scp myfile C: destination (после создания ~ / .ssh / config), я получаю следующую ошибку: channel 0: open failed: административно запрещено: open failed stdio forwarding failed ssh_exchange_identification : Соединение закрыто удаленным хостом потерянного соединения – Mostafa Tavakoli 11 June 2017 в 01:38
  • 2
    Я искал эту ошибку на форумах, и они говорят, что промежуточный хост (B) не разрешает этот процесс. Но как это возможно, когда я могу выполнить команду «scp -oProxyCommand =» ssh -W% h:% p B " myfile C: destination " напрямую? !!! – Mostafa Tavakoli 11 June 2017 в 01:38
  • 3
    Это странно. Вы уверены, что правильно поместили имена хостов? – Jakuje 11 June 2017 в 09:06

Намного легче было бы настроить это в ~/.ssh/config, где вам не нужно заботиться о синтаксисе сценариев ожидания и его проблемах с аргументами. Создайте ~/.ssh/config с этим контентом:

Host C ProxyCommand ssh -W %h:%p B

, а затем подключитесь только с помощью

spawn scp ./$arg1 C:destination

Или просто используйте упрощенную версию, используя опцию ProxyJump:

spawn scp -oProxyJump=B ./$arg1 C:destination
1
ответ дан 18 July 2018 в 11:53

Намного легче было бы настроить это в ~/.ssh/config, где вам не нужно заботиться о синтаксисе сценариев ожидания и его проблемах с аргументами. Создайте ~/.ssh/config с этим контентом:

Host C ProxyCommand ssh -W %h:%p B

, а затем подключитесь только с помощью

spawn scp ./$arg1 C:destination

Или просто используйте упрощенную версию, используя опцию ProxyJump:

spawn scp -oProxyJump=B ./$arg1 C:destination
1
ответ дан 24 July 2018 в 19:52

Другие вопросы по тегам:

Похожие вопросы: