我正在尝试将文件从远程服务器scp到我的本地计算机。只能访问80端口。
我试过了:
scp -p 80 username@www.myserver.com:/root/file.txt .
但收到此错误:cp: 80: No such file or directory
如何在scp命令中指定端口号?
答案 0 :(得分:1209)
与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 -P80 -r some_directory -P 80 ...
...,穿插选项和参数。 getopt(1)
明确定义参数必须在选项之后,而不是穿插它们:
调用参数getopt可以分为两部分:修改getopt将进行解析的方式的选项(SYNOPSIS中的选项和optstring),以及要解析的参数(SYNOPSIS中的参数) )。第二部分将从 第一个非选项参数,它不是选项参数,或者在第一次出现' - '之后。如果在第一部分中没有找到'-o'或'--options'选项,则第二部分的第一个参数将用作短选项字符串。
由于-r
命令行选项不再使用参数,some_directory
是“第一个非选项参数的非选项参数”。因此,正如getopt(1)
手册页中明确指出的那样,后面跟随它的所有后续命令行参数(即-P 80 ...
)都被假定为非选项(和非选项参数)。
因此,实际上,这就是getopt(1)
看到的示例与选项的结尾以及由后续文本以灰色划分的参数的开头的方式:
scp -P80 -r some_directory -P 80 ...
这与scp
行为无关,而与POSIX标准应用程序如何使用getopt(3)
C函数集解析命令行选项有关。
有关命令行排序和处理的更多详细信息,请阅读getopt(1)
联机帮助页:
man 1 getopt
答案 1 :(得分:54)
另外一个提示。在scp命令之后放置'-P'选项,无论你正在进入的机器是否是第二个(也就是目的地)。例如:
scp -P 2222 /absolute_path/source-folder/some-file user@example.com:/absolute_path/destination-folder
答案 2 :(得分:41)
你知道什么比-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 username@www.myserver.com:/root/file.txt .
或
scp short:/root/file.txt .
您可以在“主机”行使用ssh,scp,rsync,git&更
您可以在配置文件中使用许多配置选项,请参阅:
man ssh_config
答案 3 :(得分:26)
我正在使用不同的端口然后标准化并在文件之间复制文件,如下所示:
scp -P 1234 user@[ip address or host name]:/var/www/mywebsite/dumps/* /var/www/myNewPathOnCurrentLocalMachine
这仅适用于偶尔使用,如果它根据计划重复使用,则应使用rsync和cron job来执行此操作。
答案 4 :(得分:5)
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
希望这有帮助。
答案 5 :(得分:4)
要在scp命令上使用其他端口,请使用大写字母P
scp -P port-number source-file/directory user@domain:/destination
ya ali
答案 6 :(得分:2)
复制文件到主机:
abs
复制的文件:
scp SourceFile remoteuser@remotehost:/directory/TargetFile
从主机复制递归目录:
scp user@host:/directory/SourceFile TargetFile
注意强>:如果主机正在使用比端口22之外的端口,可以用-P选项指定:
scp -r user@host:/directory/SourceFolder TargetFolder
答案 7 :(得分:1)
这可以通过-P
开关指定端口来实现:
scp -i ~/keys/yourkey -P2222 file ubuntu@host:/directory/
答案 8 :(得分:1)
如果需要将本地文件复制到服务器(请指定port)
scp -P 3838 /the/source/file username@server.com:/destination/file
答案 9 :(得分:1)
要使用不同的远程端口将所有目录中的所有文件备份到远程 Synology NAS:
scp -P 10022 -r /media/data/somedata/* user@192.168.1.x:/var/services/homes/user/directory/
答案 10 :(得分:0)
希望这会帮助寻求完美答案的人
将具有已定义端口的服务器中的文件夹或文件复制到另一台服务器或本地计算机上
scp -r -P端口user @ IP地址:/ home / file / pathDirectory。
**Note:** The last . on the command directs it to copy everything in that folder to your directory of preference
答案 11 :(得分:0)
有很多答案,但是您应该能够保持简单。确保您知道SSH正在监听哪个端口,并对其进行定义。这就是我刚才用来复制您的问题的地方。
scp -P 12222 file.7z user@193.168.X.X:/ home / user / Downloads 效果很好。