Scp с указанным номером порта
Я пытаюсь скопировать файл с удаленного сервера на локальный компьютер. Доступен только порт 80.
Я пробовал:
scp -p 80 [email protected]:/root/file.txt .
но получил эту ошибку: cp: 80: No such file or directory
Как указать номер порта в команде scp?
Ответы
Ответ 1
В отличие от 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 Сохраняет время модификации, время доступа и режимы из исходного файла.
Обновите и оставьте в стороне один из комментариев (с большим количеством голосов):
Что касается комментария Абдулла о порядке опций scp
, то, что он предлагает:
scp -P80 -r some_directory -P 80 ...
..., перемежает параметры и параметры. getopt(1)
четко определяет, что параметры должны следовать за опциями, а не перемежаться с ними:
Параметры, с которыми вызывается getopt, можно разделить на две части: параметры, которые изменяют способ синтаксического анализа, выполняемый getopt (параметры и строка выбора в ОПИСАНИИ), и параметры, которые необходимо проанализировать (параметры в ОПИСАНИИ). Вторая часть начнется с первого параметра -o ption, который не является аргументом option, или после первого вхождения '-'. Если в первой части не найдено ни одной опции "-o" или "- -o ptions", в качестве строки коротких опций используется первый параметр второй части.
Поскольку -r
командной строки -r
не принимает никаких дополнительных аргументов, some_directory
является "первым параметром, отличным от -o, который не является аргументом опции". Поэтому, как четко указано в getopt(1)
странице getopt(1)
, все последующие аргументы командной строки, которые следуют за ним (т. -P 80...
), предполагаются как не -o ption (и не -o ption аргументы).
Таким образом, по сути, getopt(1)
видит пример, представленный с окончанием параметров и началом параметров, разграниченных последовательным бингом текста серым цветом:
scp -P 80 -r some_directory -P 80...
Это не имеет ничего общего с поведением scp
и связано с тем, как стандартные приложения POSIX анализируют параметры командной строки с использованием набора функций getopt(3)
.
Для получения более подробной информации о порядке и обработке командной строки, пожалуйста, прочитайте getopt(1)
используя:
man 1 getopt
Ответ 2
Еще один намек. Поместите параметр "-P" после команды scp, независимо от того, является ли машина, в которой вы находитесь, второй (aka destination). Пример:
scp -P 2222 /absolute_path/source-folder/some-file [email protected]:/absolute_path/destination-folder
Ответ 3
Вы знаете, что круче, чем -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 [email protected]:/root/file.txt .
или
scp short:/root/file.txt .
Вы можете использовать что-либо в строке "Host" с помощью ssh, scp, rsync, git и более
Есть много вариантов конфигурации, которые вы можете использовать в файлах конфигурации, см.:
man ssh_config
Ответ 4
Я использую разные порты, а затем стандартные и скопируйте файлы между такими файлами:
scp -P 1234 [email protected][ip address or host name]:/var/www/mywebsite/dumps/* /var/www/myNewPathOnCurrentLocalMachine
Это только для случайного использования, если оно повторяется в соответствии с расписанием, вы должны использовать rsync и cron job для этого.
Ответ 5
Справка scp сообщает нам, что порт указан в верхнем регистре P.
~$ scp
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[[email protected]]host1:]file1 ... [[[email protected]]host2:]file2
Надеюсь, что это поможет.
Ответ 6
Копирование файлов для размещения:
scp SourceFile [email protected]:/directory/TargetFile
Копирование файлов с хоста:
scp [email protected]:/directory/SourceFile TargetFile
Копирование каталога рекурсивно от хоста:
scp -r [email protected]:/directory/SourceFolder TargetFolder
Примечание: Если хост использует порт, отличный от порта 22, вы можете указать его с помощью опции -P:
scp -P 2222 [email protected]:/directory/SourceFile TargetFile
Ответ 7
Этого можно достичь, указав порт с помощью переключателя -P
:
scp -i ~/keys/yourkey -P2222 file [email protected]:/directory/
Ответ 8
если вам нужно скопировать локальный файл на сервер (укажите порт)
scp -P 3838 /the/source/file [email protected]:/destination/file
Ответ 9
для использования другого порта в команде scp используйте прописную букву P, как это
scp -P port-number source-file/directory [email protected]:/destination
я али