scp с указанным номером порта

Я пытаюсь scp файл с удаленного сервера на локальную машину. Доступен только порт 80.

пробовал:

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

но получил эту ошибку: cp: 80: No such file or directory

Как указать номер порта в команде scp?

8 ответов


В отличие от 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 порт указывает порт для подключения на удаленном хосте. Обратите внимание, что этот параметр написано с большой буквы "P", потому что-p уже зарезервировано для сохранения времени и режимов работы файла в rcp (1).

- p сохраняет время изменения, время доступа и режимы из исходного файла.


одна дополнительная подсказка. Поместите опцию'- P ' после команды scp, независимо от того, является ли машина, в которую вы ssh-ing, второй (aka destination). Пример:

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

вы знаете, что круче, чем -P? ничего!--8-->

если вы используете этот сервер более нескольких раз, настройте / создайте ~/.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 & more

есть много вариантов конфигурации, которые можно использовать в файлах конфигурации, см.:

man ssh_config


Я использую разные порты, затем стандартные и копирую файлы между файлами, как это:

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

Это только для случайного использования, если он повторяется на основе расписания, вы должны использовать rsync и cron job для этого.


справка scp сообщает нам, что порт указан в верхнем регистре 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


Это можно получить, указав порт через -P переключатель:

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

Если вам нужно скопировать локальный файл на сервер (указать порт )

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