Как загрузить файл через сервер SSH?

Если Вы хотите пойти без мыши, необходимо попробовать обработку почвы wm. Лично, мой фаворит является Удивительным, но в том Вопросе существуют много.

Что касается составного менеджера, был уже упомянут xcompmgr, но Каирский менеджер по составному объекту (CCM) кажется хорошим также, хотя я нахожу это менее стабильным все еще. Как всегда, YMMV.

31
16.05.2012, 11:01
7 ответов

(Странная ситуация, разве чему-то не нравится треугольное неравенство, содержат для интернет-маршрутизации?)

Так или иначе попробуйте следующее на A, ssh в B с a -D аргумент,

ssh -D 1080 address-of-B

который действует как прокси SOCKS5 на 127.0.0.1:1080, то, которое может использоваться чем-либо поддерживающим SOCKS5, проксировало соединения. По-видимому, wget может сделать это, при помощи переменной среды

export SOCKS_SERVER=127.0.0.1:1080
wget http://server-C/whatever

Отмечайте это иногда curl более удобно (т.е. я не уверен если wget может сделать поиски имени хоста через SOCKS5; но это не одна из Ваших проблем, которые я предполагаю); также Firefox может работать полностью через такой прокси SOCKS5.

Редактирование я сейчас заметил, что Вы ищете короткое решение. Ну, как насчет

ssh address-of-B 'wget -O - http://server-C/whatever' >> whatever

т.е. перенаправление wget- выбранный вывод к stdout, и перенаправление локального вывода (от ssh выполнение wget удаленно) в файл.

Это, кажется, работает, wget вывод просто немного путает ("сохраненный к -"), можно избавиться от него путем добавления -q к wget звонить.

46
27.01.2020, 19:37
  • 1
    По-видимому, SOCKS_SERVER переменная среды не имеет никакого эффекта на Ubuntu 14.04. –  kasperd 04.06.2015, 18:13
  • 2
    Согласно этому другому ответу, wget не имеет никакой поддержки SOCKS_SERVER переменная. Тот ответ предлагает использовать curl --socks5-hostname или curl --socks5. –  Denilson Sá Maia 18.06.2015, 16:30
  • 3
    @kasperd, таким образом, является этим просто человечность, где это не работает, или разве переменная не связана с wget вообще? кажется, что переменная могла бы быть для socksify вместо этого. –  cnst 05.09.2015, 07:23
  • 4
    @cnst, я не видел доказательства, что любая версия wget имеет поддержку носков. socksify не установка, это - отдельная программа. –  kasperd 05.09.2015, 09:25
  • 5
    так, в основном, если Вы хотите SOCKS_SERVER иметь любой эффект на wget, затем необходимо установить ports.su/security/dante и затем работать socksify wget вместо просто wget –  cnst 05.09.2015, 10:38

Другой подход мог состоять в том, что Вы обычно входите в систему в B, где Вы запускаете a screen сессия. Там Вы делаете wget из Ваших файлов - все в один каталог.

И там программа может счастливо работать; Вы просто отсоединяетесь с экрана, но позволяете ему работать в фоновом режиме.

Если загрузки закончены (возможно, еще ранее), можно выбрать данные из B кому: A использование rsync (мое предпочтение).

3
27.01.2020, 19:37

Можно сделать туннель ssh от поля A до поля B и добавить к таблице маршрутизации в поле A, тот веб-сайт C достижим через туннель к полю B. Необходимо позволить пакетную передачу на поле B.

Здесь Вы видите очень хорошее пошаговое руководство...

1
27.01.2020, 19:37

Необходимо было бы создать туннель на машине B tha, перенаправит вызов к веб-сайту C. Но я озадачен как, почему это было бы быстрее, если Ваш ISP как некоторые ограничения.

Я не знаю остроту, но это не намного более сложно.

На машине A, Вы делаете (я взял 11111 случайным образом, можно взять то, что Вы хотите, пока это> 1024, или необходимо было бы быть корнем),

ssh -f -C -N -L 11111:C:80 username@B

Имя пользователя на B является тем, которое Вы используете для соединения с B. Это должно создать туннель на порте 11111 на машине B, что перенаправление для портирования 80 (веб-сайт в HTTP используют 443 для HTTPS) на машине C (я надеюсь, что не смешал порядок ;))

Затем можно загрузить файл непосредственно с машины через машину B. Я предполагаю, что файл в http://C/path/to/file таким образом, Вы затем использовали бы:

wget http://B:11111/path/to/file
1
27.01.2020, 19:37
  • 1
    Разве это не работало бы, только если файл доступен без HTTP 1.1 основанный на имени виртуальный хостинг? Так как ПОЛУЧИТЬ запрос, выпущенный wget, указал бы имя хоста как B, не C. –  a CVn 16.05.2012, 14:39
  • 2
    @MichaelKjörling у меня нет достаточного знания для ответа на Вас. –  Huygens 21.05.2012, 10:36

Можно сделать это через перенаправление портов (ssh туннелирующий). Вот ресурс: http://www.jfranken.de/homepages/johannes/vortraege/ssh2_inhalt.en.html#ToC9

По существу необходимо настроить перенаправление портов на B. Когда проблемы wget к B, B передадут пакеты к C и передадут результаты обратно A.

1
27.01.2020, 19:37

Вариант 0:

Чтобы использовать wget с прокси-сервером SOCKS5 из ssh , у вас есть установить пакет security / dante , чтобы использовать параметр SOCKS_SERVER с утилитой socksify .

sudo pkg_add dante

Затем вы открываете SSH-соединение в фоновом режиме:

ssh -N -C -D1080 user@hostB &

И используете wget через прокси-сервер SOCKS5 через socksify:

env SOCKS_SERVER=127.0.0.1:1080 socksify wget http://website-C

Вариант 1:

Просто перенаправьте файл на stdout на сервер и прочтите его из stdin на своей рабочей станции.

ssh -C user@hostB "wget -O- http://website-C" >> file-from-website-C
2
27.01.2020, 19:37

Вдохновленный другим ответом на другой вопрос, я предлагаю использовать proxychains-ng (это более новая версия proxychains).

  1. Скачайте, скомпилируйте и, по желанию, установите proxychains-ng.
  2. Создайте файл proxychains.conf в текущем каталоге, или в ~/.proxychains/proxychains.conf, или в /etc/proxychains.conf.
    • Альтернативно, создайте один файл в любом другом месте, или с другим именем, и укажите его через аргумент командной строки -f, или через переменную окружения PROXYCHAINS_CONF_FILE.
    • Имеется пример конфигурационного файла. Наиболее важные параметры находятся в самом конце.
  3. В ваш файл proxychains.conf добавьте:

    [ProxyList]
    socks5 127.0.0.1 1234
    
  4. Запустите ssh -D 1234 your_host_b. Это заставит ssh прослушивать порт 1234 на localhost и использовать ваш удаленный хост в качестве SOCKS-прокси.

    • В качестве альтернативы запустите ssh -ND 1234 your_host_b. -N не позволит ssh выполнить любую команду на удаленном сервере (т.е. не откроет shell).
  5. Выполнить: proxychains4 yourcommandhere yourparametershere. Посмотрите примеры:
    • proxychains4 wget -O - http://ifconfig.co/
    • proxychains4 -q links http://ifconfig.co/
2
27.01.2020, 19:37

Теги

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