A< - ssh - > B< - ssh - > C,计算机A不能直接用scp将文件复制到C. 我在计算机C中安装了lrzsz。如何在A和C之间传输文件。
答案 0 :(得分:0)
您需要在B
上安装nc
,然后您可以使用B
作为代理,并使用以下代码从A
直接连接到C
ssh -o ProxyCommand "ssh user1@B nc %h %p 2>/dev/null" user2@C
将“user1”和“user2”替换为相应计算机上的登录名。
使用ssh
接受的语法将scp
和user2@C
替换为scp
和scp -o ProxyCommand "ssh user1@B nc %h %p 2>/dev/null" user2@C:file1.txt .
与源文件和目标文件,您很高兴!
例如:
file1.txt
将C
从ssh
上的主目录复制到当前本地目录。
我实际上没有测试上面公开的命令行。对于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,任何未使用的端口都可以使用。