포트 번호가 지정된 scp


793

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

나는 시도했다 :

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

그러나이 오류가 발생했습니다 : cp: 80: No such file or directory

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


33
항구는 수도 여야 함 -P 80
Eliethesaiyan

답변:


1406

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 ...

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

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

man 1 getopt

88
btw, scp올바른 옵션 순서 scp -r some_directory -P 80 ...가 필요 scp -P 80 -r some_directory ...합니다. 작동 하지 않지만 작동 합니다.
Abdull

9
일반적으로 리눅스에서는 명령 뒤에 옵션과 명령어 / 값
Gary

2
@Abdull scp -r -p 50193 / path / to / directory도 작동합니다. 파일 경로 매개 변수는 -r recursion 옵션과 연결되어 있지 않습니다.
Benjamin

6
@Benjamin 포트 50193을 사용하지 않는 한,이 경우 'p'는 대문자 여야합니다.
없음

1
@ Abbdull : askubuntu.com/a/307078/37574-P매개 변수 순서 를 설명 하는 답변이 있습니다. 기본적으로 포트는 호스트보다 먼저 가야합니다. 이는 모호성을 방지하고 -P두 호스트가 모두 원격 인 경우 두 개의 매개 변수를 허용합니다 .
mwfearnley

70

하나의 추가 힌트. ssh하려는 기계가 두 번째 기계인지 (일명 대상) 상관없이 scp 명령 뒤에 '-P'옵션을 배치하십시오. 예:

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

46

당신은 무엇보다 멋진 지 알아 -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


3
scp -3다른 포트에서 ssh 리스너가있는 서버와의 연결 을 허용하는 유일한 솔루션입니다 . scp -3 -P 123 server1:/file -P 456 server2:/file또는 유사한 대안이없는 일, SCP는 모두 같은 서버에서 포트 가정 것
user88595

28

표준과 다른 포트를 사용하고 다음과 같이 파일간에 파일을 복사합니다.

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

스케줄에 따라 반복되는 경우 rsync 및 cron 작업을 사용해야하는 경우가 가끔 있습니다.


7

scp 명령에서 다른 포트를 사용하려면 다음과 같이 대문자 P를 사용하십시오

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

나중에 알리


6

scp help는 포트가 대문자 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

도움이 되었기를 바랍니다.


2

호스트로 파일 복사 : 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


6
그냥 참고로
충분할

2

-P스위치 를 통해 포트를 지정하면이 문제를 해결할 수 있습니다 .

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

2

로컬 파일을 서버에 복사해야하는 경우 (포트 지정)

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

0

이것이 완전한 답변을 찾는 사람에게 도움이되기를 바랍니다.

다른 서버 나 로컬 컴퓨터에 포트가 정의 된 서버에서 폴더 또는 파일 복사

  1. 파일을 복사 할 시스템 의 홈 디렉토리 인 관리자 권한이있는 디렉토리로 이동 하십시오.
  2. 아래 명령을 작성하십시오

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

0

많은 답변이 있지만 간단하게 유지할 수 있어야합니다. 어떤 포트 SSH가 수신 대기 중인지 알고 정의하십시오. 다음은 방금 문제를 복제하는 데 사용한 것입니다.

scp -P 12222 file.7z user@193.168.XX : / home / user / Downloads 잘 작동했습니다.

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