我有一个案例,有 2 个远程主机,每个主机都有一个唯一的端口号,我在使用 SCP 命令时都需要指出。为第一个指示唯一(非 22)端口号没有问题,但我不知道如何为第二个指示它。
这是现在的样子——
scp -P 1234 username@site.com:/path/to/file username2@site2.com:/path/to/directory
我有一个案例,有 2 个远程主机,每个主机都有一个唯一的端口号,我在使用 SCP 命令时都需要指出。为第一个指示唯一(非 22)端口号没有问题,但我不知道如何为第二个指示它。
这是现在的样子——
scp -P 1234 username@site.com:/path/to/file username2@site2.com:/path/to/directory
您在问题中运行 scp 的方式,它只会调用第一台主机上的 scp 程序,告诉它将文件发送到第二台主机。您可以直接调用ssh
以在第一台主机上运行 scp 命令,但是您喜欢它:
ssh -p1234 user1@host1 'scp -P2345 /path/to/file user2@host2:/path/to/directory'
如果第一台主机无法直接连接到第二台主机,您通常会使用 scp 选项-3
通过本地主机将数据从第一台主机发送到第二台主机。如果你处于那个位置,你可以模拟 scp 如何运行这种传输,尽管它有点像 hack:
yes "" | tr '\n' '\0' |
ssh -p1234 user1@host1 'scp -f /path/to/file' |
ssh -p2345 user2@host2 'scp -t /path/to/directory'
这基于SCP 协议的工作方式。第一ssh
行以“远程源”模式在第一台远程主机上运行 scp 以发送源文件。第二ssh
行以“远程接收器”模式在第二台主机上运行 scp 以接收文件并将其写入目录。“远程源”和“远程接收器”分别是scp
在接收或发送文件时通常在远程系统上运行的。
该yes "" | tr '\n' '\0' |
行创建了协议工作所需的 NUL (Ascii 0) 字节流。实例读取这些scp -f
文件,没有它们就不会发送文件。如果您愿意,还有其他方法可以生成 NUL 字节流。
不知道如何使用参数执行此操作,但您可以尝试编辑 ~/.ssh/config
Host test
HostName test.com
Port 22000
User me