Fájl letöltése egy aktív SSH munkameneten keresztül

83

Szóval az Ubuntu-kiszolgálómról az Ubuntu asztalomról van SSHed. Egy bizonyos úton vagyok, és szeretnék letölteni egy fájlt a helyi fájlrendszeremre (lehetőleg azon a pályán, amelyen voltam, mielőtt beléptem az SSH munkamenetbe).

Csatolhattam az SSH-t, és egérrel húzhatom át a fájlt, de mi lenne, ha megpróbálnék root-fájlt kapni, és a root-en keresztül bejelentkezni közvetlenül nem lehet? Még ha nem is ez a helyzet (nem ez most), biztosan egy egyszerű módja van egy fájlt az aktív SSH-kapcsolat fölé húzni.

Bizonyára!

    
készlet Oli 15.11.2010 15:59
forrás

11 válasz

32

Előfordulhat, hogy a zssh webhelyen, amely az univerzumban áll rendelkezésre, ezért elérhető a

sudo apt-get install zssh

Szüksége van az Ubuntu kiszolgálón és az ügyfeleden, de alapvetően akkor, amikor bejelentkezel a zssh-vel, csak nyomd meg a 'ctrl- @' billentyűt és megjelenik a "File transfer mode" (Fájlátvitel mód) csövet az ügyfélgépéhez, vagy feltöltheti őket az ügyfélről a kiszolgálóra.

Ugyanakkor nem kell újra engedélyezni vagy új ablakot nyitni a scp-hez.

Ha ssh kulcsokat és ssh ügynököt használ, egyszerűen elvégezheti:

[enter]~[ctrl]-Z

Melyik háttér ssh, majd csakscp $!:/whatever/whatever .'

A fájl átvitelét követőenfg az ssh visszaállításához.

Ha nem használja az ssh kulcsokat, továbbra is használhatja a legutóbbi OpenSSh verziókhoz hozzáadott "ControlMaster" és "ControlPath" opciókat, de ez trükkös lesz, ellenőrizze az ember ssh_config

    
válasz adott SpamapS 17.11.2010 01:46
forrás
24

Abban az esetben, ha ssh szervert futtatsz az asztalon (vannak olyan módok, amelyek körül, de azt hiszem, mindegyik összetettséget és biztonsági problémákat okoz), beállíthat egy fordított ssh alagutat. Lásd a SSH fájlt könnyedén másolni a helyi rendszerre a unix.SE .

  • Írja be ~C Enter -R 22042:localhost:22 Írja be a fordított port átirányítását a szerverről az asztalra (22042 lehet minden olyan 1024 és 65534 közötti portszám, amely nincs használatban.)
  • Ezután ascp -P 22042 foo localhost: átmásolja az aktuális könyvtárban lévőfoo fájlt a kiszolgálón az asztalra.
  • Most mozgassa a fájlt az aktuális könyvtárába az Enter ~ Ctrl Z mv ~/foo . Adja meg fg Enter .

Ssh escape szekvenciák kezdődnek:~; a tildet csak új sor után ismeri fel. A~ Ctrl+Z az ssh-t a háttérbe helyezi. ~C megad egy parancssort, ahol létrehozhat vagy eltávolíthat egy továbbítást.

    
válasz adott Gilles 15.11.2010 23:37
forrás
10

Arra jöttem, hogy ezt szabványos ssh-el tegyem. Ez egy szkript, amely megismétli az aktuális ssh kapcsolatot, megtalálja a munkakönyvtárát a távoli gépen, és másolja vissza a megadott fájlt a helyi gépre. Szükség van 2 nagyon kis szkriptre (1 távirányító, 1 helyi) és 2 sorra az ssh konfigurációban. A lépések a következők:

  1. Adja hozzá a következő 2 sort a~/.ssh/config:

    elemhez
    ControlMaster auto
    ControlPath ~/.ssh/socket-%r@%h:%p
    

    Most, ha ssh kapcsolat van a gépX nyitva, akkor nem kell jelszavakat egy másik megnyitásához.

  2. Készíts egy 1 soros szkriptet a távoli gépen,~/.grabCat.sh

    \#!/bin/bash<br>
    cat "$(pwdx $(pgrep -u $(whoami) bash) | grep -o '/.*' | tail -n 1)"/
    
  3. Szkriptet készítsen a helyi gépen ~ / .grab.sh

    \#!/bin/bash
    [ -n "" ] && dir="" || dir="."
    ssh "" ".grabCat.sh " > "$dir/"
    
  4. és adjon nevet a grab.sh fájlnak (~/.bashrc vagy bárhol):

    alias grab=~/.grab.sh
    

Ez minden, kész. Ha bejelentkezik a (z)machineX:/some/directory rendszerbe, akkor csak egy új terminált kapcsoljon be, és írja be

grab machineX filename

Ez a fájl a jelenlegi gépkönyvtárba kerül a helyi gépen. Másik helyet adhat meg harmadik argumentumként a "megragadáshoz".

Megjegyzés: Nyilvánvaló, hogy mindkét szkriptnek "végrehajthatónak" kell lennie, azazchmod u+x filename -nak.

    
válasz adott user6702 30.11.2010 11:29
forrás
5

Ha az ügyfélgéped (a gép, amelyen ülsz) gépnek nevezik, és az a gép, amelyet jelenleg SSH'ed be, úgynevezett gép B. MachineA, a helyi gépnek SSHD futnia kell és a 22-es port megnyílik. Aztán:

