配置公网的服务器
修改ssh配置文件
vi /etc/ssh/sshd_config
#连接相关配置
GatewayPorts yes # 是否允许远程主机连接本地的转发端口
TcpKeepAlive yes # 是否保持连接
ClientAliveInterval 30 # 心跳发送间隔
ClientAliveCountMax 5 # 心跳发送最大失败次数
配置内网的服务器
1、配置免密登录公网的服务器
用ssh-keygen生成密钥
ssh-keygen
# 这里填写的路径是最终生成密钥的路径,一般用括号给出的
Enter file in which to save the key (/root/.ssh/id_rsa):
# 一般为空,直接回车即可
Enter passphrase (empty for no passphrase):
same passphrase again:
用ssh-copy-id将公钥复制到远程机器中
# 路径填写上面生成密钥的路径
ssh-copy-id -i ./root/ssh/id_rsa.pub 用户名@公网机子ip
测试是否可以免密登录
ssh 用户名@公网机子ip
2、安装autossh
yum -y install autossh
- 如果提示没有可用包,则下载源码编译安装:
sudo yum install wget gcc make wget http://www.harding.motd.ca/autossh/autossh-1.4e.tgz tar -xf autossh-1.4e.tgz cd autossh-1.4e ./configure make sudo make install
3、配置公网服务器远程代理
# 用公网机器(比如:123.123.123.123)的80端口代理本地的8080端口
autossh -M 8888 -fCNR 80:localhost:8080 root@123.123.123.123
- -M:这个参数指定一个本地端口,用该端口来监视跳板机是否正常,否则重连
- 注意:如果要通过 autossh 指定多个映射,那么 -M 参数要不同,否则因为本地端口冲突无法生效
- -f:后台执行ssh指令
- -C:允许压缩数据
- -N:不执行远程指令
- -R:将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
- 注意(拿这个例子来说):还要开放公网服务器的80端口、内网服务器的8080端口。
4、测试
拿本例来说,访问公网服务器的80端口,即可反向代理到内网机器的8080端口