it-swarm-ko.tech

ssh를 사용하여 파일을 로컬 시스템으로 다시 복사

SSH를 통해 시스템에 로그인 한 경우 다른 터미널이나 화면 세션을 실행하지 않고 scp 또는 이와 유사한 작업을 수행하거나 원격 시스템에서 SSH를 다시 ​​수행하지 않고 파일을 로컬 시스템으로 다시 복사하는 방법이 있습니까? 로컬 시스템?

271
Shawn J. Goff

마스터 연결

미리 계획하면 가장 쉽습니다.

마스터 연결을 처음으로 엽니 다. 후속 연결의 경우 기존 마스터 연결을 통해 슬레이브 연결을 라우팅하십시오. ~/.ssh/config 에서 자동으로 연결 공유를 설정하십시오.

ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r

기존 연결과 동일한 (사용자, 포트, 시스템)에 ssh 세션을 시작하면 두 번째 세션이 첫 번째 세션을 통해 터널링됩니다. 두 번째 연결을 설정하려면 새로운 인증이 필요하지 않으며 매우 빠릅니다.

따라서 활성 상태 인 동안 신속하게 다음을 수행 할 수 있습니다.

전송

기존 연결에서 역방향 ssh 터널을 설정할 수 있습니다. ssh 명령 행에서 -R 22042:localhost:22를 전달하여 원격 전달을 작성하십시오. 여기서 22042는 원격 시스템의 다른 포트 번호와 다른 임의로 선택된 숫자입니다. 그런 다음 원격 시스템의 ssh -p 22042 localhost가 소스 시스템으로 다시 연결됩니다. scp -P 22042 foo localhost:를 사용하여 파일을 복사 할 수 있습니다.

RemoteForward 22042 localhost:22로 더 자동화 할 수 있습니다. 이것의 문제는 여러 개의 ssh 인스턴스가있는 동일한 컴퓨터에 연결하거나 다른 사람이 포트를 사용하는 경우 전달을받지 못한다는 것입니다.

처음부터 원격 전달을 활성화하지 않은 경우 기존 ssh 세션에서 원격 전달을 수행 할 수 있습니다. 유형 Enter ~C Enter -R 22042:localhost:22 Enter. 자세한 내용은 설명서의 "이스케이프 문자"를 참조하십시오.

이 서버 결함 스레드 에도 흥미로운 정보가 있습니다.

복사 붙여 넣기

파일이 작 으면 파일을 입력하고 터미널 출력에서 ​​복사하여 붙여 넣을 수 있습니다. 파일에 인쇄 할 수없는 문자가 포함되어 있으면 base64 와 같은 인코딩을 사용하십시오.

 remote.example.net $ base64 <myfile 
  (출력 복사) 
 local.example.net $ base64 -d> myfile 
  (클립 보드 내용 붙여 넣기) Ctrl+D

보다 편리하게 X 전달이 활성화되어 있으면 원격 컴퓨터에서 파일을 복사하여 로컬로 붙여 넣습니다. xclip 또는 xsel 안팎으로 데이터를 파이프 할 수 있습니다. 파일 이름과 메타 데이터를 유지하려면 아카이브를 복사하여 붙여 넣습니다.

remote.example.net$ tar -czf - myfile | xsel
local.example.net$ xsel | tar -xzf -

또 다른 (IMO) 쉬운 방법은 다음과 같습니다.

# to remote Host
cat localfile.conf | ssh [email protected] 'cat -> /tmp/remotefile.conf'

# from remote Host
ssh [email protected] 'cat /tmp/remotefile.conf' > /tmp/localfile.conf

또는 GUI와 같은 것을 선호한다면 Midnight Commander 를 시도하십시오. 그들은 Shell-Link 기능을 호출합니다. 대부분의 배포판은 패키지 시스템에 mc로 표시되어 있습니다.

75
Florian Fida

SSH는 이스케이프 문자 (기본적으로 ~)를 통해 몇 가지 명령을 지원합니다.

$ ~?
Supported escape sequences:
  ~.  - terminate connection (and any multiplexed sessions)
  ~B  - send a BREAK to the remote system
  ~C  - open a command line
  ~R  - Request rekey (SSH protocol 2 only)
  ~^Z - suspend ssh
  ~#  - list forwarded connections
  ~&  - background ssh (when waiting for connections to terminate)
  ~?  - this message
  ~~  - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)

$ ~C
ssh> help
Commands:
      -L[bind_address:]port:Host:hostport    Request local forward
      -R[bind_address:]port:Host:hostport    Request remote forward
      -D[bind_address:]port                  Request dynamic forward
      -KR[bind_address:]port                 Cancel remote forward
      !args                                  Execute local command

