원격 서버에서 로컬 컴퓨터로 파일을 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)
매뉴얼 페이지 에서 명확하게 설명 된 것처럼 그 뒤에 나오는 모든 명령 줄 인수 (예 🙂 -P 80 ...
는 옵션이 아닌 옵션으로 간주됩니다.
실제로, 이것은 getopt(1)
옵션의 끝과 텍스트 빙이 회색으로 구분 된 매개 변수의 시작과 함께 예제 가 어떻게 보이는지를 보여줍니다 .
scp -P80 -r some_directory -P 80 ...
이것은 scp
POSIX 표준 응용 프로그램 getopt(3)
이 C 함수 세트를 사용하여 명령 행 옵션을 구문 분석하는 방식 과 동작 및 모든 것과 관련이 없습니다 .
명령 행 순서 및 처리에 대한 자세한 내용은 다음을 getopt(1)
사용 하여 맨 페이지 를 읽으십시오 .
man 1 getopt
답변
하나의 추가 힌트. ssh하려는 기계가 두 번째 기계인지 (일명 대상) 상관없이 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 .
“Host”라인에서 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 명령에서 다른 포트를 사용하려면 다음과 같이 대문자 P를 사용하십시오
scp -P port-number source-file/directory user@domain:/destination
나중에 알리
답변
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
도움이 되었기를 바랍니다.
답변
호스트로 파일 복사 :
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