scp với số cổng được chỉ định


794

Tôi đang cố gắng quét một tập tin từ một máy chủ từ xa đến máy cục bộ của tôi. Chỉ có cổng 80 là có thể truy cập.

Tôi đã thử:

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

nhưng đã gặp lỗi này: cp: 80: No such file or directory

Làm cách nào để chỉ định số cổng trong lệnh scp?


33
cảng phải ở thủ đô -P 80
Eliethesaiyan

Câu trả lời:


1407

Không giống như ssh, scp sử dụng công tắc P viết hoa để đặt cổng thay vì chữ thường p:

scp -P 80 ... # Use port 80 to bypass the firewall, instead of the scp default

Công tắc p chữ thường được sử dụng với scp để bảo toàn thời gian và chế độ.

Dưới đây là đoạn trích từ trang man của scp với tất cả các chi tiết liên quan đến hai công tắc, cũng như giải thích lý do tại sao chữ hoa P được chọn cho scp:

Cổng -P Chỉ định cổng để kết nối trên máy chủ từ xa. Lưu ý rằng tùy chọn này được viết bằng chữ 'P', vì -p đã được dành riêng để bảo toàn thời gian và chế độ của tệp trong RCp (1).

-p Giữ thời gian sửa đổi, thời gian truy cập và chế độ từ tệp gốc.

Cập nhật và dành một bên để giải quyết một trong những ý kiến ​​(được đánh giá cao) :

Liên quan đến nhận xét của Abdull về scpthứ tự tùy chọn, những gì ông gợi ý:

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

..., xen kẽ các tùy chọn và tham số. getopt(1)xác định rõ ràng rằng các tham số phải đến sau các tùy chọn và không được xen kẽ với chúng:

Các tham số getopt được gọi với có thể được chia thành hai phần: các tùy chọn sửa đổi cách getopt sẽ thực hiện phân tích cú pháp (các tùy chọn và chuỗi quang trong SYNOPSIS) và các tham số sẽ được phân tích cú pháp (tham số trong SYNOPSIS). Phần thứ hai sẽ bắt đầu ở tham số không tùy chọn đầu tiên không phải là đối số tùy chọn hoặc sau lần xuất hiện đầu tiên của '-'. Nếu không tìm thấy tùy chọn '-o' hoặc '--options' trong phần đầu tiên, tham số đầu tiên của phần thứ hai được sử dụng làm chuỗi tùy chọn ngắn.

-rtùy chọn dòng lệnh không cần thêm đối số, nên some_directory"tham số không phải tùy chọn đầu tiên không phải là đối số tùy chọn". Do đó, như được viết rõ ràng trong getopt(1)trang man, tất cả các đối số dòng lệnh thành công đi theo nó (nghĩa là -P 80 ...) được coi là không phải là tùy chọn (và đối số không phải là tùy chọn).

Vì vậy, trong thực tế, đây là cách getopt(1)xem ví dụ được trình bày với phần cuối của các tùy chọn và phần đầu của các tham số được phân định bằng cách thành công bing văn bản màu xám:

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

Điều này không liên quan gì đến scphành vi và mọi thứ liên quan đến cách các ứng dụng tiêu chuẩn POSIX phân tích các tùy chọn dòng lệnh bằng cách sử dụng getopt(3)bộ hàm C.

Để biết thêm chi tiết liên quan đến đặt hàng và xử lý dòng lệnh, vui lòng đọc getopt(1)manpage bằng cách sử dụng:

man 1 getopt

88
btw, scpyêu cầu thứ tự tùy chọn chính xác: scp -r some_directory -P 80 ...không hoạt động ----- nhưng scp -P 80 -r some_directory ...hoạt động.
Abdull

9
nói chung trong linux, lệnh được theo sau bởi các tùy chọn và sau đó là các hướng dẫn / giá trị
Gary

2
@Abdull lưu ý rằng thư mục scp -r -p 50193 / path / to / cũng hoạt động. Tham số đường dẫn tệp không được gắn với tùy chọn đệ quy -r.
Benjamin

