Yerel ağda şifrelemesiz dosyaları (ssh) kopyala


22

scpHer durumda iyi çalışır, ancak Raspberry Pi, dosyaları güvenli bir ortamda (lan) verimli bir şekilde kopyalamak için zayıftır. Teorik olarak mümkün 6,75 MB / s, 54 Mbit kablosuz lan aracılığıyla, yaklaşık 1,1 MB / s'ye geriledi.

Dosyaları şifrelemeden uzaktan kopyalamanın bir yolu var mı?

Ekstra servislere (ftp, samba) bağımlılığı olmayan veya en azından minimum konfigürasyona sahip bir cli komutu olmalıdır. Demek istediğim, standart programlar / servislerle (scp / ssh gibi) oldukça iyi çalışan standart bir araç.


2
“herhangi bir bağımlılık olmadan” neredeyse mümkün değildir. her zaman bir tarafta "dinleyen" bir programa ihtiyacınız olacak (kullanırken ssh / sftp sunucusu gibi scp)
saat

2
Peki ya Netcat ?
yegorich

Tamam haklısın. Gereksinimleri değiştireceğim
ManuelSchneid3r

@ Müşteri sunucuya ssh / rsh yapıp stdin / out üzerinden iletişim kuramıyorsa umläute. Eski günlerde, tar tarlarını uzaktan çalıştırılan tar'a pipetlemek, dizin ağaçlarını bir makineden diğerine kolayca kopyalamanın yoluydu.
Thorbjørn Ravn Andersen

Yanıtlar:


14

Arıyor olabilirsiniz rcp, uzaktan yürütme gerçekleştirir, rshböylece buna güvenmeniz ve tüm iletişimin güvensiz olduğunu aklınızda bulundurmanız gerekir.


12

Ssh / scp'de şifrelemeyi tamamen devre dışı bırakamazsınız, ancak işlemci yoğunluğu daha düşük olan daha zayıf bir şifre kullanmaya zorlayabilirsiniz. Sıkıştırmanın ssh_config'inizde veya komut satırında açık olmadığından emin olun ve -c arcfour,blowfish-cbczayıf şifreleri seçmek için scp komut satırınıza ekleyin .


1
Bu güzel bir fikir. Bu, ana bilgisayara özgü yapılandırma için mümkün mü? (.ssh / config)
ManuelSchneid3r

3
@ ManuelSchneid3r: Evet: ssh_config'inizdeki bir Hostbölümün altında Ciphers arcfour,blowfish-cbc, yukarıdaki -canahtarı yansıtmak için kullanın . Bununla birlikte, eğer CPU'larınız AES-NI komut setini destekliyorsa, cayır cayır yanan hızlı (AES-NI ile) AES128-GCM'yi kullanacak olan aes128-gcm@openssh.com(evet, @materyaller de dahil)
Reid,

Gerçekten de blowfish'e zayıf bir şifre demezdim ve genel bir durum (yani R-Pi değil) AE'ler hızlanma ivmesiyle artırılabilir.
peterph

9

Bu hızlı betiği yazdım:

#!/bin/bash

ssh "$1" "nc -l 2020 > \"$2\" &"
pv "$2" | nc "$1" 2020

İki argüman, göndereceği ana bilgisayar ve gönderdiğiniz dosya gerekir. Sadece bir dosya için çalışıyor. netcatKarşı ucunda bir dinlemeyi başlatmak için ssh'yi kullanır ve sonra netcatonu bu dinleme bağlantı noktasına göndermek için kullanır . pvGüzel bir ilerleme çubuğu vermeye başladım . Değiştir pvilecatEğer yoksa veya istemiyorsanız . 2020 portunu istediğiniz şekilde değiştirin. Bu, uzak sisteme ssh erişiminizin olmasını gerektirir.

Bu tamamen güvensiz, ama sonra istediğin buydu.


9

