我正在尝试将文件从远程服务器scp到我的本地计算机.只有80端口可以访问.
我试过了:
scp -p 80 username@www.myserver.com:/root/file.txt .
Run Code Online (Sandbox Code Playgroud)
但得到了这个错误: cp: 80: No such file or directory
如何在scp命令中指定端口号?
Mic*_*eyn 1291
与ssh不同,scp使用大写P开关来设置端口而不是小写p:
scp -P 80 ... # Use port 80 to bypass the firewall, instead of the scp default
Run Code Online (Sandbox Code Playgroud)
小写p开关与scp一起用于保存时间和模式.
以下是scp手册页的摘录,其中包含有关两个开关的所有详细信息,以及为scp选择大写P的原因解释:
-P port指定要在远程主机上连接的端口.请注意,此选项使用大写"P"编写,因为-p已保留用于保留rcp(1)中文件的时间和模式.
-p保留原始文件的修改时间,访问时间和模式.
更新并在旁边解决其中一个(大量投票)评论:
关于Abdull关于scp
期权订单的评论,他建议:
scp -P80 -r some_directory -P 80 ...
Run Code Online (Sandbox Code Playgroud)
......,散布选项和参数.getopt(1)
明确定义参数必须在选项之后,而不是穿插它们:
调用参数getopt可以分为两部分:修改getopt将进行解析的方式的选项(SYNOPSIS中的选项和optstring),以及要解析的参数(SYNOPSIS中的参数).第二部分将从第一个非选项参数开始,该参数不是选项参数,或者在第一次出现' - '之后.如果在第一部分中未找到"-o"或"--options"选项,则第二部分的第一个参数将用作短选项字符串.
由于-r
命令行选项不使用其他参数,因此some_directory
是"第一个非选项参数的非选项参数".因此,正如在getopt(1)
手册页中清楚地说明的那样,跟随它的所有后续命令行参数(即-P 80 ...
)都被假定为非选项(和非选项参数).
因此,实际上,这就是getopt(1)
看到示例与选项的结尾以及由灰色的后续文本bing划分的参数的开头的情况:
scp -P80 -r some_directory -P 80 ...
这与scp
行为无关,而与POSIX标准应用程序如何使用getopt(3)
C函数集解析命令行选项有关.
有关命令行排序和处理的更多详细信息,请阅读getopt(1)
联机帮助页:
man 1 getopt
Run Code Online (Sandbox Code Playgroud)
Goo*_*han 62
一个额外的提示.在scp命令之后放置'-P'选项,无论你正在进入的机器是否是第二个(也就是目的地).例:
scp -P 2222 /absolute_path/source-folder/some-file user@example.com:/absolute_path/destination-folder
Run Code Online (Sandbox Code Playgroud)
Mik*_*ike 41
你知道什么比凉爽-P
?没有
如果您多次使用此服务器,请使用以下~/.ssh/config
条目设置/创建文件:
Host www.myserver.com
Port 80
Run Code Online (Sandbox Code Playgroud)
要么
Host myserver myserver80 short any.name.u.want yes_anything well-within-reason
HostName www.myserver.com
Port 80
User username
Run Code Online (Sandbox Code Playgroud)
然后你可以使用:
scp username@www.myserver.com:/root/file.txt .
要么
scp short:/root/file.txt .
您可以在"主机"行使用ssh,scp,rsync,git等更多内容
您可以在配置文件中使用许多配置选项,请参阅:
man ssh_config
Mar*_*lea 28
我正在使用不同的端口然后标准并在文件之间复制文件,如下所示:
scp -P 1234 user@[ip address or host name]:/var/www/mywebsite/dumps/* /var/www/myNewPathOnCurrentLocalMachine
Run Code Online (Sandbox Code Playgroud)
这仅适用于偶尔使用,如果它根据计划重复,您应该使用rsync和cron job来执行此操作.
可以使用 scp 协议路径指定端口:scp://[user@]host[:port][/path]
来自 man scp:
源和目标可以指定为本地路径名、具有可选路径(格式为 [user@]host:[path])的远程主机或格式为 scp://[user@]host[:port] 的 URI [/小路]。可以使用绝对或相对路径名明确本地文件名,以避免 scp 将包含“:”的文件名视为主机说明符。
例子:
scp local/filename scp://user@acme.com:22222/path/to/filename
scp scp://userA@foo.com:22222/path/to/filename scp://userB@bar.com:33333/path/to/filename
Run Code Online (Sandbox Code Playgroud)
/
请注意,如果您的路径来自根目录,则路径中需要有两个s。例如,
scp local/filename scp://user@acme.com:22222//root/path/to/filename
Run Code Online (Sandbox Code Playgroud)
这可以通过-P
交换机指定端口来实现:
scp -i ~/keys/yourkey -P2222 file ubuntu@host:/directory/
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
为了在scp命令上使用另一个端口,请使用大写字母P
scp -P port-number source-file/directory user@domain:/destination
Run Code Online (Sandbox Code Playgroud)
亚里
scp -P 22 -r DIR huezo@192.168.1.100:/home/huezo
scp -P PORT -r DIR USER@IP:/DIR
Run Code Online (Sandbox Code Playgroud)