6
@Benjamin Trừ khi bạn có ý định sử dụng cổng 50193 trong trường hợp 'p' của bạn nên được viết hoa.
Không có

1
@Abdull: có câu trả lời tại askubfox.com/a/307078/37574 giải thích -Pthứ tự tham số. Về cơ bản, cảng phải đi trước chủ nhà. Điều này vừa ngăn ngừa sự mơ hồ và cho phép hai -Ptham số nếu cả hai máy chủ đều ở xa.
mwfearnley

70

Một gợi ý bổ sung. Đặt tùy chọn '-P' sau lệnh scp, bất kể máy bạn đang ssh-ing là máy thứ hai (hay còn gọi là đích). Thí dụ:

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

46

Bạn biết những gì mát hơn -P? không có gì

Nếu bạn sử dụng máy chủ này nhiều lần, hãy thiết lập / tạo một ~/.ssh/configtệp có mục như:

Host www.myserver.com
    Port 80

hoặc là

Host myserver myserver80 short any.name.u.want yes_anything well-within-reason
    HostName www.myserver.com
    Port 80
    User username

Sau đó, bạn có thể sử dụng:

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

hoặc là

scp short:/root/file.txt .

Bạn có thể sử dụng bất cứ thứ gì trên dòng "Máy chủ" với ssh, scp, rsync, git và hơn thế nữa

Có nhiều tùy chọn cấu hình mà bạn có thể sử dụng trong các tệp cấu hình, xem:

man ssh_config


3
Chỉ có giải pháp cho phép sử dụng scp -3từ và đến các máy chủ có trình nghe ssh trên các cổng khác nhau. scp -3 -P 123 server1:/file -P 456 server2:/filehoặc các lựa chọn thay thế tương tự sẽ không hoạt động, scp giả định cùng một cổng trên cả hai máy chủ
user88595

28

Tôi đang sử dụng các cổng khác nhau sau đó chuẩn và sao chép các tệp giữa các tệp như thế này:

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

Điều này chỉ dành cho sử dụng không thường xuyên, nếu nó lặp đi lặp lại dựa trên lịch trình, bạn nên sử dụng rsync và cron job để thực hiện.


7

để sử dụng một cổng khác trên lệnh scp, hãy sử dụng vốn P như thế này

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

ya ali


6

scp help cho chúng tôi biết rằng cổng được chỉ định bởi chữ hoa 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

Hi vọng điêu nay co ich.


2

Sao chép tập tin vào máy chủ: scp SourceFile remoteuser@remotehost:/directory/TargetFile

Sao chép tập tin từ máy chủ: scp user@host:/directory/SourceFile TargetFile

Sao chép thư mục đệ quy từ máy chủ: scp -r user@host:/directory/SourceFolder TargetFolder

LƯU Ý : Nếu máy chủ đang sử dụng một cổng khác với cổng 22, bạn có thể chỉ định nó với tùy chọn -P: scp -P 2222 user@host:/directory/SourceFile TargetFile


6
Chỉ cần LƯU Ý là đủ
blagus

2

Điều này có thể đạt được bằng cách chỉ định cổng thông qua công -Ptắc:

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

2

nếu bạn cần sao chép tệp cục bộ vào máy chủ (chỉ định cổng)

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

0

Hy vọng điều này sẽ giúp ai đó tìm kiếm một câu trả lời hoàn hảo

Sao chép thư mục hoặc tệp từ máy chủ có cổng được xác định sang máy chủ khác hoặc máy cục bộ

  1. Chuyển đến thư mục nơi bạn có quyền quản trị tốt nhất là thư mục chính của bạn trên máy nơi bạn muốn sao chép tệp vào
  2. Viết lệnh dưới đây

người dùng cổng scp -r -P @ 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

Có rất nhiều câu trả lời, nhưng bạn chỉ cần có thể giữ cho nó đơn giản. Đảm bảo bạn biết SSH đang nghe cổng nào và xác định cổng đó. Đây là những gì tôi vừa sử dụng để tái tạo vấn đề của bạn.

scp -P 12222 file.7z user@193.168.XX: / home / user / Tải xuống Nó hoạt động tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.