!args이 (가) 원하는 것에 가장 가까운 것 같습니다. /etc/ssh_config 명령이 작동하려면 ~C 파일에서 PermitLocalCommand를 활성화해야합니다 (man ssh_config 참조).

ssh_config에서 ControlMaster를 설정하면 동일한 ssh 세션을 재사용 할 수 있습니다. 이렇게하면 :

$ ~C
ssh> !scp file [email protected]:

기술적으로 ssh 세션을 종료 한 적이 없으며 다시 인증 할 필요가 없습니다. 아마 당신이 원하는 것보다 더 복잡하지만 다른 쉬운 방법은 생각할 수 없습니다.

54
Corey Henderson

그것들은 모두 매우 복잡한 방법입니다.
sshfs를 사용하여 로컬 파일에 원격 파일 시스템을 마운트 할 수 있습니다.

mkdir -p /mnt/sshfs

[email protected]:~# sshfs 192.168.1.2:/ /mnt/sshfs
[email protected]:~# umount /mnt/sshfs

그런 다음 노틸러스, 그놈, konqueror, 돌고래, bash 등으로 파일을 복사하여 붙여 넣을 수 있습니다.

38
Quandary
  • 파일 전송 용도로 기존 ssh 사이드 채널을 효과적으로 오버로드하는 수정 된 ssh-agent 인 ssh-xfer 를 사용하십시오.
  • zssh 를 사용하십시오. 이는 ssh에 대한 zmodem입니다. rzsz를 사용해 본 적이 있다면 이것은 매우 친숙 할 것입니다.
  • 역전 (-R, 원격-로컬의 경우) 또는 전달 (-L는 파일 전송 데몬이 다른 쪽 끝에서 수신 대기한다고 가정하고 로컬에서 원격으로의 포트가 파일 전송을 실행하도록합니다.

그러나 이것들 중 어느 것도 실제로 필요하지 않습니다. IMO. SSH 프로토콜은 단일 연결에서 여러 채널을 지원하고 OpenSSH 클라이언트는 멀티플렉싱을 지원합니다. ControlMasterControlPath설정 (ControlPersist도 유용함)이 있다고 가정하면,

# 첫 번째 연결
 $ ssh remote 
 
 # 원래 ssh가 연 동일한 연결을 통해 다중화됩니다.
 $ sftp remote 
15
ephemient

더 간단한 방법 : Filezilla (또는 선호하는 ftp 브라우저)를 열고 동일한 사이트에 대한 ssh 연결을 열고 파일을 찾아 로컬 파일 구조로 드래그하십시오. Filezilla를 처음 사용하는 경우 "사이트 관리자"기능을 사용하여 다음에 빠르게 다시 연결하십시오.

그렇습니다. 이것이 대부분의 사람들에게 명백하다는 것을 알고 있습니다 (정확하게 말하면 안됩니다). 그러나 터미널 전용 솔루션을 검색하는이 스레드를 발견 한 일부 (나 같은)는 명백한 것을 간과했을 수 있습니다.

9
Larry Jones

내가 가장 효율적이고 효과적인 솔루션으로 찾은 것은 xclip-copyfilexclip-pastefile.

서버에서 xclip-copyfile 하나 이상의 파일을 복사합니다. 그런 다음이 파일을 로컬 서버에서 사용할 수 있습니다. xclip-pastefile.

이는 scp를 사용하거나 로컬 ssh 서버가 필요하지 않습니다. 예를 들어 cygwin과 함께 사용합니다. 유일한 문제는 xclip을 아직 설치하지 않았다면 설치해야한다는 것입니다. 아, 이것은 바이너리 파일에서도 작동합니다.

8
Robert

실용적인 오픈 소스 소프트웨어를 선호하지만 SecureCRT 를 사용하는 많은 이유 중 하나는 파일 전송의 용이성입니다. F/OSS 세계에는 직접적인 대체물이 없습니다.

SecureCRT는 1990 년대 중반에 순수한 Windows 프로그램으로 시작했지만 Mac OS X 및 Linux로 포팅되었습니다 2 년 전 .

SecureCRT에는 SSH를 사용하는 시스템과 파일을주고받을 수있는 세 가지 주요 기능이 있습니다.

  • ZModem , YModem , XModem , Kermit ​​및 ASCII -SecureCRT는 여러 가지 대역 내 파일 전송 프로토콜을 지원하는 구식 터미널 에뮬레이터입니다.

    사용하기 가장 쉬운 것은 ZModem입니다. 원격 명령 줄에 sz file-to-download와 같은 것을 입력하면 원격 sz 프로그램은 탈출 순서 를 작성하여 SecureCRT가 즉시 file-to-download를 기본 다운로드 디렉토리에 추가하십시오.

    세션마다 다운로드 디렉토리를 사용자 정의 할 수 있다는 점이 좋습니다. 이를 사용하여 본사 파일 서버에 사이트 별 디렉토리를 가지므로 다운로드 한 파일을 수동으로 정렬 할 필요가 없습니다.

    (szlrzsz 패키지의 일부인 "Send ZModem"프로그램입니다. 대부분의 Unixy 시스템에 이미 패키지되어 있습니다. 이미 설치되어 있지 않고 바이너리 패키지를 쉽게 설치할 수 없으며 소스 패키지는 작고 휴대 성이 뛰어납니다. 한 번 이상 lrzsz"sharchive를 보내야했습니다. " 또는 uuencode 'd tarball 제거 된 원격 시스템에 ZModem 파일을 저장할 수 있습니다.)

  • [~ # ~] sftp [~ # ~] -SecureCRT에는 기본 SFTP 구현이 긴밀하게 통합되어 있습니다.

    "긴밀하게 통합 된"이란 SFTP 메뉴 명령 또는 키보드 단축키를 제공하면 동일한 SSH 연결을 통해 원격 사이트에 연결된 새 탭을 여는 것을 의미합니다. 따라서 다시 로그인 할 필요가 없으며 동일한 서버에 대한 별도의 SFTP 연결을 연 경우보다 연결이 약간 더 빠릅니다.

    VanDyke Software에 별도의 파일 전송 제품인 SecureFX 가 있기 때문에 SFTP 기능을 "기본"으로 특성화합니다. 내장 SFTP 클라이언트보다 기능이 우수하며 SecureCRT 와도 통합됩니다.

    SecureCRT의 SFTP 기능을 사용하면 ZModem 구성과 별 개인 기본 원격 및 로컬 디렉토리를 구성 할 수 있습니다.

    이 SFTP 기능에는 기본 명령 행 정렬 인터페이스가 있으며 OpenSSH의 sftp 프로그램을 흉내냅니다. 단, Tab 명령 완료. 따라서 somefile.tar.gz라는 원격 파일을 검색하는 것이 get so만큼 쉬울 수 있습니다.TabEnter.

  • 드래그 앤 드롭 -파일을 터미널 창으로 드래그 앤 드롭하면 자동으로 rz를 입력하고 파일 전송을 시작합니다.

    또는 SFTP 탭을 열고 해당 탭에 파일을 놓아 SFTP를 통해 보낼 수 있습니다. 따라서 원격 시스템에 파일을 보내는 것은 다음과 같이 간단 할 수 있습니다. Alt-P, drag, drop.

    SFTP를 통한 전송은 TCP 기반 프로토콜이기 때문에 전송 속도가 훨씬 빠르다는 사실을 알았습니다. 따라서 슬라이딩 창 최신 TCP/IP 스택 의 이점이 있습니다. ZModem은 64KB 블록 크기가 "큰"것으로 간주되던 시절에 설계되었습니다. 따라서 링크의 많은 잠재적 속도는 ZModem에 흡수되며 각 끝은 블록 전송 승인을 기다립니다.

    끌어서 놓기 작동 모드의 한 가지 좋은 점은 ZModem을 사용하는 데 따른 스트레스 중 하나를 취하는 것입니다. 원격 시스템에서 rz를 입력하면 SecureCRT가 파일 선택기를 자동으로 팝업합니다. 그런 다음 원격 측 시간이 초과되기 전에 약 1 분 동안 파일을 찾아서 선택해야합니다. 이것은 24 시간 경쾌한 분위기를 조성합니다. 드래그 앤 드롭을 사용하면 여가 시간에 파일을 찾은 다음 마우스를 한 번의 빠른 동작으로 전송을 시작할 수 있습니다.

    명시적인 rz 명령으로 전송을 시작하면서 여전히 수동 방법을 사용합니다. SecureCRT를 사용하면 세션 별 업로드 디렉토리를 구성 할 수 있기 때문에 특정 원격 사이트에서 실행중인 최신 소프트웨어 빌드가 항상 포함 된 파일 서버의 폴더를 가리 킵니다. 이러한 전송의 경우 파일 선택기가 시작하기에 올바른 위치에서 열리므로 시계와의 경쟁은 없습니다.

3
Warren Young

사용하다 "!" 파일을 파일의 ASCII 표현으로 변환합니다 (예 : ! uuencode myfile.bin >uuencode.dat). 그런 다음 ! cat uuencode.dat >target.dat. 그런 다음 대상 측에서 uudecode를 사용하십시오. ! uudecode target.dat >myfile.bin

1
Nils