คัดลอกไฟล์ที่ไม่มีการเข้ารหัส (ssh) ในเครือข่ายท้องถิ่น


22

scpทำงานได้ดีในทุกกรณี แต่ Raspberry Pi อ่อนแอต่อการคัดลอกไฟล์อย่างมีประสิทธิภาพในสภาพแวดล้อมที่ปลอดภัย (LAN) ความเป็นไปได้ในทางทฤษฎี 6,75 MB / s ผ่าน 54 Mbit lan ลดขนาดลงเหลือประมาณ 1.1 MB / s

มีวิธีการคัดลอกไฟล์จากระยะไกลโดยไม่มีการเข้ารหัสหรือไม่?

มันควรจะเป็นคำสั่ง cli ที่ไม่มีการขึ้นต่อกันของบริการเสริม (ftp, samba) หรืออย่างน้อยก็มีการกำหนดค่าขั้นต่ำ ฉันหมายถึงเครื่องมือมาตรฐานที่ใช้งานได้ดีกับโปรแกรม / บริการมาตรฐาน (เช่น scp / ssh)


2
"ไม่มีการพึ่งพาใด ๆ " เป็นไปไม่ได้ คุณจะต้องใช้โปรแกรมที่ "ฟัง" ด้านเดียว (เช่นเซิร์ฟเวอร์ ssh / sftp เมื่อใช้งานscp)
umläute

2
สิ่งที่เกี่ยวกับnetcat ?
yegorich

โอเคคุณพูดถูก ฉันจะเปลี่ยนข้อกำหนด
ManuelSchneid3r 3'14

@ umläuteเว้นแต่ลูกค้าสามารถ ssh / rsh ไปยังเซิร์ฟเวอร์และสื่อสารผ่าน stdin / out ในสมัยก่อน piping tar ไปยัง tar ที่เรียกจากระยะไกลเป็นวิธีการคัดลอกแผนผังไดเรกทอรีจากเครื่องหนึ่งไปยังอีกเครื่องหนึ่งได้อย่างง่ายดาย
Thorbjørn Ravn Andersen

คำตอบ:


14

คุณอาจกำลังมองหาrcpมันทำการประมวลผลระยะไกลผ่านทางrshดังนั้นคุณจะต้องพึ่งพาสิ่งนั้นและระลึกไว้เสมอว่าการสื่อสารทั้งหมดนั้นไม่ปลอดภัย


12

คุณไม่สามารถปิดใช้งานการเข้ารหัสอย่างสมบูรณ์บน ssh / scp แต่คุณสามารถบังคับให้ใช้การเข้ารหัสที่อ่อนแอกว่าซึ่งใช้ CPU น้อยกว่ามาก ตรวจสอบให้แน่ใจว่าไม่มีการเปิดใช้งานการบีบอัดใน ssh_config ของคุณหรือบนบรรทัดคำสั่งและเพิ่มลง-c arcfour,blowfish-cbcในบรรทัดคำสั่ง scp เพื่อเลือก ciphers ที่อ่อนแอ


1
นี่เป็นความคิดที่ดี เป็นไปได้สำหรับการกำหนดค่าเฉพาะโฮสต์หรือไม่ (.ssh / config)
ManuelSchneid3r

3
@ ManuelSchneid3r: ใช่: ภายใต้Hostหัวข้อใน ssh_config ของคุณให้ใช้Ciphers arcfour,blowfish-cbcเพื่อสะท้อน-cสวิตช์ด้านบน อย่างไรก็ตามหากซีพียูของคุณรองรับชุดคำสั่ง AES-NI ฉันจะลองเปลี่ยนเป็นaes128-gcm@openssh.com(ใช่นั่นคือชื่อรหัสรวมถึง@สิ่งของ) ซึ่งจะใช้ความเร็วสูง (กับ AES-NI) AES128-GCM
เรด

ฉันจะไม่เรียกว่าปักเป้าตัวเลขอ่อนในกรณีทั่วไป (เช่นไม่ใช่ R-Pi) AEs อาจได้รับแรงหนุนจากการเร่งความเร็ว hw
เตอร์

9

ฉันเขียนสคริปต์สั้น ๆ นี้:

#!/bin/bash

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

ใช้เวลาสอง args โฮสต์ในการส่งและไฟล์ที่คุณกำลังส่ง ใช้งานได้กับไฟล์เดียวเท่านั้น มันใช้ ssh เพื่อเริ่มnetcatฟังบนฝั่งตรงข้ามแล้วใช้netcatส่งไปยังพอร์ตฟัง ฉันเพิ่มpvไปยังจุดเริ่มต้นเพื่อให้แถบความคืบหน้าดี แทนที่pvด้วยcatหากคุณไม่มีหรือต้องการ เปลี่ยนพอร์ต 2020 เป็นอะไรก็ได้ที่คุณชอบ คุณต้องการให้ ssh เข้าถึงระบบรีโมต

สิ่งนี้ไม่ปลอดภัยอย่างสมบูรณ์ แต่แล้วนั่นคือสิ่งที่คุณต้องการ


9