Bence NFS kolaylık, hız ve güvenlikle ilgilenmediğiniz bu tür bir görev için oldukça önemsizdir. NFS'nin, özellikle müşteride kurulması gerçekten basittir: ubuntu için bu kısa kılavuza bakın , bu daha uzun ubuntu topluluğu yardım sayfasıyla birlikte . Müşterinin bakış açısından sadece sunucu dizinini monte ve sadece yerel bir sürücüye benziyor ve kullanabileceğiniz cpveya rsyncveya ne istersen emreder.


Beklentileriniz için ne tür hızlarla deneyimleriniz neler?
Thorbjørn Ravn Andersen

1
@ Thorbjørn Ravn Andersen, NFS için gigabit Ethernet ve PCIe3 x4 SSD'ler kullanıyordu Ağın darboğaz olduğunu gördüm. Gigabit Ethernet yerine QDR Infiniband kullanarak SSD'ler darboğazdı. Linux'un çekirdeği NFS sunucusu yükü oldukça düşük.
Eric M

4

Transfer penceresi boyutlarını büyüterek ve şifreleme devre dışı bırakarak ssh verim artırmak HPC (Yüksek Başarımlı Hesaplama) için Openssh'ın için yamalar vardır - Eğer yeniden derlenmesine (ve muhtemelen yamaları ileriye taşıma) sakıncası yoksa, çek HPN-SSH . BowlOfRed'in yorumda fark ettiği gibi, hem istemcideki hem de sunucudaki yamaları kullanmanız gerekir .

Ayrıca rsyncbir makinede bir daemon, diğerinde ise basit bir istemci kullanabilirsiniz. İstemci ile sunucu arasında farklılık gösteren dosyaların sadece bölümlerini aktarabildiğinden, daha büyük hacimleri ağ bağlantısı üzerinden dosyaları okumaktan (ve sağlama toplamından) daha yavaş senkronize etmek için kullanışlıdır. Bkz rsync(1)ve rsyncd.conf(5)detaylar için adam sayfaları.


4
Bu, cevabınızda açık değildi, ancak bu yamalar SSH'de "hiç" şifresini kullanma yeteneğini de içeriyor (başka bir deyişle, şifrelemeyi tamamen devre dışı bırakın). Dezavantajı, her iki uçta da uygulamanız ve çalıştırmanız gerektiğidir. Normal bir sunucu "yok" şifresini kabul etmez.
BowlOfRed

Çok iyi nokta!
peterph

4

Ben Collins'in yukarıdaki bash betiği iyi bir çözümdür, ancak -p sunucu tarafındaki bağlantı noktasının bayrağını . Bunu çalıştırmak sadece boş bir dosya ya da hiç bir şey yapmayan asılı bir sunucu verir.

Sadece komutlara bakarsanız, bunun ne yaptığını görmek daha kolaydır.

DestinationShell# nc -l -p 2020 > file.txt

SourceShell# cat file.txt | nc dest.ip.address 2020

ncya da netcat, çıkışın bir TCP bağlantısıyla başka bir makineye yankılanması haricinde bir kedi gibidir. Sadece sunucudaki nc çıkışını hedef dosyaya sokuyorsunuz. Hedefi aynı şekilde ayarlayabilir ve echo foo | nc dest.ip.address 2020nc ile her türlü başka işlemi yapabilir ve yapabilirsiniz.


2

son güncellemeden bu yana zaman geçti, bazı şifreler değişti ve en azından freeBSD'de blowfish artık mevcut değil. Mevcut ssh kurulumlarında bulduğum en hızlı şifre -c aes128-cbc.

Keyfini çıkarın.


0

Tüm dosya yapılarını aktarmak istiyorsanız tar kullanın.

alıcı sistemde:

[]# nc -l 2020 | tar xvf -

sonra gönderme sisteminde:

[]# tar cvf - | nc dst.hostname.net 2020

Dosya arşivini bir sistemde izleyin ve diğerinde çıkarın;)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.