Etkin bir SSH oturumu üzerinden dosya indirme

83

Bu yüzden Ubuntu masaüstümden Ubuntu sunucuma SSHed oldum. Belli bir yoldayım ve yerel dosya sistemime (tercihen SSH oturumuna girmeden önce izlediğim yol) bir dosya indirmek istiyorum.

SSH'yi monte edebilir ve dosyayı fare ile çekebilirdim, ancak bir kök dosya almaya çalışıyor ve köküne doğrudan giriş yapmaya izin vermezsem ne olur? Durum böyle olmasa bile (şimdi değil), kesinlikle bir etkin SSH bağlantısı üzerinden bir dosyayı geri çekmenin basit bir yolu olmalı.

Elbette!

    
sordu Oli 15.11.2010 15:59

11 cevap

32

Evrende bulunan ve dolayısıyla

ile kullanılabilen zssh 'i kontrol etmek isteyebilirsiniz.

sudo apt-get install zssh

Ubuntu sunucunuzda ve istemcinizde buna ihtiyacınız var, ancak temelde zssh ile oturum açtığınızda, sadece 'ctrl- @' tuşuna basmanız yeterlidir ve dosyaları aşağı geri göndermenizi sağlayan "Dosya aktarma modu" nu getirir. istemci makinenize boru veya istemciden sunucuya yükleyin.

Ancak, yeniden yetkilendirmeniz gerekmez veya scp yapmak için yeni bir pencere açmanız gerekmez.

ssh anahtarını ve bir ssh aracısını kullanıyorsanız, aşağıdakileri kolayca yapabilirsiniz:

[enter]~[ctrl]-Z

Hangi arka plan ssh olur ve sonra sadece scp $!:/whatever/whatever .'

Dosya aktarıldıktan sonra, ssh geri almak için fg .

ssh tuşlarını kullanmıyorsanız, son OpenSSh sürümlerine eklenmiş olan "ControlMaster" ve "ControlPath" seçeneklerini kullanmaya devam edebilirsiniz, ancak bu da zorlaşırsa, ssh_config

öğesini işaretleyin.     
verilen cevap SpamapS 17.11.2010 01:46
24

Masaüstünüzde bir ssh sunucusunu çalıştırdığınızı varsayarsak (bunun etrafındaki yollar vardır, ancak bunların hepsinin karmaşıklığı ve muhtemelen güvenlik sorunları olduğunu düşünüyorum), bir ters ssh tüneli kurabilirsiniz. SSH dosyasını kolayca yerel sisteme kopyalayın . unix.SE .

  • Yazın Gir ~C Enter -R 22042:localhost:22 Sunucunuzdan masaüstünüze bir ters port iletmek için girin (22042 olabilir Kullanılmayan 1024 ile 65534 arasında herhangi bir port numarası.)
  • Ardından, scp -P 22042 foo localhost: , sunucunuzdaki geçerli dizininizdeki foo dosyasını masaüstünüze kopyalayacaktır.
  • Şimdi dosyayı masaüstündeki geçerli dizininize Enter ~ Ctrl + Z mv ~/foo . yazarak taşıyın. fg Enter .
  • girin.

Ssh çıkış dizileri ~ ile başlıyor; tilde sadece bir satırsonu sonra tanınır. ~ Ctrl+Z ssh arka plana koyar. ~C , bir yönlendirmeyi oluşturabileceğiniz veya kaldırabileceğiniz bir komut satırı girer.

    
verilen cevap Gilles 15.11.2010 23:37
10

Bunu standart ssh ile yapmanın bir yolunu buldum. Geçerli ssh bağlantısını kopyalar, uzaktaki makinede çalışma dizini bulur ve belirttiğiniz dosyayı yerel makineye kopyalar. Ssh yapılandırmanızda 2 çok küçük betiğe (1 uzak, 1 yerel) ve 2 satıra ihtiyaç duyar. Adımlar şu şekildedir:

  1. Bu 2 satırı ~/.ssh/config dosyanıza ekleyin:

    ControlMaster auto
    ControlPath ~/.ssh/socket-%[email protected]%h:%p
    

    eğer machineX açıkken bir ssh bağlantınız varsa, ihtiyacınız olmayacak başka bir tane açmak için şifreler.

  2. ~/.grabCat.sh adlı uzak makinede 1 satırlık bir komut dosyası hazırlayın

    \#!/bin/bash<br>
    cat "$(pwdx $(pgrep -u $(whoami) bash) | grep -o '/.*' | tail -n 1)"/
    
  3. Yerel makinede ~ / .grab.sh adlı bir komut dosyası oluşturun

    \#!/bin/bash
    [ -n "" ] && dir="" || dir="."
    ssh "" ".grabCat.sh " > "$dir/"
    
  4. ve grab.sh için bir takma ad oluşturun ( ~/.bashrc veya herhangi bir yerde):

    alias grab=~/.grab.sh
    

İşte bu, hepsi bitti. Şimdi machineX:/some/directory hesabına giriş yaptıysanız, yeni bir terminali tetikleyin ve

yazın
grab machineX filename

Bu, dosyayı geçerli çalışma dizininize yerel makineye yerleştirir. "Kapmak" için üçüncü bir argüman olarak farklı bir konum belirtebilirsiniz.

Not: Açıktır ki, her iki komut dosyası da "yürütülebilir", yani chmod u+x filename olmalıdır.

    
verilen cevap user6702 30.11.2010 11:29
5

