我正在尝试将文件从远程服务器scp到我的本地计算机 . 只有80端口可以访问 .
我试过了:
scp -p 80 username@www.myserver.com:/root/file.txt .
但得到了这个错误: cp: 80: No such file or directory
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手册页的摘录,其中包含有关两个开关的所有详细信息,以及为scp选择大写P的原因解释:
-P port指定要在远程主机上连接的端口 . 请注意,此选项使用大写“P”编写,因为-p已保留用于保留rcp(1)中文件的时间和模式 . -p保留原始文件的修改时间,访问时间和模式 .
更新并在旁边解决其中一个(大量投票)评论:
关于Abdull关于 scp 期权订单的评论,他建议:
scp
scp -P80 -r some_directory -P 80 ...
......,散布选项和参数 . getopt(1) 清楚地定义了参数必须在选项之后,而不是穿插它们:
getopt(1)
调用参数getopt可以分为两部分:修改getopt将进行解析的方式的选项(SYNOPSIS中的选项和optstring),以及要解析的参数(SYNOPSIS中的参数) . 第二部分将从第一个非选项参数开始,该参数不是选项参数,或者在第一次出现' - '之后 . 如果在第一部分中未找到“-o”或“--options”选项,则第二部分的第一个参数将用作短选项字符串 .
由于 -r 命令行选项不带进一步的参数, some_directory 是"the first non-option parameter that is not an option argument."因此,正如 getopt(1) 手册页中明确指出的那样,后面跟随它的所有后续命令行参数(即 -P 80 ... )都被认为是非选项(和非选项)选项参数) .
-r
some_directory
-P 80 ...
因此,实际上,这就是 getopt(1) 看到的示例与选项的结尾以及由灰色的后续文本bing划分的参数的开头:
some_directory -P 80 ...
这与 scp 行为无关,而且与POSIX标准应用程序如何使用 getopt(3) C函数解析命令行选项有关 .
getopt(3)
有关命令行排序和处理的更多详细信息,请阅读 getopt(1) 联机帮助页:
man 1 getopt
一个额外的提示 . 在scp命令之后放置'-P'选项,无论你正在进入的机器是否是第二个(也就是目的地) . 例:
scp -P 2222 /absolute_path/source-folder/some-file user@example.com:/absolute_path/destination-folder
你知道什么比 -P 更酷吗?没有
-P
如果您多次使用此服务器,请使用以下条目设置/创建 ~/.ssh/config 文件:
~/.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等更多内容
您可以在配置文件中使用许多配置选项,请参阅:
man ssh_config
我正在使用不同的端口然后标准并在文件之间复制文件,如下所示:
scp -P 1234 user@[ip address or host name]:/var/www/mywebsite/dumps/* /var/www/myNewPathOnCurrentLocalMachine
这仅适用于偶尔使用,如果它根据计划重复,您应该使用rsync和cron job来执行此操作 .
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 SourceFile remoteuser@remotehost:/directory/TargetFile
从主机复制文件: scp user@host:/directory/SourceFile TargetFile
scp user@host:/directory/SourceFile TargetFile
从主机递归复制目录: scp -r user@host:/directory/SourceFolder TargetFolder
scp -r user@host:/directory/SourceFolder TargetFolder
NOTE :如果主机使用端口22以外的端口,则可以使用-P选项指定它: scp -P 2222 user@host:/directory/SourceFile TargetFile
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
使用scp命令的另一个端口使用大写P这样
scp -P port-number source-file/directory user@domain:/destination
你好阿里
9 回答
与ssh不同,scp使用大写P开关来设置端口而不是小写p:
小写p开关与scp一起用于保存时间和模式 .
以下是scp手册页的摘录,其中包含有关两个开关的所有详细信息,以及为scp选择大写P的原因解释:
更新并在旁边解决其中一个(大量投票)评论:
关于Abdull关于
scp
期权订单的评论,他建议:......,散布选项和参数 .
getopt(1)
清楚地定义了参数必须在选项之后,而不是穿插它们:由于
-r
命令行选项不带进一步的参数,some_directory
是"the first non-option parameter that is not an option argument."因此,正如getopt(1)
手册页中明确指出的那样,后面跟随它的所有后续命令行参数(即-P 80 ...
)都被认为是非选项(和非选项)选项参数) .因此,实际上,这就是
getopt(1)
看到的示例与选项的结尾以及由灰色的后续文本bing划分的参数的开头:scp -P80 -r
some_directory -P 80 ...
这与
scp
行为无关,而且与POSIX标准应用程序如何使用getopt(3)
C函数解析命令行选项有关 .有关命令行排序和处理的更多详细信息,请阅读
getopt(1)
联机帮助页:一个额外的提示 . 在scp命令之后放置'-P'选项,无论你正在进入的机器是否是第二个(也就是目的地) . 例:
你知道什么比
-P
更酷吗?没有如果您多次使用此服务器,请使用以下条目设置/创建
~/.ssh/config
文件:要么
然后你可以使用:
scp username@www.myserver.com:/root/file.txt .
要么
scp short:/root/file.txt .
您可以在“主机”行使用ssh,scp,rsync,git等更多内容
您可以在配置文件中使用许多配置选项,请参阅:
man ssh_config
我正在使用不同的端口然后标准并在文件之间复制文件,如下所示:
这仅适用于偶尔使用,如果它根据计划重复,您应该使用rsync和cron job来执行此操作 .
scp help告诉我们端口是由大写字母P指定的 .
希望这可以帮助 .
将文件复制到主机:
scp SourceFile remoteuser@remotehost:/directory/TargetFile
从主机复制文件:
scp user@host:/directory/SourceFile TargetFile
从主机递归复制目录:
scp -r user@host:/directory/SourceFolder TargetFolder
NOTE :如果主机使用端口22以外的端口,则可以使用-P选项指定它:
scp -P 2222 user@host:/directory/SourceFile TargetFile
这可以通过
-P
开关指定端口来实现:如果需要将本地文件复制到服务器(指定端口)
使用scp命令的另一个端口使用大写P这样
你好阿里