Файлды SSH сервері арқылы қалай жүктеуге болады?

Менің АҚШ-та серверім бар (Linux қорабында B), және менің үйім компьютерім (Linux-қорап A), мен C веб-сайтынан файлды жүктеуім керек,

Мәселе мынада, A файлынан тікелей жүктеу өте баяу, сондықтан B файлына кірген кезде файлды қотарып аламын және sftp файлды A-дан алыңыз.

Файлды қотарып аламын және B прокси ретінде тек бір жолдан тұратын пәрмен арқылы тікелей пайдалануға бола ма?

27

7 жауаптар

(Ерекше жағдай, интернет маршрутизациясы үшін үшбұрыш теңсіздігі ) сияқты емес пе?

Қалай болғанда да, A , ssh -D дәлелімен B

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 прокси арқылы толығымен жұмыс істей алады.

Edit I've just now noticed that you're looking for a one-line solution. Well, how about

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

яғни wdet -фетчерленетін шығуды stdout -ге қайта бағыттау және жергілікті шығуды (қашықтан ssh жұмыс істейтін wget ) қайта бағыттау файлға.

wget -q -q -q код> wget қоңырауына.

42
қосылды
бұл басқа жауапқа сай , wget SOCKS_SERVER айнымалы. Бұл жауап curl --socks5-hostname немесе curl --socks5 пайдалануды ұсынады.
қосылды автор Yossi, көзі
Шамасы, SOCKS_SERVER ортасының айнымалы мәні Ubuntu 14.04-ға әсер етпейді.
қосылды автор kasperd, көзі
@cnst Мен wget-дің кез-келген нұсқасында шұлықтың қолдауы бар екеніне ешқандай дәлел жоқ. socksify - бұл параметр емес, бұл жеке бағдарлама.
қосылды автор kasperd, көзі
@kasperd, демек, ubuntu қай жерде жұмыс істемейді, не айнымалысы вегетпен байланысты емес? оның орнына айнымалы socksify болуы мүмкін.
қосылды автор user28354, көзі
wget -ге әсер ету үшін SOCKS_SERVER керек болса, онда ports.su/security/dante , содан кейін wget орнына socksify wget
қосылды автор user28354, көзі

Тағы бір тәсіл сіз әдетте B -ге кіретін бола аласыз, мұнда экран сеансын бастаңыз. Онда сіз файлдарыңыздың wget - бәрін бір каталогқа айналдырасыз.

Онда бағдарлама бақытты жүгіре алады; Сіз тек экранды ажыратасыз, бірақ оны фонда іске қосыңыз.

Жүктеулер аяқталған болса (мүмкін тіпті ертерек) болса, rsync (менің қалауым) арқылы B дегеннен A дегенге дейін деректерді жоя аласыз.

3
қосылды

басқа сұраққа тағы бір жауапты шабыттандырған , мен proxychains-ng (бұл прокси-файлдар жаңа нұсқасы) .

  1. Download, compile, and optionally install proxychains-ng.
  2. Create a proxychains.conf file in the current directory, or at ~/.proxychains/proxychains.conf, or at /etc/proxychains.conf.
    • Alternatively, create one file anywhere else, or with another name, and specify if through -f command-line argument, or through PROXYCHAINS_CONF_FILE environment variable.
    • There is a sample config file available. The most relevant options are at the very end.
  3. In your proxychains.conf file, add:

    [ProxyList]
    socks5 127.0.0.1 1234
    
  4. Run ssh -D 1234 your_host_b. This will make ssh listen on port 1234 on localhost, and use your remote host as a SOCKS proxy.

    • Alternatively, run ssh -ND 1234 your_host_b instead. -N will prevent ssh from running any command on the remote server (i.e. it won't open a shell).
  5. Run: proxychains4 yourcommandhere yourparametershere. See some examples:
    • proxychains4 wget -O - http://ifconfig.co/
    • proxychains4 -q links http://ifconfig.co/
2
қосылды

Сізге машинаның туннелін жасау керек еді, алайда қоңырауды веб-сайтқа қайта бағыттайтын едім. Бірақ, сіздің Интернет провайдеріңіз кейбір шектеулер болғанша, бұл жылдамырақ болатынын түсінбеймін.

Мен білмеймін, бірақ бұл әлдеқайда күрделі.

On machine A, you do (I took 11111 randomly, you can take whatever you want as long as it is > 1024, or you would need to be root)

ssh -f -C -N -L 11111:C:80 [email protected]

B-ге арналған пайдаланушы аты B-ға қосылуға пайдаланатын құрал болып табылады. Бұл B құрылғысына 11111 порты арқылы туннель жасау керек, ол 80-портқа (HTTPS-те HTTPS-те 443-ді веб-сайтқа) C-құрылғыға бағыттайды бұйрық ;) )

Содан кейін файлды A-дан машинадан тікелей жүктеп алуға болады. Мен файлды http://C/path/to/file деп болжап жатырмын, сонда сіз оны пайдаланасыз:

wget http://B:11111/path/to/file
1
қосылды
Бұл файл HTTP 1.1 атауына негізделген виртуалды хостингсіз қол жетімді болса ғана жұмыс істемейді ме? WET арқылы шығарылған GET сұрауы хост атауын B емес, C. деп көрсетеді.
қосылды автор Michael Kjörling, көзі
@ MichaelKjörling Мен сізге жауап беру үшін жеткілікті білімім жоқ.
қосылды автор jason, көзі

Сіз A-BOX-дан Ssh-туннельдеріне Ssh-туннелін жасай аласыз және A-жолағындағы маршрутизатор кестесіне қосыласыз, C веб-торабына B жолағына туннель арқылы қол жеткізуге болады. В жолағында пакетті қайта бағыттауға рұқсат беруіңіз керек.

Here you can see a very good step-by-step tutorial...

1
қосылды

You can do this via port forwarding (ssh tunneling). Here's a resource: http://www.jfranken.de/homepages/johannes/vortraege/ssh2_inhalt.en.html#ToC9

Шын мәнінде, сіз П портын қайта бағыттауды В-ға орнатуыңыз керек. B, B-ге жіберілген мәселелер B пакеттерін C-ге жібереді және нәтижелерді A-ға жібереді.

1
қосылды

0-опция:

SOCKS5 проксиімен wget пайдалану үшін ssh болса, SOCKS_SERVER опциясын socksify утилитасымен бірге пайдалану үшін «nofollow»> security/dante бумасын таңдаңыз.

sudo pkg_add dante

Кейінірек, сіз фонда SSH қосылымын ашасыз:

ssh -N -C -D1080 [email protected] &

SOCKS5 прокси арқылы socketify арқылы wget пайдаланыңыз:

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

1-нұсқа:

Тек сервердегі stdout файлына түтікті салып, оны жұмыс бекетіңізден stdin -нен оқып шығыңыз.

ssh -C [email protected] "wget -O- http://website-C" >> file-from-website-C
1
қосылды