IT박스

포트 번호가 지정된 scp

itboxs 2020. 9. 30. 09:01
반응형

포트 번호가 지정된 scp


원격 서버에서 내 로컬 컴퓨터로 파일을 scp하려고합니다. 포트 80 만 액세스 할 수 있습니다.

나는 시도했다 :

scp -p 80 username@www.myserver.com:/root/file.txt .

하지만이 오류가 발생했습니다. cp: 80: No such file or directory

scp 명령에서 포트 번호를 어떻게 지정합니까?


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)man 페이지 에 명확하게 설명 된대로 그 뒤에 오는 모든 명령 줄 인수 (예 :) -P 80 ...는 옵션이 아닌 인수 (및 옵션이 아닌 인수 )로 간주됩니다.

따라서 실제로 다음은 getopt(1)옵션의 끝과 회색으로 표시된 연속 텍스트로 구분 된 매개 변수의 시작이 표시된 예제를 보는 방법입니다 .

scp -P80 -r some_directory -P 80 ...

이것은 scpPOSIX 표준 응용 프로그램 getopt(3)이 C 함수 세트를 사용하여 명령 줄 옵션을 구문 분석하는 방법과 관련된 동작 및 모든 것과 관련이 없습니다 .

명령 줄 순서 및 처리에 대한 자세한 내용은 다음을 getopt(1)사용 하여 맨 페이지를 참조하십시오 .

man 1 getopt

추가 힌트 하나. ssh-ing하는 컴퓨터가 두 번째 컴퓨터 (대상)인지 여부에 관계없이 scp 명령 뒤에 '-P'옵션을 배치합니다. 예:

scp -P 2222 /absolute_path/source-folder/some-file user@example.com:/absolute_path/destination-folder

뭐가 더 멋진 지 알아 -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 .

ssh, scp, rsync, git 등과 함께 "호스트"줄에있는 모든 것을 사용할 수 있습니다.

구성 파일에서 사용할 수있는 많은 구성 옵션이 있습니다. 다음을 참조하십시오.

man ssh_config


나는 다른 포트를 사용하고 있으며 다음과 같은 파일간에 파일을 복사합니다.

scp -P 1234 user@[ip address or host name]:/var/www/mywebsite/dumps/* /var/www/myNewPathOnCurrentLocalMachine

이것은 가끔 사용하기위한 것으로, 일정에 따라 반복되는 경우 rsync 및 cron 작업을 사용하여 수행해야합니다.


scp help tells us that port is specified by uppercase P.

~$ scp
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2

Hope this helps.


for use another port on scp command use capital P like this

scp -P port-number source-file/directory user@domain:/destination

ya ali


Copying file to host: scp SourceFile remoteuser@remotehost:/directory/TargetFile

Copying file from host: scp user@host:/directory/SourceFile TargetFile

Copying directory recursively from host: scp -r user@host:/directory/SourceFolder TargetFolder

NOTE: If the host is using a port other than port 22, you can specify it with the -P option: scp -P 2222 user@host:/directory/SourceFile TargetFile


This can be achived by specifying port via the -P switch:

scp -i ~/keys/yourkey -P2222 file ubuntu@host:/directory/

if you need copy local file to server (specify port )

scp -P 3838 /the/source/file username@server.com:/destination/file

참고URL : https://stackoverflow.com/questions/10341032/scp-with-port-number-specified

반응형