scp port forwarding的完整解决方案
来源:互联网 发布:立体匹配算法不是全局 编辑:程序博客网 时间:2024/05/21 20:30
场景:
目标: 利用scp将远程主机SERVER2上的某文件FILE拉至本地主机SERVER1上, 脚本为
#!/bin/bash
scp user2@SERVER2:/PATH_OF_FILE .
限制: 由于安全因素,SERVER2和SERVER1之间不能建立连接。另外有一远程主机SERVER3,即可以连接SERVER1,也能连接SERVER2
解决方案: 考虑使用 ssh port forwarding建立隧道,脚本为
#!/bin/bash
ssh -f -N -L 1234:SERVER2:22 user3@SERVER3
scp -P 1234 user2@localhost:/PATH_OF_FILE .
第二行语句建立一条在背景运行的ssh隧道。-f 表示在后台运行,-N 表示只建立隧道,本句并包括在远程主机执行的命令。剩下的 -L 1234:SERVER2:22 user3@SERVER3 指明隧道的具体参数,意为以SERVER2上的user3作为跳板的一条隧道,隧道的本地端口号为1234,隧道的目的端口号为22。即任何对本地1234号端口进行的tcp连接都相当于是对SERVER2的22号端口的连接。由于scp就是使用22号端口,所以第三行语句就好理解了。
第三行语句指明从本地的第1234号端口使用scp将FILE拉至当前目录。由于第二句已建立隧道,所以实则以SERVER3为代理,将文件拉至本地目录。但由于隧道一直在后台运行,当传输完毕,我们需要将其关闭,这该如何实现呢?
新问题: 如何关闭运行于后台的ssh隧道?
关闭后台运行的隧道的唯一方式是关闭其进程。所以问题分解为
1. 获取进程ID,即PID 。 方法1: PID=$! 方法2: ps aux | grep [1234:S]ERVER2:22 | awk '{ print $2 }'
2. 杀掉进程, 命令: kill -9 $PID
使用方案1,脚本为
#!/bin/bash
ssh -f -N -L 1234:SERVER2:22 user3@SERVER3 & PID=$!
scp -P 1234 user2@localhost:/PATH_OF_FILE .
kill -9 $PID
使用方案2, 脚本为
#!/bin/bash
ssh -f -N -L 1234:SERVER2:22 user3@SERVER3
scp -P 1234 user2@localhost:/PATH_OF_FILE .
PID=$(ps aux | grep [1234:S]ERVER2:22 | awk '{ print $2 }')
kill -9 $PID
方案2已经过测试。方案1未完整测试,有可能得到的PID是该脚本进程而非后台进程的ID,欢迎测试讨论
- scp port forwarding的完整解决方案
- port forwarding
- Port Forwarding & Port Triggering
- Port Forwarding & Port Triggering
- NAT&Port Forwarding&Port Triggering
- SSH Port Forwarding
- What is Port Forwarding?
- ssh port forwarding
- What is Port-Forwarding ?
- iptables remote port forwarding
- Port-forwarding 和 HttpServletRequest 和一个疏忽引发的bug
- 如何设置OpenShift的端口转发(Port Forwarding)
- ssh端口转发(port forwarding)
- Configure port forwarding with NAT
- Netsh Port Forwarding in Windows
- Tools - rinetd - port forwarding/redirection
- 使用port forwarding 连接 TimesTen
- NAT技术中的Port Forwarding & Port Triggering
- C学习路线
- url中文乱码的处理
- Codeforces Round #159 (Div. 2)
- 学习学习再学习(转)
- Win8 无线AP可能会遇到的变态问题
- scp port forwarding的完整解决方案
- 两行代码,让matlab画散点图
- !!!Chapter 16 Templates and Generic Programming
- 星巴克不使用两阶段提交
- leetcode21: Integer to Roman
- leetcode 21: Length of Last Word
- 窥探小说类网站seo
- 对生物毒性的理解
- leetcode22: longest common prefix