ฉันคิดว่า NFS ค่อนข้างด้อยโอกาสสำหรับงานประเภทนี้ที่คุณต้องการความสะดวกรวดเร็วและไม่ต้องกังวลเรื่องความปลอดภัย NFS เป็นเรื่องง่ายมากที่จะตั้งขึ้นมาโดยเฉพาะอย่างยิ่งบนไคลเอนต์: ดูแนะนำสั้น ๆ นี้สำหรับอูบุนตูร่วมกับอูบุนตูหน้านี้อีกต่อไปช่วยเหลือชุมชน จากมุมมองของลูกค้าคุณเพียงติดตั้งไดเรกทอรีเซิร์ฟเวอร์และมันก็ดูเหมือนว่าไดรฟ์ในเครื่องและคุณสามารถใช้cpหรือrsyncคำสั่งใด ๆ ที่คุณต้องการ


ประสบการณ์ของคุณกับความเร็วแบบไหนที่จะคาดหวัง?
Thorbjørn Ravn Andersen

1
@ Thorbjørn Ravn Andersen สำหรับ NFS โดยใช้ gigabit Ethernet และ PCIe3 x4 SSDs ฉันพบว่าเครือข่ายเป็นคอขวด การใช้ QDR Infiniband แทนกิกะบิตอีเธอร์เน็ต SSD นั้นเป็นคอขวด เคอร์เนลเซิร์ฟเวอร์ NFS ของ Linux มีค่าใช้จ่ายค่อนข้างต่ำ
Eric M

4

มีแพทช์สำหรับ openssh สำหรับ HPC (High Performance Computing) ที่ปรับปรุง SSH ผ่านโดยการเพิ่มขนาดของหน้าต่างการถ่ายโอนและการปิดใช้การเข้ารหัสเป็น - ถ้าคุณไม่ทราบ recompiling (และอาจจะไปข้างหน้า porting แพทช์) ตรวจสอบHPN-SSH ดังที่ BowlOfRed สังเกตเห็นในความคิดเห็นคุณจะต้องใช้แพตช์ทั้งบนไคลเอนต์และเซิร์ฟเวอร์

นอกจากนี้คุณยังสามารถใช้rsync- บนเครื่องหนึ่งเป็น daemon และเป็นไคลเอ็นต์แบบง่ายในอีกเครื่องหนึ่ง มันมีประโยชน์อย่างยิ่งสำหรับการซิงโครไนซ์วอลุ่มที่มีขนาดใหญ่กว่าลิงก์เครือข่ายที่ช้ากว่าการอ่าน (และการตรวจสอบ) ไฟล์เนื่องจากมันสามารถถ่ายโอนเฉพาะส่วนของไฟล์ที่แตกต่างกันระหว่างไคลเอนต์และเซิร์ฟเวอร์ ดูrsync(1)และrsyncd.conf(5)man pages สำหรับรายละเอียด


4
สิ่งนี้ไม่ชัดเจนในคำตอบของคุณ แต่โปรแกรมแก้ไขเหล่านี้มีความสามารถในการใช้รหัส "none" ใน SSH (อีกนัยหนึ่งคือปิดใช้งานการเข้ารหัสทั้งหมด) ข้อเสียเปรียบคือคุณต้องสมัครและเรียกใช้มันที่ปลายทั้งสอง เซิร์ฟเวอร์ปกติจะไม่ยอมรับรหัส "none"
BowlOfRed

จุดดีมาก!
เตอร์

4

สคริปต์ทุบตีด้านบนโดย Ben Collins เป็นทางออกที่ดี แต่เขาไม่มี-pค่าสถานะสำหรับพอร์ตที่ฝั่งเซิร์ฟเวอร์ การรันตามที่เป็นอยู่จะให้ไฟล์ว่างหรือเซิร์ฟเวอร์ที่หยุดทำงานซึ่งไม่เคยทำอะไรเลย

มันง่ายกว่าที่จะเห็นสิ่งนี้กำลังทำอะไรถ้าคุณแค่ดูคำสั่ง

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

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

ncหรือ netcat ก็เหมือนกับ cat ยกเว้นเอาต์พุตจะถูกสะท้อนไปยังเครื่องอื่นผ่านการเชื่อมต่อ TCP คุณเพียงแค่ดันเอาต์พุตของ nc บนเซิร์ฟเวอร์ไปยังไฟล์ปลายทาง คุณสามารถตั้งค่าปลายทางด้วยวิธีเดียวกันและทำecho foo | nc dest.ip.address 2020และทำสิ่งอื่น ๆ ทุกชนิดด้วย nc


2

มันได้รับเวลาตั้งแต่การปรับปรุงล่าสุดบางยันต์มีการเปลี่ยนแปลงและอย่างน้อยใน freeBSD, ปักเป้าไม่สามารถใช้ได้อีกต่อไป ตัวเลขที่เร็วที่สุดที่ฉันพบด้วยการติดตั้ง ssh ปัจจุบันคือ -c aes128-cbc

สนุก.


0

หากคุณต้องการถ่ายโอนโครงสร้างไฟล์ทั้งหมดให้ใช้ tar

ในระบบที่ได้รับ:

[]# nc -l 2020 | tar xvf -

จากนั้นในระบบส่ง:

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

ดูไฟล์ที่เก็บถาวรในระบบใดระบบหนึ่งและแตกไฟล์อื่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.