Sao chép tệp mà không cần mã hóa (ssh) trong mạng cục bộ


22

scphoạt động tốt trong mọi trường hợp, nhưng Raspberry Pi yếu để sao chép các tệp hiệu quả trong môi trường an toàn (lan). Về mặt lý thuyết có thể 6,75 MB / s qua lan không dây 54 Mbit giảm xuống còn khoảng 1,1 MB / s.

Có cách nào để sao chép tập tin từ xa mà không cần mã hóa?

Nó phải là một lệnh cli không phụ thuộc vào các dịch vụ bổ sung (ftp, samba) hoặc ít nhất là với cấu hình tối thiểu. Ý tôi là, một công cụ tiêu chuẩn hoạt động khá tốt với các chương trình / dịch vụ tiêu chuẩn (như scp / ssh).


2
"Không có bất kỳ sự phụ thuộc" là hầu như không thể. bạn sẽ luôn cần một chương trình "lắng nghe" ở một bên (như máy chủ ssh / sftp khi sử dụng scp)
umläute

2
Thế còn mèo ?
yegorich

Được rồi, bạn đúng. Tôi sẽ thay đổi các yêu cầu
ManuelSchneid3r

@ umläute trừ khi Khách hàng có thể ssh / rsh đến máy chủ và liên lạc qua stdin / out. Ngày xưa, việc chuyển tar sang tar được gọi từ xa là cách để dễ dàng sao chép các cây thư mục từ máy này sang máy khác.
Thorbjørn Ravn Andersen

Câu trả lời:


14

Bạn có thể đang tìm kiếm rcp, nó thực hiện thực hiện từ xa thông qua rshvì vậy bạn sẽ phải dựa vào điều đó và nhớ rằng tất cả các giao tiếp đều không an toàn.


12

Bạn không thể vô hiệu hóa mã hóa hoàn toàn trên ssh / scp nhưng bạn có thể buộc nó sử dụng một mật mã yếu hơn, ít cpu hơn. Đảm bảo rằng nén không được bật trong ssh_config hoặc trên dòng lệnh và thêm -c arcfour,blowfish-cbcvào dòng lệnh scp của bạn để chọn các mật mã yếu hơn.


1
Đây là một ý tưởng tốt đẹp. Điều này có thể cho cấu hình máy chủ cụ thể? (.ssh / config)
ManuelSchneid3r

3
@ ManuelSchneid3r: Có: trong Hostphần trong ssh_config của bạn, hãy sử dụng Ciphers arcfour,blowfish-cbcđể phản chiếu công -ctắc trên . Tuy nhiên, nếu CPU của bạn hỗ trợ tập lệnh AES-NI, tôi sẽ thử chuyển sang aes128-gcm@openssh.com(vâng, đó là tên mật mã, bao gồm cả @nội dung), sẽ sử dụng AES128-GCM nhanh chóng (với AES-NI).
Reid

Tôi thực sự sẽ không gọi blowfish là một mật mã yếu trong trường hợp chung (không phải R-Pi), các AE có thể được tăng tốc nhờ tăng tốc hw.
peterph

9

Tôi đã viết kịch bản nhanh này:

#!/bin/bash

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

Phải mất hai đối số, máy chủ lưu trữ để gửi nó đến và tệp bạn đang gửi. Nó chỉ hoạt động cho một tập tin. Nó sử dụng ssh để bắt đầu netcatnghe ở đầu đối diện và sau đó sử dụng netcatđể gửi nó đến cổng nghe đó. Tôi đã thêm vào pvđầu để đưa ra một thanh tiến trình tốt đẹp. Thay thế pvbằng catnếu bạn không có hoặc muốn điều đó. Thay đổi cổng 2020 thành bất cứ điều gì bạn thích. Điều này đòi hỏi bạn phải có quyền truy cập ssh vào hệ thống từ xa.

Điều này là hoàn toàn không an toàn, nhưng sau đó, đó là những gì bạn muốn.


9