İstemci makineniz (oturduğunuz makine) makineA olarak adlandırılırsa ve şu anda SSH'lenmiş olduğunuz makineye makine B MachineA denir, yerel makinenizde SSHD çalışıyor ve 22 numaralı bağlantı noktası açık olmalıdır. Ardından:

scp myfile machineA:

MachineB'de myfile makinesA'daki MachineA giriş dizinine kopyalar. Bu, userid / parolaların aynı olduğunu varsayar.

scp myfile machineA:/newdir/newname

myfile bir MachineB kopyasını makinede /newdir/newname kopyalar. Bu, userid / parolaların aynı olduğunu varsayar.

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

MachineA benim MachineA dizinden otherfile bir kopyasını alır ve MachineB makinede benim geçerli çalışma dizini koyar ( "nokta" (standart UNIX şekilde dizayn.) Karakteri). Bu, userid / parolaların aynı olduğunu varsayar.

Eğer userid / şifre aynı değilse o zaman:

Dosya almak için

scp myfile [email protected]: .

Dosya koymak için scp [email protected]:/path/to/my/otherfile .

SCP hakkında NOTLAR:

cp komutu gibi, scp (Aksi kopya yeni dosyalar için, normal ayarlarla yapılır) kopyasını orijinal dosyanın izin ayarlarını yaymak için bir -p seçeneği ve -r vardır Tüm bir dizin ağacını tek bir komutla kopyalama seçeneği.

scp , iki makine arasında tamamen şeffaf bir şifrelenmiş veri kanalı oluşturur, böylece ikili veriler (görüntüler veya yürütülebilir programlar gibi) doğru şekilde korunur. Bu ayrıca scp değerinin "ascii" modunda ftp ile yapılabildiği gibi farklı işletim sistemleri arasında otomatik sonlandırma sonlandırma dönüşümü gerçekleştiremediği anlamına gelir. Hepsi aynı hat sonu sözleşmesini kullanan Unix sistemleri arasında kopyalama yaparken bu sorun olmayacaktır.

    
verilen cevap LukeInDC 07.12.2012 20:39
2

Sunucuya ssh üzerinden erişirseniz, sftp ile de bağlantı kurabilirsiniz. Filezilla istemcisini (GUI) el altında bulundurun ve şu an bulunduğunuz yolu yapıştırın

    
verilen cevap jet 16.11.2010 02:12
1

Aktif SSH bağlantısı üzerinden değil, scp dosyaları ssh ile aynı mekanizma ve izinleri kullanarak kopyalar.

    
verilen cevap msw 15.11.2010 17:11
1

Bu varsayılan bir ssh oturumu ile mümkün değildir, ancak ssh yerine bir betik kullanabilirsiniz, bu da yerel sisteminizde basit bir ftp veya rsh sunucusu gibi bir şey başlatabilir ve bir tüneli geri yüklemek için gerekli seçeneklerle ssh'i çalıştırır. Bu sunucuya bağlanmak için masaüstünüze.

    
verilen cevap JanC 15.11.2010 18:45
1

konsole , uzaktan oturumdayken (veya Ctrl-Alt-U) "Edit-> ZModem Upload" menüsü aracılığıyla bu yeteneğe sahiptir.

Lütfen dikkat: öncelikle% co_de paketinin yüklenmesi gerekir. Benim için sadece ASCII dosyalarını yüklemek için çalışıyor gibi görünüyor.

    
verilen cevap jet 13.09.2015 22:58
1

Dosyanız yeterince küçükse, base64 ile kodlayabilir ve ardından yerel olarak kodunu çözebilirsiniz:

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

Bunu aldığım (ve test ettiğim) orijinal yanıt: İşte

    
verilen cevap wesalius 20.01.2017 20:17
0

Bir masaüstünden bağlandığınızdan, sanırım ikinci bir terminali açabilirsiniz.

Sıklıkla böyle yaparım:

  • ilk terminalden, ssh oturumunun çalıştığı dosyadan, realpath myfile veya readlink -f myfile değerini kullanarak almam gereken dosyanın tam yolunu aldım (eski Ubuntu sürümleri realpath önceden yüklenmiyor) ) ve kopyalayın.
  • ikinci terminalden, daha önce aldığım tüm yolu yapıştırarak dosyayı almak için scp veya sftp kullanıyorum. Örneğin: scp [email protected]:/etc/some/file ./

Oldukça basit, ama aynı zamanda hatırlamak kolay ve çalışmak için herhangi bir ekstra pakete gerek yok.

    
verilen cevap gerlos 20.01.2018 10:59
0

Şaşırtıcı bir şekilde, iyi eski Geceyarısı Komutanı 'dan bahsetmiyorum. Zihnime göre, muhtemelen en evrensel ve amp; güç yetenekleri ile kabuk için yararlı dosya yöneticisi, biri için "sahip olması gereken" araçlardan biri olan SSH, FTP, SFTP üzerinden de bağlantı kurmanıza izin verirken, ikinci panelde başka bir pencere açabilirsiniz. yerel) dosya sistemi ve dosyaları özgürce çalışır.

İhtiyacınız olan tek şey: apt-get install mc (evrenden)

Bundan sonra, mc'yi çalıştırın, sol veya sağ panel için menüyü açın, kabuk bağlantısını seçin, kullanıcı adı @ uzaktan ipi girin, parola - aslında, işte bu ... bir makineden kopyala (burada: indir) dosya / klasör F5 ile diğerine, aşağıdaki düğmelere göre F6 ile hareket ettirin. Eski MS kullanıcıları için: sadece DOS için NC gibi

    
verilen cevap Nex0 04.07.2018 15:10

Etiketlerdeki diğer soruları oku