我正在尝试将文件从 10.10.10.99:/home/shantanu/ 复制到本地主机。唯一的问题是我需要通过 10.10.10.98 建立隧道连接,但这样行不通……
ssh [email protected] "ssh [email protected] cp /home/shantanu/test.txt . "
线程“通过多跳的 ssh 隧道”太令人困惑了。
https://superuser.com/questions/96489/ssh-tunnel-via-multiple-hops
答案1
不要使用“cp”在启用 SSH 的主机之间复制文件,请使用 scp。类似这样的命令应该可以满足您目前的需求:
ssh -f [email protected] -L 41111:10.10.10.99:22 -N
scp -P 41111 shantanu@localhost:/home/shantanu/test.txt .
需要注意的是,第一个命令会创建一个隧道(仅可从本地主机访问,但仍可访问),您可能希望在传输文件后关闭该隧道。或者让它保持打开状态,这不会带来巨大的安全风险,因为您仍需要对第二台主机进行身份验证才能使用它。
答案2
只需将本地文件通过 SSH 管道链传输到其最终目的地即可:
ssh [email protected] "ssh [email protected] 'cat >test.txt'" </home/shantanu/test.txt
唯一棘手的部分可能是在目标机器上执行 shell 重定向所需的双引号。
答案3
(与此没有直接关系但是...)您还可以创建反向 SSH 隧道。
在远程服务器上:
ssh -fN -R 7000:localhost:22 username@yourMachine-ipaddress
现在从你的机器向你自己的机器的 7000 端口发起 ssh 连接请求:
ssh username@localhost -p 7000