SSH反向代理
来源:互联网 发布:sftp自定义端口号 编辑:程序博客网 时间:2024/05/04 14:19
应用场景
相信很多同学会遇到这样的场景:公司的办公机器处于内网环境,家里的电脑也处于内网环境,有时公司有急事,人又不便立马赶去公司,这时SSH反向代理就能派上用场。下面介绍一种SSH反向代理解决方案,在Ubuntu14.04 LTS环境中实验成功。
机器情况
期望目标
C机器通过SSH访问B机器。
准备工作
- 在A/B/C机器上装SSH客户端
- 在A/B机器上装SSH服务端,安装步骤
sudo apt-get install openssh-server
- 在B机器上安装autossh,安装步骤
sudo apt-get install autossh
解决方案
利用ssh建立的隧道会超时关闭,而利用autossh,超时之后会自动重新建立SSH隧道。
->1. 建立B机器到A机器的反向代理【在B机器上操作】
autossh -fCNR <port_A1>:localhost:22 user_a@A.A.A.A
<port_A1>
为A机器上的端口,用来与B机器上的22端口绑定。 <port_A1>
只能在A机器上进行本地访问。
->2. 建立A机器上的正向代理【在A机器上操作】
autossh -fCNL '*:<port_A2>:localhost:<port_A1>' localhost
<port_A2>
为本地转发端口,用于和外网通信,并将数据转发到<port_A1>
。
其中*标识接受任意机器的访问。
->3. 通过A机器SSH到B机器【在C机器上操作】
ssh -p <port_A2> user_b@A.A.A.A
开机启动
为了使得B机器重启后,C机器仍然可以访问到B,可以给B机器设置开机启动SSH隧道,在B机器上进行如下操作:
- 生成公私钥对
执行以下命令,一路回车即可,提示输入密码时,不要输入。
su - user_bssh-keygen -t 'rsa'
- 将公钥安装到A机器
su - user_bssh-copy-id -i ~/.ssh/id_rsa user_a@A.A.A.A
- 开机启动脚本
编辑/etc/init.d/autossh_tunnel.sh
,输入以下内容,并添加执行权限
#!/bin/sh# A.A.A.A可以是其他B机器可以ping通的IP,用于验证网络准备好了until ping -nq -c3 A.A.A.A; do # waiting for network sleep 5done/usr/bin/autossh -fCNR <port_A1>:localhost:22 user_a@A.A.A.A -i ~/.ssh/id_rsa
- 添加开机启动
编辑/etc/rc.local
添加以下内容,在exit之前
su - user_b -s /bin/bash /etc/init.d/autossh_tunnel.sh &
autossh_tunnel.sh
脚本中会一直等待网络,为了不影响rc.local
中其他命令的执行,因此在后台执行了该脚本。
SSH 参数解释
-f 后台运行
-C 允许压缩数据
-N 不执行任何命令
-R 将端口绑定到远程服务器,反向代理
-L 将端口绑定到本地客户端,正向代理
0 0
- SSH做反向代理
- SSH 反向代理
- ssh 反向代理举例
- ssh 反向代理
- SSH反向代理
- ssh反向代理
- SSH做反向代理
- ssh反向代理功能
- ssh反向代理
- ssh 反向代理(转贴)
- SSH正向与反向代理
- 利用SSH反向代理树莓派
- ssh内网反向代理TUNNEL
- chrome+myentunnel 利用ssh做反向代理
- 【原创】ssh 反向代理 …
- 正向连接、反向链接 && SSH 正向代理、反向代理(未完待续)
- ssh正向连接、反向连接、做socks代理
- ssh正向连接、反向连接、做socks代理
- Java Servlet完全教程
- 1087. All Roads Lead to Rome
- 常用的DOS命令
- Linux驱动--为Ubuntu系统编写驱动程序入门
- The dependency `第三方SDK` is not used in any concrete target.
- SSH反向代理
- Java8中你可能没听过的10个新特性
- 坑.51nod-1347 旋转字符串
- 正确对待bug
- 文件流再探
- 10.2
- (Leetcode)10.Regular Expression Matching(hard)
- CSS3快速上手之3:边框的圆角
- win10 的这一版改动好大