로컬 네트워크에서 암호화 (ssh)없이 파일 복사


22

scp모든 경우에 잘 작동하지만 Raspberry Pi는 보안 환경 (lan)에서 파일을 효율적으로 복사하기에는 약합니다. 54Mbit 무선 LAN을 통해 이론적으로 가능한 6,75MB / s는 약 1.1MB / s로 줄어 듭니다.

암호화하지 않고 원격으로 파일을 복사하는 방법이 있습니까?

추가 서비스 (ftp, samba)에 대한 종속성이 없거나 최소한의 구성으로 cli 명령이어야합니다. 내 말은 표준 프로그램 / 서비스 (scp / ssh 등)와 함께 기본적으로 잘 작동하는 표준 도구입니다.


2
"의존성없이"는 사실상 불가능합니다. 당신은 항상 한쪽에 " scp
들어오는

2
무엇에 대한 netcat을 ?
yegorich

그래 맞아 내가 요구 사항이 변경됩니다
ManuelSchneid3r

클라이언트가 서버에 ssh / rsh하고 stdin / out을 통해 통신 할 수없는 경우 @ umläute. 예전에는 타르를 원격으로 호출 된 타르에 파이핑하는 것이 한 시스템에서 다른 시스템으로 디렉토리 트리를 쉽게 복사하는 방법이었습니다.
Thorbjørn Ravn Andersen

답변:


14

당신은 찾고있을 수도 있습니다. rcp원격 실행을 통해 rsh당신은 그것에 의존하고 모든 통신이 안전하지 않다는 것을 명심해야합니다.


12

ssh / scp에서 암호화를 완전히 비활성화 할 수는 없지만 CPU를 덜 사용하는 약한 암호를 사용하도록 강제 설정할 수 있습니다. ssh_config 또는 명령 행에서 압축이 설정되어 있지 않은지 확인하고 -c arcfour,blowfish-cbcscp 명령 행에 추가 하여 더 약한 암호를 선택하십시오.


1
좋은 생각입니다. 호스트 별 구성에 가능합니까? (.ssh / config)
ManuelSchneid3r

3
@ ManuelSchneid3r : 예 : Hostssh_config 의 섹션에서 Ciphers arcfour,blowfish-cbc-c스위치 를 미러링하는 데 사용하십시오 . 그러나 CPU가 AES-NI 명령 세트를 지원하는 경우 AES-NI 와 함께 AES128-GCM을 매우 빠르게 사용하도록 전환하려고 시도합니다 aes128-gcm@openssh.com(예, @물건을 포함한 암호 이름 ).
리드

나는 실제로 복어를 약한 암호라고 부르지 않을 것이다. 일반적인 경우 (즉, R-Pi가 아님) AE는 hw 가속에 의해 향상 될 수있다.
peterph

9

나는이 빠른 스크립트를 썼다 :

#!/bin/bash

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

두 개의 인수 (호스트를 보낼 호스트와 보내는 파일)가 필요합니다. 하나의 파일에 대해서만 작동합니다. ssh를 사용 netcat하여 반대쪽 에서 청취 를 시작한 다음 netcat이를 청취 포트로 전송합니다. pv멋진 진행률 표시 줄을 시작에 추가 했습니다. 교체 pvcat당신이하거나하지 않으려면. 2020 포트를 원하는대로 변경하십시오. 이를 위해서는 원격 시스템에 ssh 액세스 권한이 있어야합니다.

이것은 완전히 안전하지 않지만 원하는 것입니다.


9

NFS는 편의성, 속도 및 보안에 신경 쓰지 않는 이러한 종류의 작업에 대해 과소 평가되었다고 생각합니다. NFS는 특히 클라이언트에서 설정하기가 정말 쉽습니다 . 이 긴 우분투 커뮤니티 도움말 페이지함께이 우분투대한이 짧은 안내서를 참조하십시오 . 클라이언트의 관점에서 당신은 단지 서버의 디렉토리를 마운트하고 그냥 로컬 드라이브처럼 보이는 당신은 사용 cp하거나 rsync또는 당신이 원하는대로 명령.


어떤 속도로 기대할 수 있습니까?
Thorbjørn Ravn Andersen

1
기가비트 이더넷 및 PCIe3 x4 SSD를 사용하는 NFS 용 @ Thorbjørn Ravn Andersen 네트워크가 병목 현상을 발견했습니다. 기가비트 이더넷 대신 QDR Infiniband를 사용하면 SSD가 병목 현상이었습니다. Linux의 커널 NFS 서버는 오버 헤드가 상당히 낮습니다.
Eric M

4

전송 창 크기를 증가 및 암호화를 사용하지 않도록 설정하여 SSH 처리량을 향상 HPC (고성능 컴퓨팅)에서 OpenSSH에 대한 패치가 있습니다 - 당신이 컴파일 (그리고 아마도 패치를 앞으로 이식) 신경 쓰지 않는 경우가 확인 HPN - SSH를 . BowlOfRed가 의견에서 알 수 있듯이 클라이언트 서버 모두 에서 패치를 사용해야 합니다.

rsync한 시스템에서-를 데몬으로 사용 하고 다른 시스템에서 간단한 클라이언트로 사용할 수도 있습니다 . 클라이언트와 서버간에 다른 파일 부분 만 전송할 수 있기 때문에 파일을 읽고 (체크섬을 만드는) 것보다 느린 네트워크 링크를 통해 더 큰 볼륨을 동기화하는 데 특히 유용합니다. 참조 rsync(1)rsyncd.conf(5)자세한 내용은 매뉴얼 페이지를 참조하십시오.


4
이것은 귀하의 답변에는 명시 적이 지 않지만 이러한 패치에는 SSH에서 "없음"암호를 사용할 수있는 기능이 포함됩니다 (즉, 암호화를 완전히 비활성화하십시오). 단점은 양쪽 끝에서 적용하고 실행해야한다는 것입니다. 일반 서버는 "없음"암호를 허용하지 않습니다.
BowlOfRed

아주 좋은 지적입니다!
peterph

4

Ben Collins의 위의 bash 스크립트는 좋은 해결책이지만 -p서버 측 포트에 대한 플래그 가 누락되었습니다 . 그대로 실행하면 아무것도하지 않는 빈 파일이나 중단 된 서버가 제공됩니다.

명령을 살펴보면 이것이 무엇을하고 있는지 쉽게 알 수 있습니다.

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

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

nc, 또는 netcat은 출력이 TCP 연결을 통해 다른 시스템으로 에코되는 것을 제외하고는 cat과 같습니다. 서버의 nc 출력을 대상 파일로 푸시합니다. 동일한 방식으로 대상을 설정하고 echo foo | nc dest.ip.address 2020nc를 사용하여 다른 모든 작업 을 수행 할 수 있습니다 .


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.