답변:
ssh와 달리 scp는 소문자 p 대신 대문자 P 스위치를 사용하여 포트를 설정합니다.
scp -P 80 ... # Use port 80 to bypass the firewall, instead of the scp default
소문자 p 스위치는 시간 및 모드 보존을 위해 scp와 함께 사용됩니다.
다음은 두 스위치에 관한 모든 세부 정보와 scp에 대문자 P가 선택된 이유에 대한 설명과 함께 scp 매뉴얼 페이지에서 발췌 한 것입니다.
-P port 원격 호스트에서 연결할 포트를 지정합니다. -p는 rcp (1)에서 파일의 시간과 모드를 보존하기 위해 이미 예약되어 있으므로이 옵션은 대문자 'P'로 작성됩니다.
-p 원본 파일의 수정 시간, 액세스 시간 및 모드를 유지합니다.
(심하게 반박 된) 의견 중 하나를 업데이트하고 따로 둠 :
scp
옵션 순서 에 대한 Abdull의 의견과 관련하여 그는 다음과 같이 제안합니다.
scp -P80 -r some_directory -P 80 ...
..., 옵션과 매개 변수가 산재합니다. getopt(1)
매개 변수는 옵션 뒤에 와야하며 매개 변수와 함께 산재되어서는 안됨을 명확하게 정의합니다.
getopt가 호출되는 매개 변수는 getopt가 구문 분석을 수행하는 방식을 수정하는 옵션 (SYNOPSIS의 옵션 및 optstring)과 구문 분석 할 매개 변수 (SYNOPSIS의 매개 변수)의 두 부분으로 나눌 수 있습니다. 두 번째 부분은 옵션 인수가 아닌 첫 번째 비 옵션 매개 변수에서 시작하거나 '-'가 처음 발생한 후에 시작됩니다. 첫 번째 부분에 '-o'또는 '--options'옵션이 없으면 두 번째 부분의 첫 번째 매개 변수가 짧은 옵션 문자열로 사용됩니다.
때문에 -r
명령 행 옵션은 더 이상 인수를 사용하지 않습니다, some_directory
"옵션 인수하지 않은 첫 번째 옵션 매개 변수"입니다. 따라서 getopt(1)
매뉴얼 페이지 에서 명확하게 설명 된 것처럼 그 뒤에 나오는 모든 명령 줄 인수 (예 :) -P 80 ...
는 옵션이 아닌 옵션으로 간주됩니다.
실제로, 이것은 getopt(1)
옵션의 끝과 텍스트 빙이 회색으로 구분 된 매개 변수의 시작과 함께 예제 가 어떻게 보이는지를 보여줍니다 .
scp -P80 -r some_directory -P 80 ...
이것은 scp
POSIX 표준 응용 프로그램 getopt(3)
이 C 함수 세트를 사용하여 명령 행 옵션을 구문 분석하는 방식 과 동작 및 모든 것과 관련이 없습니다 .
명령 행 순서 및 처리에 대한 자세한 내용은 다음을 getopt(1)
사용 하여 맨 페이지 를 읽으십시오 .
man 1 getopt
scp
올바른 옵션 순서 scp -r some_directory -P 80 ...
가 필요 scp -P 80 -r some_directory ...
합니다. 작동 하지 않지만 작동 합니다.
-P
매개 변수 순서 를 설명 하는 답변이 있습니다. 기본적으로 포트는 호스트보다 먼저 가야합니다. 이는 모호성을 방지하고 -P
두 호스트가 모두 원격 인 경우 두 개의 매개 변수를 허용합니다 .
당신은 무엇보다 멋진 지 알아 -P
? 아무것도
이 서버를 몇 번 이상 사용하는 경우 다음 ~/.ssh/config
과 같은 항목 으로 파일을 설정 / 작성 하십시오.
Host www.myserver.com
Port 80
또는
Host myserver myserver80 short any.name.u.want yes_anything well-within-reason
HostName www.myserver.com
Port 80
User username
그런 다음 다음을 사용할 수 있습니다.
scp username@www.myserver.com:/root/file.txt .
또는
scp short:/root/file.txt .
"Host"라인에서 ssh, scp, rsync, git 등으로 무엇이든 사용할 수 있습니다
구성 파일에서 사용할 수있는 많은 구성 옵션이 있습니다.
man ssh_config
scp -3
다른 포트에서 ssh 리스너가있는 서버와의 연결 을 허용하는 유일한 솔루션입니다 . scp -3 -P 123 server1:/file -P 456 server2:/file
또는 유사한 대안이없는 일, SCP는 모두 같은 서버에서 포트 가정 것
호스트로 파일 복사 :
scp SourceFile remoteuser@remotehost:/directory/TargetFile
호스트에서 파일 복사 :
scp user@host:/directory/SourceFile TargetFile
호스트에서 재귀 적으로 디렉토리 복사
scp -r user@host:/directory/SourceFolder TargetFolder
참고 : 호스트가 포트 22 이외의 포트를 사용하는 경우 -P 옵션을 사용하여 지정할 수 있습니다.
scp -P 2222 user@host:/directory/SourceFile TargetFile
이것이 완전한 답변을 찾는 사람에게 도움이되기를 바랍니다.
다른 서버 나 로컬 컴퓨터에 포트가 정의 된 서버에서 폴더 또는 파일 복사
scp -r -P 포트 user @ IP_address : / home / file / pathDirectory
**Note:** The last . on the command directs it to copy everything in that folder to your directory of preference
많은 답변이 있지만 간단하게 유지할 수 있어야합니다. 어떤 포트 SSH가 수신 대기 중인지 알고 정의하십시오. 다음은 방금 문제를 복제하는 데 사용한 것입니다.
scp -P 12222 file.7z user@193.168.XX : / home / user / Downloads 잘 작동했습니다.