scp myfile machineA:

Másolja amyfile -ot a MachineB-re a gépemre A home könyvtár a gépenA. Ez feltételezi, hogy a felhasználói azonosító / jelszó megegyezik.

scp myfile machineA:/newdir/newname

Másolja amyfile one gépet a/newdir/newname -ra a gépenA. Ez feltételezi, hogy a felhasználói azonosító / jelszó megegyezik.

scp MachineA:/path/to/my/otherfile . 

Megkapja aotherfile egy példányát a MachineA könyvtáromatól a MachineA-nál, és a MachineB gépem aktuális munkakönyvtárába teszi (a szabványos UNIX formátumban a "dot" (.) karakterrel van jelölve). Ez feltételezi, hogy a felhasználói azonosító / jelszó megegyezik.

Ha a felhasználói azonosító / jelszó nem azonos, használja:

scp myfile user@MachineA: a fájl lekéréséhez.

scp user@MachineA:/path/to/my/otherfile . a fájlok feltöltéséhez

MEGJEGYZÉS az SCP-ről:

Acp parancshoz hasonlóan ascp -nak van egy -p opciója, amely az eredeti fájl engedélyezési beállításait továbbítja a másolatnak (egyébként a másolás az új fájlok normál beállításaival történik), és a -r lehetőség egy teljes könyvtárfájl egy parancsra másolására.

Ascp teljesen átlátható titkosított adatcsatornát hoz létre a két gép között, így a bináris adatok (például képek vagy végrehajtható programok) helyesen megmaradnak. Ez azt is jelenti, hogy ascp nem tudja elvégezni az automatikus végpont-végződéses konverziót a különböző operációs rendszerek között, ahogyan az ftp is végrehajtható ascii módban. Ez nem jelent problémát a másoláshoz a Unix rendszerek között, amelyek ugyanazt a végpontos egyezményt használják.

    
válasz adott LukeInDC 07.12.2012 20:39
forrás
2

Ha az SSH-n keresztül eléred a kiszolgálót, az sftp-en keresztül is csatlakozhat. A filezilla klienst (GUI) kézenfekvőnek kell lennie, és be kell illeszteni az elérési útvonalat

    
válasz adott jet 16.11.2010 02:12
forrás
1

Nem érvényes az aktív SSH kapcsolaton, de scp fájlokat másolja ugyanazokkal a mechanizmusokkal és engedélyekkel, mint ssh.

    
válasz adott msw 15.11.2010 17:11
forrás
1

Ez nem lehetséges az alapértelmezett ssh-munkamenettel, de használhatsz szkriptet az ssh helyett, amely valamilyen egyszerű ftp vagy rsh kiszolgálót indít el a helyi rendszeren, és ssh-t futtat a szükséges opciókkal az alagút visszaállításához az asztalra, hogy csatlakozzon ehhez a kiszolgálóhoz.

    
válasz adott JanC 15.11.2010 18:45
forrás
1

konsole ezt a képességet a "Edit- > ZModem Upload" menüben a távoli munkamenetben (vagy a Ctrl-Alt-U) használja.

Kérjük, vegye figyelembe: alrzsz csomagot először telepíteni kell. Úgy tűnik számomra, hogy csak ASCII fájlok feltöltésére működik.

    
válasz adott jet 13.09.2015 22:58
forrás
1

Ha a fájl elég kicsi, kódolhatja azt base64-vel, majd helyben dekódolhatja:

remote.example.net$ base64 <myfile
(copy the output)
local.example.net$ base64 -d >myfile
(copy the output)
Ctrl+D

Eredeti válasz, ahol ezt megkaptam (és kipróbáltam): link

    
válasz adott wesalius 20.01.2017 20:17
forrás
0

Mivel csatlakozol az asztali számítógépről, azt hiszem, megnyithat egy második terminált.

Így gyakran csinálom:

  • az első terminálról, az egyik, ahol az ssh munkamenet fut, kapok a fájl teljes elérési útját, vagyrealpath myfile vagyreadlink -f myfile (a régebbi Ubuntu kiadások nem előre telepítik arealpath ) és másolja be.
  • a második terminálbólscp vagysftp -ot használok a fájl eléréséhez, a teljes elérési utat beillesztve. Például:scp user@host:/etc/some/file ./

Ez eléggé alapvető, de könnyen megjegyezhető, és nincs szükség további csomagokra a munkához.

    
válasz adott gerlos 20.01.2018 10:59
forrás
0

Meglepő módon nem látok említést a jó öreg Midnight Commander itt. Az agyam, ez talán a leginkább egyetemes & hasznos erőforrás-kezelő shell, amely az egyik "szükséges" eszköz az ügyben, amely lehetővé teszi az SSH, az FTP és az SFTP kapcsolódását is, míg a második panelen bármely más (a helyi) fájlrendszert, így szabadon dolgozhat a fájlokkal.

Mindenre szüksége van: apt-get install mc (a világegyetemből)

Ezután futtassa az mc parancsot, nyissa meg a menüt a bal vagy a jobb oldali panelhez, válassza a shell kapcsolatot, írja be a felhasználónevet @ remote-ip, a jelszót - valójában, ez .. copy (here: download) files / folders from one machine egy másikhoz az F5-szel, mozgasd az F6-ot, és így tovább az alábbi gombok szerint. A régi MS-felhasználók számára: csakúgy, mint az NC-ben a DOS-ban

    
válasz adott Nex0 04.07.2018 15:10
forrás