首页 文章

指定端口号的scp

提问于
浏览
617

我正在尝试将文件从远程服务器scp到我的本地计算机 . 只有80端口可以访问 .

我试过了:

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

但得到了这个错误: cp: 80: No such file or directory

如何在scp命令中指定端口号?

9 回答

  • 47

    与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 是"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) 联机帮助页:

    man 1 getopt
    
  • 1

    一个额外的提示 . 在scp命令之后放置'-P'选项,无论你正在进入的机器是否是第二个(也就是目的地) . 例:

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

    你知道什么比 -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

  • 0

    我正在使用不同的端口然后标准并在文件之间复制文件,如下所示:

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

    这仅适用于偶尔使用,如果它根据计划重复,您应该使用rsync和cron job来执行此操作 .

  • 1124

    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
    

    希望这可以帮助 .

  • 24

    将文件复制到主机: 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

  • 2

    这可以通过 -P 开关指定端口来实现:

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

    如果需要将本地文件复制到服务器(指定端口)

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

    使用scp命令的另一个端口使用大写P这样

    scp -P port-number source-file/directory user@domain:/destination
    

    你好阿里

相关问题