环境:
假设本地A节点可以访问B节点10.20.30.40,B节点可以访问C节点192.168.0.123,但从A无法直接访问C。
在A上执行本地端口映射:
将192.168.0.123的22端口,通过10.20.30.40映射到本地的2222端口
ssh -f -N -g -L 2222:192.168.0.123:22 10.20.30.40
参数解释:
-f: 认证后,将当前ssh进程放在后台执行
-N: 只连接、不执行命令
-g: 允许其它机器连接转发端口(即转发端口监听在0.0.0.0,不会监听IPv6地址)
-L [bind_address:]port:host:hostport: 将C节点192.168.0.123的22端口映射到本地A节点的2222端口
10.20.30.40: 中间机器B节点,用于中转A和C之间的数据
访问C节点:
访问本地A节点2222端口就相当于访问C节点22端口,可以执行以下操作:
- ssh登陆
ssh -p 2222 127.0.0.1 - 拷贝文件
scp -P 2222 127.0.0.1:/etc/hosts /tmp/hosts - 使用sftp工具访问A节点的2222端口