我有一个例子,有两个远程主机,每个主机都有一个唯一的端口号,在使用SCP命令时,我都需要指出这两个端口号。为第一个指定唯一的(非22)端口号没有问题,但我不知道如何为第二个指定端口号。
这是它现在的样子-
scp -P 1234 username@site.com:/path/to/file username2@site2.com:/path/to/directory发布于 2015-05-20 01:10:10
按照您在问题中运行scp的方式,它只会调用第一台主机上的scp程序,告诉它将文件发送到第二台主机。您可以直接调用ssh在第一台主机上运行scp命令:
ssh -p1234 user1@host1 'scp -P2345 /path/to/file user2@host2:/path/to/directory'如果第一台主机不能直接连接到第二台主机,通常可以使用scp选项-3通过本地主机将数据从第一台主机发送到第二台主机。如果您处于这种位置,您可以模拟scp是如何运行这种传输的,尽管这是一种技巧:
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字节流。
发布于 2015-05-19 17:35:47
不知道如何使用参数完成此操作,但您可以尝试编辑~/.ssh/config
Host test
HostName test.com
Port 22000
User mehttps://stackoverflow.com/questions/30321582
复制相似问题