두 개의 다른 포트가있는 SCP


15

scp 명령을 사용하여 로컬 PC에서 두 원격 서버간에 파일을 복사하려면 어떻게해야합니까?

원격 서버 1 : IP = 67.12.21.133 및 포트 = 6774

원격 서버 2 : IP = 67.129.242.40 및 포트 = 6774

scp -rp -P 6774 denny@67.12.21.133 : /home/denny/testapp1.txt denny@67.129.242.40 :

67.12.21.133의 비밀번호를 입력 한 후 오류가 발생합니다.

ssh : 호스트 67.129.242.40 포트 22에 연결 : 연결이 거부 됨

연결이 끊어짐


방금 테스트했지만 첫 번째 호스트에서만 작동합니다. 두 번째 포트 (22)에 잠겨
gajdipajti

답변:


19

~/.ssh/config호스트에 사용할 포트를 지정하고 다른 많은 좋은 것들을 설정하는 데 사용할 수 있습니다 man ssh_config: man page 확인 ) :

# ~/.ssh/config

Host 67.12.21.133
  Port 6774

Host 67.129.242.40
  Port 6774

이 작업을 수행 할 때는 -3로컬 컴퓨터를 통해 파일을 복사하는 scp 옵션을 사용해야합니다 . 그렇지 않으면 scp는 첫 번째 호스트에서 ssh를 통해 scp 명령을 실행하므로 실제로 실행됩니다.

 ssh -p 6774 denny@67.12.21.133 scp -rp /home/denny/testapp1.txt denny@67.129.242.40:

그런 다음 로컬 호스트 대신 첫 번째 원격 호스트 (67.12.21.133)의 ~ / .ssh / config가 사용됩니다.

~/.ssh/config올바르게 설정하면 다음 과 같이 작동합니다.

scp -rp3 denny@67.12.21.133:/home/denny/testapp1.txt denny@67.129.242.40:

물론 ~ / .ssh / config 파일의 내용을 첫 번째 원격 호스트에 복사 한 다음 -3옵션 없이 scp를 사용 하면 전송 속도가 빨라질 수 있습니다.

또는 scp가 사용하는 트릭을 사용하고 이러한 명령 줄을 사용할 수 있습니다.

ssh -p 6774 denny@67.12.21.133 scp -rp -P 6774 /home/denny/testapp1.txt denny@67.129.242.40:

(ssh 및 scp에 대한 포트 매개 변수의 다른 경우 : ssh -p 6774vs. scp -P 6774)

추신 : 나는이 정보를 버그로 입력 한 OpenSSH bugzilla에서 얻었습니다 : https://bugzilla.mindrot.org/show_bug.cgi?id=2020


'-3'은 유효한 옵션이 아닙니다. "scp : illegal option-3"만 표시됩니다.
리치 Sedman

8

쉬운 해결책을 찾지 못했지만 다음과 같은 방법으로 sshfs를 사용할 수 있습니다.

mkdir /tmp/h1
mkdir /tmp/h2

sshfs -p 6774 user1@host1:/public /tmp/h1
sshfs -p 2211 user2@host2:/data/src /tmp/h2

cp /tmp/h1/files.* /tmp/h2

fusermount -u /tmp/h1
fusermount -u /tmp/h2

또 다른 방법은 ssh를 사용하는 것입니다 (실제로는 성공적으로 테스트되지 않았습니다).

ssh user1@host1 "cat /public/file.bin" | ssh user2@host2 "cat >/data/file.bin"

현재 두 암호를 입력하는 올바른 방법을 찾지 못했습니다. 두 번의 암호를 요구하지만 어느 누구도 받아들이지 않습니다. 어쩌면 호스트간에 ssh 키를 교환하면 작동합니다. 비밀번호가 필요하지 않기 때문입니다.

이게 도움이 되길 바란다? 도마


6

Linux Academy 블로그 의이 페이지 에 따르면 -P 6774두 번째 원격 경로 바로 앞의 옵션 만 사용하면 됩니다.

scp -rp -P 6774 denny@67.12.21.133:/home/denny/testapp1.txt -P 6774 denny@67.129.242.40:

-P플래그를 사용할 때마다 전체 명령이 아니라 명령 행의 다음 위치에만 적용됩니다. -P이전 경로 (또는 명령 이름 [ scp]) 사이에 없는 위치는 기본적으로 표준 포트 (22)입니다.


그것은 나를 위해 작동하지 않습니다. 이것이 가장 좋은 해결책 인 것 같아서 유감입니다. 링크가 끊어졌습니다.
david.perez

1
방금 링크를 업데이트했습니다 (먼저 로그인하는 것을 잊어 버렸습니다 ...). Linux Academy는 사이트를 재구성하기로 결정했습니다. 그것이 도움이되기를 바랍니다.
Dan Hunsaker

이것이 효과가 있었다면. 그러나 나는 얻는다 -P: No such file or directory.
Tom

@Tom-어떤 시스템에서 이것을 실행하고 있습니까? scp여기에 참조 된 것과 다른 구현이있을 수 있습니다 .
Dan Hunsaker

우분투 17.04입니다.
Tom

-2

한 서버에서 다른 서버로 데이터를 전송해야하는 경우 SCP 명령을 사용하십시오. 그렇게하려면

키보드에서 Ctrl+ Alt+ T를 누르면 터미널이 열립니다. 열리면 아래 명령을 실행하십시오.

scp -pr root@192.168.1.2:/path/to/files /destination/path

참고 : 포트 번호를 언급하려는 경우 매개 변수 -P를 사용할 수 있습니다.


2
당신은 질문을 읽지 않았습니다. 포트에 문제가 있습니다. 첫 번째 포트를 설정할 수 있지만 -P 매개 변수를 사용하여 두 번째 포트를 너트
gajdipajti

@gajdipajti 내 답변에 포트를 지정하지 않고 메모로 추가했습니다. 또한 사용자는 동일한 포트를 사용하고 있다고 말했습니다. Q. 2nd & 3rd line :)
Mitch

2
그러나 그것은 그렇게 작동하지 않습니다. 첫 번째는 -P로 설정하지만 두 번째는 22로 유지됩니다. 시도해보십시오. 현재 테스트를 수행하고 있지만 여전히 작동하는 솔루션은 없습니다.
gajdipajti 2016 년

비표준 포트를 사용하는 경우 -P 옵션 만 사용합니다.
Mitch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.