如何在两个linux系统上使用sz命令

时间:2016-03-16 10:11:30

标签: linux ssh

A< - ssh - > B< - ssh - > C,计算机A不能直接用scp将文件复制到C. 我在计算机C中安装了lrzsz。如何在A和C之间传输文件。

2 个答案:

答案 0 :(得分:0)

您需要在B上安装nc,然后您可以使用B作为代理,并使用以下代码从A直接连接到C

ssh -o ProxyCommand "ssh user1@B nc %h %p 2>/dev/null" user2@C

将“user1”和“user2”替换为相应计算机上的登录名。

使用ssh接受的语法将scpuser2@C替换为scpscp -o ProxyCommand "ssh user1@B nc %h %p 2>/dev/null" user2@C:file1.txt . 与源文件和目标文件,您很高兴! 例如:

file1.txt

Cssh上的主目录复制到当前本地目录。

我实际上没有测试上面公开的命令行。对于scp / -i命令,我还在ssh添加了私钥路径,以避免scp~/.ssh/config要求输入密码。

为了让事情变得愉快,您可以在A Host = B User = user1 IdentityFile = ~/.ssh/id_dsa_B Host = C User = user2 IdentityFile = ~/.ssh/id_dsa_C ProxyCommand = ssh user1@B nc %h %p 2>/dev/null 上写下这样的内容:

ssh C
scp C:file.txt .

将“user1”和“user2”上方的示例替换为相应计算机上的实际登录名,将“id_dsa_B”和“id_dsa_C”替换为您用于两台计算机的私钥。我假设您知道如何生成和使用公钥/私钥。

然后你可以简单地使用:

public List<Sheep> findBySlaughteredBy(Slaughter slaughter);

答案 1 :(得分:0)

如果B的ssh服务器允许端口转发,您可以执行,例如

A$ ssh -N -L10022:C:22 B

然后让它继续运行,然后在一个单独的shell中

A$ scp -P 10022 file.txt localhost:

详细了解ssh port fowarding。您不必使用端口10022,任何未使用的端口都可以使用。