ローカルネットワークで暗号化(ssh)せずにファイルをコピーする


22

scpすべてのケースでうまく機能しますが、Raspberry Piは安全な環境(lan)でファイルを効率的にコピーするには弱すぎます。理論的に可能な54 MbitワイヤレスLAN経由で6,75 MB / sは、約1.1 MB / sに縮小します。

暗号化せずにファイルをリモートでコピーする方法はありますか?

追加のサービス(ftp、samba)に依存しない、または少なくとも最小限の構成のcliコマンドである必要があります。つまり、標準のプログラム/サービス(scp / sshなど)ですぐに使用できる標準ツールです。


2
「依存関係なし」は事実上不可能です。あなたは、常に1つの側の「リッスン」(SSH / SFTPサーバ等を使用していることをプログラムが必要になりますscp
ウムラウト

2
何についてのnetcat
yegorich 14

わかりました。要件を変更します
ManuelSchneid3r 14

@umläuteは、クライアントがサーバーにssh / rshして、stdin / outを介して通信できる場合を除きます。昔は、リモートで起動されたtarにtarをパイピングすることは、あるマシンから別のマシンにディレクトリツリーを簡単にコピーする方法でした。
ソルビョーン・ラウン・アンデルセン

回答:


14

を探しているかもしれませんがrcp、それを介しrshてリモート実行を実行するため、それに依存する必要があり、すべての通信が安全でないことを念頭に置く必要があります。


12

ssh / scpで暗号化を完全に無効にすることはできませんが、cpuをあまり使用しない、より弱い暗号を強制的に使用することができます。ssh_configまたはコマンドラインで圧縮が有効になっていないことを確認-c arcfour,blowfish-cbcし、scpコマンドラインに追加して、より弱い暗号を選択します。


1
これはいいアイデアです。これはホスト固有の構成で可能ですか?(.ssh / config)
ManuelSchneid3r 14

3
@ ManuelSchneid3r:はい:Hostssh_configのセクションの下でCiphers arcfour,blowfish-cbc、上記の-cスイッチをミラーリングするために使用します。ただし、CPUがAES-NI命令セットをサポートしている場合は、aes128-gcm@openssh.com(はい、それは暗号名であり、@ものを含む)に切り替えてみてください。
リード14

ブローフィッシュは実際には弱い暗号とは呼ばず、一般的な場合(つまりR-Piではない)AEはハードウェアアクセラレーションによってブーストされる可能性があります。
ペテルフ14年

9

この簡単なスクリプトを書きました。

#!/bin/bash

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

送信先のホストと送信先のファイルの2つの引数が必要です。1つのファイルに対してのみ機能します。sshを使用netcatして反対側でリッスンを開始し、それを使用netcatしてそのリッスンポートに送信します。pv良いプログレスバーを提供するために、最初に追加しました。交換するpvcatあなたはそれを持っているか、したくない場合。2020ポートを好きなように変更します。これには、リモートシステムへのsshアクセスが必要です。

これは完全に安全ではありませんが、それがあなたの望んだことです。


9

NFSは、この種のタスクでは非常に過小評価されていると思います。そこでは、利便性、速度を求め、セキュリティを気にかけません。NFSは、特にクライアント上でのセットアップが本当に簡単です。ubuntuのこの短いガイドと、この長いUbuntuコミュニティヘルプページを参照してください。クライアントの観点からは、サーバーディレクトリをマウントするだけで、ローカルドライブのように見えcprsync必要なコマンドを使用できます。


どんな速度が期待できるか、あなたの経験はどうですか?
トールビョーン・ラウン・アンデルセン

1
@ThorbjørnRavn Andersen for NFS for Gigabit Ethernet and PCIe3 x4 SSDsネットワークがボトルネックであることがわかりました。ギガビットイーサネットの代わりにQDR Infinibandを使用すると、SSDがボトルネックになりました。LinuxのカーネルNFSサーバーのオーバーヘッドはかなり低くなっています。
エリックM

4

転送ウィンドウサイズを増加し、暗号化を無効にすることでsshのスループットを向上させるHPC(ハイパフォーマンスコンピューティング)のためのOpenSSHのためのパッチがあります-あなたは再コンパイル(そしておそらくパッチを前進移植)気にしない場合は、チェックHPN-SSHを。BowlOfRedがコメントで気づいたように、クライアントサーバーの両方でパッチを使用する必要があります。

またrsync、1台のマシンでデーモンとして、もう1台のマシンで単純なクライアントとして使用することもできます。クライアントとサーバー間で異なるファイルの部分のみを転送できるため、ファイルの読み取り(およびチェックサム)よりも遅いネットワークリンクを介して大容量を同期する場合に特に役立ちます。詳細についてはrsync(1)rsyncd.conf(5)manページを参照してください。


4
これはあなたの答えでは明示的ではありませんでしたが、これらのパッチにはSSHで「なし」暗号を使用する機能が含まれています(つまり、暗号化を完全に無効にします)。欠点は、両端で適用して実行する必要があることです。通常のサーバーは「なし」暗号を受け入れません。
BowlOfRed 14年

非常に良い点!
ペテルフ14年

4

上記のBen Collinsによるbashスクリプトは良い解決策ですが-p、サーバー側のポートのフラグがありません。そのまま実行すると、空のファイルまたは何も実行しないハングしたサーバーになります。

コマンドを見るだけで、これが何をしているのかを簡単に確認できます。

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

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

nc、またはnetcatはcatと同じですが、出力がTCP接続を介して別のマシンにエコーされる点が異なります。サーバー上のncの出力を宛先ファイルにプッシュするだけです。同じ方法でDestinationを設定し、echo foo | nc dest.ip.address 2020ncで他のあらゆることを実行できます。


2

前回の更新からしばらく経ち、いくつかの暗号が変更されました。少なくともfreeBSDでは、blowfishは利用できなくなりました。現在のsshインストールで見つかった最速の暗号は-c aes128-cbcです。

楽しい。


0

ファイル構造全体を転送する場合は、tarを使用します。

受信システムで:

[]# nc -l 2020 | tar xvf -

次に、送信システムで:

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

1つのシステムでファイルアーカイブを監視し、他のシステムで抽出します;)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.