SSH를 통해 시스템에 로그인 한 경우 다른 터미널 또는 화면 세션을 실행하지 않고 scp 또는 이와 유사한 작업을 수행하거나 원격 시스템에서 SSH를 다시 수행하지 않고 파일을 로컬 시스템으로 다시 복사하는 방법이 있습니까? 로컬 시스템?
SSH를 통해 시스템에 로그인 한 경우 다른 터미널 또는 화면 세션을 실행하지 않고 scp 또는 이와 유사한 작업을 수행하거나 원격 시스템에서 SSH를 다시 수행하지 않고 파일을 로컬 시스템으로 다시 복사하는 방법이 있습니까? 로컬 시스템?
답변:
미리 계획하면 가장 쉽습니다.
마스터 연결을 처음으로 엽니 다. 후속 연결의 경우 기존 마스터 연결을 통해 슬레이브 연결을 라우팅하십시오. 에서 ~/.ssh/config
자동으로 연결 공유를 설정 하십시오 .
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
기존 연결과 동일한 (사용자, 포트, 시스템)에 대한 ssh 세션을 시작하면 두 번째 세션이 첫 번째 세션을 통해 터널링됩니다. 두 번째 연결을 설정하려면 새로운 인증이 필요하지 않으며 매우 빠릅니다.
따라서 활성 상태 인 동안 신속하게 다음을 수행 할 수 있습니다.
scp
또는 rsync
;기존 연결에서 역방향 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 user@hostname 'cat -> /tmp/remotefile.conf'
# from remote host
ssh user@hostname 'cat /tmp/remotefile.conf' > /tmp/localfile.conf
또는 GUI와 같은 것을 선호한다면 Midnight Commander를 사용해보십시오 . 이를 기능 Shell-Link라고 합니다. 대부분의 배포판은 패키지 시스템에로 mc
있습니다.
mc
사용하는 것이 가장 빠릅니다.
tgz
항상 파일로 이것을하고 있습니다 :)
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
당신이 원하는에 가장 가까운 것 같다. 명령이 작동 하려면 파일에서 PermitLocalCommand
활성화 해야합니다 (참조 )./etc/ssh_config
~C
man ssh_config
당신이 설정 한 경우 동일한 SSH 세션을 다시 사용할 수 있습니다 ControlMaster
에서를 ssh_config
. 이렇게하면 :
$ ~C
ssh> !scp file user@myserver:
기술적으로 ssh 세션을 종료 한 적이 없으며 다시 인증 할 필요가 없습니다. 아마 당신이 원하는 것보다 더 복잡하지만 다른 쉬운 방법은 생각할 수 없습니다.
!args
도움말 메시지에서 찾을 수 없습니다 .
args
첫 도움말 메시지 (아닌 ~?
),하지만 두 번째에 (하나가 들어가면 ssh>
프롬프트로 ~C
, 하나는 입력 할 수 있습니다 help
상기 ssh>
프롬프트)
그것들은 모두 매우 복잡한 방법입니다.
다음을 사용하여 로컬 파일에 원격 파일 시스템을 마운트 할 수 있습니다 sshfs
.
mkdir -p /mnt/sshfs
root@IS1300:~# sshfs 192.168.1.2:/ /mnt/sshfs
root@IS1300:~# umount /mnt/sshfs
그런 다음 노틸러스, 그놈, konqueror, 돌고래, bash 등으로 파일을 복사하여 붙여 넣을 수 있습니다.
sshfs -oIdentityFile=~/.ssh/keyfile.pem user@192.168.1.2:/ /mnt/sshfs/
-R
하기 위해 역방향 ( , 원격-로컬의 경우) 또는 전달 ( -L
, 로컬-원격의 경우) 포트.그러나 이것들 중 어느 것도 실제로 필요하지 않습니다. SSH 프로토콜은 단일 연결에서 여러 채널을 지원하고 OpenSSH 클라이언트는 멀티플렉싱을 지원합니다. 당신이 가정 ControlMaster
하고 ControlPath
설정하는 것은 ( ControlPersist
너무 유용합니다)
# 첫 번째 연결 $ ssh 리모트 # 원래 ssh가 연 동일한 연결을 통해 다중화됩니다. $ sftp 원격
더 간단한 방법 : Filezilla (또는 선호하는 ftp 브라우저)를 열고 동일한 사이트에 대한 ssh 연결을 열고 파일을 찾아 로컬 파일 구조로 드래그하십시오. Filezilla를 처음 사용하는 경우 "사이트 관리자"기능을 사용하여 다음에 빠르게 다시 연결하십시오.
그렇습니다. 이것이 대부분의 사람들에게 명백하다는 것을 알고 있습니다 (정확하게 말하면 안됩니다). 그러나 터미널 전용 솔루션을 검색하는이 스레드를 발견 한 일부 (나 같은)는 명백한 것을 간과했을 수 있습니다.
ssh://SERVER
.
내가 제일과 가장 효율적인 솔루션으로 발견 한 것은 사용하는 것입니다 xclip-copyfile
및 xclip-pastefile
.
서버에서 xclip-copyfile
하나 이상의 파일을 복사 하는 데 사용 합니다. 그런 다음이 파일을 로컬 서버에서 사용할 수 있습니다. 거기에서 사용할 수 있습니다 xclip-pastefile
.
이것은 scp
로컬 ssh 서버 를 사용 하거나 필요로하지 않습니다. 예를 들어 cygwin과 함께 사용합니다. 유일한 문제는 xclip
아직 설치 하지 않은 경우 설치 가 필요하다는 것입니다. 아, 이것은 바이너리 파일에서도 작동합니다.
실용적인 경우 오픈 소스 소프트웨어를 선호하지만 SecureCRT 를 사용하는 많은 이유 중 하나는 파일 전송의 용이성입니다. F / OSS 세계에는 직접적인 대체물이 없습니다.
SecureCRT는 1990 년대 중반 순수한 Windows 프로그램으로 시작했지만 몇 년 전 Mac OS X 및 Linux로 포팅되었습니다 .
SecureCRT에는 SSH를 사용하는 시스템과 파일을주고받을 수있는 세 가지 주요 기능이 있습니다.
ZModem , YModem , XModem , Kermit 및 ASCII -SecureCRT는 여러 대역 내 파일 전송 프로토콜을 지원하는 구식 터미널 에뮬레이터입니다.
사용하기 가장 쉬운 것은 ZModem입니다. sz file-to-download
원격 명령 행 과 같은 것을 입력하면 , 원격 sz
프로그램은 이스케이프 시퀀스 를 작성하여 SecureCRT가 file-to-download
기본 다운로드 디렉토리 로 즉시 다운로드 를 시작하도록 지시 합니다.
세션마다 다운로드 디렉토리를 사용자 정의 할 수 있다는 점이 좋습니다. 이를 사용하여 본사 파일 서버에 사이트 별 디렉토리를 가지므로 다운로드 한 파일을 수동으로 정렬 할 필요가 없습니다.
( 패키지의 sz
일부인 "Send ZModem"프로그램 lrzsz
입니다. 대부분의 Unixy 시스템 용으로 이미 패키지되어 있습니다. 어떤 이유로 든 원격 시스템에 아직 설치되어 있지 않고 바이너리 패키지를 쉽게 설치할 수없는 경우, 소스 패키지는 작고 휴대 성이 뛰어납니다. 한 번 이상, lrzsz
"sharchive" 또는 uuencode
"d tarball 을 제거 된 원격 시스템에 보내 ZModem 파일을 전송할 수있었습니다.)
SFTP -SecureCRT에는 기본 SFTP 구현이 긴밀하게 통합되어 있습니다.
"긴밀하게 통합 된"이란 SFTP 메뉴 명령 또는 키보드 단축키를 제공하면 동일한 SSH 연결을 통해 원격 사이트에 연결된 새 탭을 여는 것을 의미합니다. 따라서 다시 로그인 할 필요가 없으며 동일한 서버에 대한 별도의 SFTP 연결을 연 경우보다 연결이 약간 더 빠릅니다.
VanDyke Software에는 별도의 파일 전송 제품인 SecureFX 가 있기 때문에 SFTP 기능을 "기본"으로 특성화합니다 . 내장 SFTP 클라이언트보다 기능이 우수하며 SecureCRT 와도 통합됩니다.
SecureCRT의 SFTP 기능을 사용하면 ZModem 구성과 별 개인 기본 원격 및 로컬 디렉토리를 구성 할 수 있습니다.
이 SFTP 기능에는 명령 완료 sftp
와 같은 여유가 있다는 점을 제외하고 OpenSSH의 프로그램을 모방 한 기본 명령 행 인터페이스 가 Tab있습니다. 따라서라는 원격 파일을 검색하는 somefile.tar.gz
것이 쉬울 수 있습니다 get so
TabEnter.
끌어서 놓기 -파일을 터미널 창으로 끌어서 놓으면 자동으로 입력 rz
되어 파일을 보내기 시작합니다.
또는 SFTP 탭을 열고 해당 탭에 파일을 놓아 SFTP를 통해 전송할 수 있습니다. 따라서, 원격 시스템에 파일을 보내는 것처럼 간단 할 수있는 Alt-P, 드래그 , 드롭 .
SFTP를 통한 전송은 TCP 기반 프로토콜이기 때문에 전송 속도가 훨씬 빠르므로 최신 TCP / IP 스택 의 대형 슬라이딩 창 에서 이점을 얻습니다 . ZModem은 64KB 블록 크기가 "큰"것으로 간주되던 시절에 설계되었습니다. 따라서 링크의 많은 잠재적 속도는 ZModem에 흡수되며 각 끝은 블록 전송 승인을 기다립니다.
끌어서 놓기 작업 모드에서 한 가지 좋은 점은 ZModem을 사용하여 스트레스 중 하나를 취한다는 것입니다. rz
원격 시스템에서 입력하면 SecureCRT가 파일 선택기를 자동으로 팝업합니다. 그런 다음 원격 측 시간이 초과되기 전에 약 1 분 동안 파일을 찾아서 선택해야합니다. 이것은 24 시간 경쾌한 분위기를 조성합니다. 드래그 앤 드롭을 사용하면 여가 시간에 파일을 찾은 다음 마우스를 한 번의 빠른 동작으로 전송을 시작할 수 있습니다.
명시 적 rz
명령 으로 전송을 시작하면서 여전히 수동 방법을 사용합니다 . SecureCRT를 사용하면 세션 별 업로드 디렉토리를 구성 할 수 있기 때문에 특정 원격 사이트에서 실행중인 최신 소프트웨어 빌드가 항상 포함 된 파일 서버의 폴더를 가리 킵니다. 이러한 전송의 경우 파일 선택기가 시작하기에 올바른 위치에서 열리므로 시계와의 경쟁은 없습니다.
scp file.foo user@myclient.com:file.foo
: P