컴퓨터 C에서 컴퓨터 A로 파일을 다운로드해야 합니다. scp
A에서 C에 직접 액세스할 수 없기 때문에 이 작업을 수행하려면 머신 B(이 작업을 수행하는 데 사용하고 있음)에 로그인해야 합니다 .
단일 명령이나 스크립트를 사용하여 C에서 A로 파일을 다운로드할 수 있습니까?
답변1
A와 C가 머신 B에서 접근 가능하다면,
새 버전은 두 원격 컴퓨터 간에 파일을 복사할 수 있는 스위치를 scp
지원합니다 .-3
-3 Copies between two remote hosts are transferred through the local host. Without this option the data is copied directly between the two remote hosts. Note that this option disables the
progress meter.
$ scp -3 user1@C:/file user2@A:/file
답변2
모든 머신에서 SSH 액세스를 구성한 경우 머신 B를 통해 SSH 터널을 설정할 수 있습니다.
첫 번째 단계:
[user@A ~]$ ssh -f -L LOCALPORT:IP_ADDR_C:22 user_at_B@IP_ADDR_B
명령이 실행되기 전에 키를 백그라운드에 둡니다 -f
. 열쇠를 ssh
사용하는 것이 좋습니다 -N
.
에서 man ssh
:
-N 원격 명령을 실행하지 않습니다. 이는 포트만 전달하는 데 유용합니다(프로토콜 버전 2만 해당).
이제 다음을 사용할 수 있습니다 scp
.
[user@A ~]$ scp -P LOCALPORT user_at_C@localhost:<your_file_at_C> <local_file>
예를 들어, 머신 뒤에 있는 머신의 사용자 홈 디렉터리에서 파일을 다운로드합니다 test.txt
.me
192.168.1.1
host.example.com
ssh -f -N -L 2222:192.168.1.1:22 [email protected]
scp -P 2222 me@localhost:~/test.txt .
답변3
아주 쉬운 방법이 있습니다!
먼저 게이트웨이에 연결합니다.
ssh user@B
복사 시작 C -> A
ssh user@C "dd if=/path/source/file" | ssh user@A "dd of=/path/destination/file"
dd
stderr에 작성된 메시지를 삭제하려면 status=none
해당 버전에서 dd
지원하는 경우 이 옵션을 사용하거나 2> /dev/null
.
8.4 버전에는 dd
문서에 있음에도 불구하고 작동하지 못하게 하는 버그가 있다는 점에 유의하세요.status=none
답변4
ssh
B에서 C로 터널을 설정한 다음 A에서 B의 포트로 터널을 설정 하면 scp
파일을 다운로드하는 데 사용됩니다. 정보 페이지가 많고 Google 검색이 첫 번째 검색으로 이어졌습니다.여기.