首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在将文件从一台远程服务器复制到另一台远程服务器时,如何在unix命令(SCP)中指示端口号?

在将文件从一台远程服务器复制到另一台远程服务器时,如何在unix命令(SCP)中指示端口号?
EN

Stack Overflow用户
提问于 2015-05-19 17:23:42
回答 2查看 1.5K关注 0票数 0

我有一个例子,有两个远程主机,每个主机都有一个唯一的端口号,在使用SCP命令时,我都需要指出这两个端口号。为第一个指定唯一的(非22)端口号没有问题,但我不知道如何为第二个指定端口号。

这是它现在的样子-

代码语言:javascript
复制
scp -P 1234 username@site.com:/path/to/file username2@site2.com:/path/to/directory
EN

回答 2

Stack Overflow用户

发布于 2015-05-20 01:10:10

按照您在问题中运行scp的方式,它只会调用第一台主机上的scp程序,告诉它将文件发送到第二台主机。您可以直接调用ssh在第一台主机上运行scp命令:

代码语言:javascript
复制
ssh -p1234 user1@host1 'scp -P2345 /path/to/file user2@host2:/path/to/directory'

如果第一台主机不能直接连接到第二台主机,通常可以使用scp选项-3通过本地主机将数据从第一台主机发送到第二台主机。如果您处于这种位置,您可以模拟scp是如何运行这种传输的,尽管这是一种技巧:

代码语言:javascript
复制
yes "" | tr '\n' '\0' |
    ssh -p1234 user1@host1 'scp -f /path/to/file' |
    ssh -p2345 user2@host2 'scp -t /path/to/directory'

这是基于how the SCP protocol works的。第一行ssh在第一台远程主机上以"remote source“模式运行scp,以发送源文件。第二个ssh行在第二个主机上以“远程接收器”模式运行scp,以接收文件并将其写入目录。“远程源”和“远程接收器”分别是scp在接收或发送文件时通常在远程系统上运行的内容。

yes "" | tr '\n' '\0' |行创建NUL (Ascii 0)字节流,协议需要这些字节流才能工作。scp -f实例读取这些内容,如果没有它们,将不会发送文件。如果您愿意,还有其他方法可以生成NUL字节流。

票数 1
EN

Stack Overflow用户

发布于 2015-05-19 17:35:47

不知道如何使用参数完成此操作,但您可以尝试编辑~/.ssh/config

代码语言:javascript
复制
Host test
  HostName test.com
  Port 22000
  User me
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30321582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档