(A), (B)를 건너뛰어야만 접근할 수 있는 로컬 컴퓨터(L)와 원격 컴퓨터(R)가 있습니다.
파일을 전송하기 위한 일반적인 루틴은 다음과 같습니다.
l@L$ ssh -t a@A ssh -t b@B ssh r@R
r@R$ # do some stuff till I find out I want to copy file x to L
그런 다음 새 터미널을 엽니다.
l@L ssh a@A
a@A ssh b@B
b@B scp r@R:PATH_TO_FILE a@A:TEMP
b@B <ctrl-D> to close
a@A scp TEMP r@R l@L:FINAL_DESTINATION
그리고 scp
내 모든 홉에 대한 파일.
R에서 직접 파일을 복사할 수 있는 셸 확장이나 프로그램이 있는지 궁금합니다. stdout@R을 stdin@L로 파이핑하여 잡는 것과 유사합니다. 매우 효율적일 필요는 없습니다. 대부분의 경우 내 파일은 크기가 작지만(100kB 미만) 바이너리를 지원해야 합니다.
답변1
ssh
구성 을 살펴보고 싶을 수도 있습니다 ProxyCommand
. 그러면 작업이 더욱 원활해지고 셸, SFTP, 터널 및 SSH를 통해 프록시하려는 모든 항목에 대해 작동합니다.
다음과 같은 세 개의 호스트가 있다고 가정합니다.
workstation.example.com
- 이것은 당신이 작업하고 있는 기계입니다.proxy.example.com
- SSH 트래픽을 라우팅하는 머신입니다.endpoint.example.com
- 여기가 트래픽이 끝나기를 원하는 곳입니다.
~/.ssh/config
on 에 workstation
다음을 추가합니다.
Host endpoint
User WorkstationUser # set this to the username on the workstation host
HostName endpoint.example.com
ProxyCommand ssh [email protected] nc %h %p 2> /dev/null
proxy
호스트 시스템 에 nc
(netcat)이 설치되어 있는지 확인하십시오.
그런 다음 에서 프록시 호스트를 통해 해당 시스템에 투명하게 프록시를 사용할 수 workstation
있습니다 .ssh endpoint
sftp endpoint