Tôi nghĩ NFS khá bị đánh giá thấp cho loại nhiệm vụ này, nơi bạn muốn sự thuận tiện, tốc độ và không quan tâm đến bảo mật. NFS thực sự đơn giản để thiết lập, đặc biệt là trên máy khách: xem hướng dẫn ngắn này cho ubfox , cùng với trang trợ giúp cộng đồng ubfox dài hơn này . Từ quan điểm của khách hàng mà bạn chỉ gắn kết thư mục máy chủ và nó trông giống như một ổ đĩa cục bộ và bạn có thể sử dụng cphoặc rsynchoặc bất cứ lệnh nào bạn muốn.


Kinh nghiệm của bạn với những loại tốc độ để mong đợi là gì?
Thorbjørn Ravn Andersen

1
@ Thorbjørn Ravn Andersen cho NFS sử dụng SSD gigabit Ethernet và PCIe3 x4 Tôi thấy mạng là nút cổ chai. Sử dụng QĐR Infiniband thay vì gigabit Ethernet, SSD là nút cổ chai. Máy chủ NFS của Linux có chi phí khá thấp.
Eric M

4

Có các bản vá cho openssh cho HPC (Tính toán hiệu năng cao) cải thiện thông lượng ssh bằng cách tăng kích thước cửa sổ chuyển và vô hiệu hóa mã hóa - nếu bạn không nhớ biên dịch lại (và có thể là các bản vá chuyển tiếp), hãy kiểm tra HPN-SSH . Như BowlOfRed nhận thấy trong bình luận, bạn cần sử dụng các bản vá trên cả máy khách máy chủ.

Bạn cũng có thể sử dụng rsync- trên một máy như một daemon và như một máy khách đơn giản trên máy kia. Nó đặc biệt hữu ích để đồng bộ hóa khối lượng lớn hơn qua liên kết mạng chậm hơn so với việc đọc (và kiểm tra lại) các tệp, vì nó có thể chuyển chỉ các phần của tệp khác nhau giữa máy khách và máy chủ. Xem rsync(1)rsyncd.conf(5)trang man để biết chi tiết.


4
Điều này không rõ ràng trong câu trả lời của bạn, nhưng các bản vá này bao gồm khả năng sử dụng mật mã "không" trong SSH (nói cách khác, vô hiệu hóa hoàn toàn mã hóa). Hạn chế là bạn phải áp dụng và chạy nó trên cả hai đầu. Một máy chủ bình thường sẽ không chấp nhận mật mã "không".
BowlOfRed

Điểm rất tốt!
peterph

4

Kịch bản bash ở trên của Ben Collins là một giải pháp tốt, nhưng anh ta đang thiếu -pcờ cho cổng ở phía máy chủ. Chạy nó như thể sẽ cung cấp cho bạn một tập tin trống hoặc một máy chủ treo mà không bao giờ làm bất cứ điều gì.

Sẽ dễ dàng hơn để xem điều này đang làm gì nếu bạn chỉ nhìn vào các lệnh.

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

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

nchoặc netcat, giống như con mèo ngoại trừ đầu ra được lặp lại vào một máy khác thông qua kết nối TCP. Bạn chỉ cần đẩy đầu ra của nc trên máy chủ vào tệp đích. Bạn có thể thiết lập Destination theo cùng một cách và làm echo foo | nc dest.ip.address 2020và làm tất cả các loại khác với nc.


2

đã được một thời gian kể từ lần cập nhật cuối cùng, một số mật mã đã thay đổi và ít nhất là trên FreeBSD, blowfish không còn nữa. Mật mã nhanh nhất tôi tìm thấy với các cài đặt ssh hiện tại là -c aes128-cbc.

Thưởng thức.


0

Nếu bạn muốn chuyển toàn bộ cấu trúc tập tin, hãy sử dụng tar.

trong hệ thống tiếp nhận:

[]# nc -l 2020 | tar xvf -

sau đó trên hệ thống gửi:

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

Xem kho lưu trữ tệp trên một hệ thống và trích xuất trên hệ thống khác;)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.