[转]使用 ssh -R 穿透局域网访问内部服务器主机,反向代理 无人值守化

原文: https://www.cnblogs.com/phpdragon/p/5314650.html

使用 ssh -R 穿透局域网访问内部服务器主机,反向代理 无人值守化

一、搭建SSH方向代理

准备:

局域网主机(虚拟主机): 192.168.6.233   CentOS 6.7

阿里云服务器:120.25.68.60   CentOS 6.7

1. 阿里云服务器120.25.68.60上需要修改sshd_config配置文件:

[[email protected] ~]# vi /etc/ssh/sshd_config
GatewayPorts yes
[[email protected] ~]# service sshd reload
Reloading sshd: [  OK  ]

2. 通过局域网虚拟机192.168.6.233 连接到120.25.68.60开启反向端口代理,输入阿里云服务器密码.

[email protected]:~ # ssh -CqTfnN -R 0.0.0.0:7233:192.168.6.233:22 [email protected]
[email protected]‘s password: 

3.在阿里云服务器120.25.68.60上可以看到这个监听.

[[email protected] ~]# netstat -anp | grep 7233
tcp        0      0 0.0.0.0:7233                0.0.0.0:*                   LISTEN      2392/sshd
tcp        0      0 :::7233                     :::*                        LISTEN      2392/sshd   

4.现在到其他客户机上连接阿里云服务器120.25.68.60的7233端口,输入局域网虚拟主机192.168.6.233的主机密码.

[[email protected] ~]# ssh -p 7233 [email protected]
[email protected]‘s password:
Last login: Thu Mar 24 11:01:15 2016 from 192.168.6.233

[[email protected]_233 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:50:56:34:8B:4D
          inet addr:192.168.6.233  Bcast:192.168.6.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fe34:8b4d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1321125 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1232406 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:450626290 (429.7 MiB)  TX bytes:273698355 (261.0 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:524375 errors:0 dropped:0 overruns:0 frame:0
          TX packets:524375 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:43705227 (41.6 MiB)  TX bytes:43705227 (41.6 MiB)

到这里反向代理的测试完成,功能OK.

二、反向代理无人值守化

1.设置局域网主机192.168.6.233免密码登录到阿里云120.25.68.60. 参见 http://www.cnblogs.com/phpdragon/p/4521116.html

ssh-keygen -t rsa -P ‘‘
scp ~/.ssh/id_rsa.pub [email protected]:/tmp/id_rsa.pub_233
ssh -l root 120.25.68.60 cat /tmp/id_rsa.pub_233 >> ~/.ssh/authorized_keys

2.阿里云服务器编写ssh代理关闭脚本 kill_ssh_agent.sh

#!/bin/sh

if [ -n "$1" ] && [ "$1" -gt "0" ];then
    PID=$(netstat -anp | grep $1 | awk ‘/sshd/ && !/awk/{print $7}‘)
    PID=${PID%%/*}

    if [ -n "${PID}" ];then
        kill -9 $PID && exit 0
    fi
fi

exit 1

3.客户端编写代理链接守护脚本 ssh_agent_deamon.sh

#########################################################################
# File Name: ssh_agent_deamon.sh
# Author: phpdragon
# mail: [email protected]
# Created Time: Thu 24 Mar 2016 01:55:49 PM CST
#########################################################################
#!/bin/bash
ROMOTE_USERNAME=root
ROMOTE_SERVER_IP="120.25.68.60"
ROMOTE_PORT=7233
###[ /sbin/ifconfig|sed -n ‘/inet addr/s/^[^:]*:\([0-9.]\{7,15\}\) .*/\1/p‘|grep -v 127.0.0.1 ]
LOCALHOST_IP=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk ‘{print $2}‘|tr -d "addr:"`
LOCALHOST_PORT=22

while true ;
do
    PID=$(ssh -l root ${ROMOTE_SERVER_IP}  netstat -anp | grep ${ROMOTE_PORT} | awk ‘/sshd/ && !/awk/{print $7}‘)
    PID=${PID%%/*}
    if [ -n "$PID" ] && [ "$PID" -gt "0" ];then
        sleep 30s
    else
        /usr/bin/ssh -l root ${ROMOTE_SERVER_IP} /bin/sh /data/kill_ssh_agent.sh ${ROMOTE_PORT}
        /usr/bin/ssh -CqTfnN -R 0.0.0.0:${ROMOTE_PORT}:${LOCALHOST_IP}:${LOCALHOST_PORT} ${ROMOTE_USERNAME}@${ROMOTE_SERVER_IP}
    fi
done

exit 0

4.设置ssh连接为长连接

vi /etc/ssh/sshd_config

#每1分钟发送一个心跳信号给客户端
ClientAliveInterval 60
#最大超时次数,客户端不响应则关闭连接
ClientAliveCountMax 3

5.设置为随机启动

vi /etc/rc.local

/bin/sh /data/ssh_agent_deamon.sh &

到此设置完毕。

PS:

http://blog.163.com/[email protected]/blog/static/163877040201451464251856

http://www.cnblogs.com/wangkangluo1/archive/2011/06/29/2093727.html

http://www.cnblogs.com/peida/archive/2013/03/08/2949194.html

http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html

分类: 读书笔记IT,运维

原文地址:https://www.cnblogs.com/oxspirt/p/10260156.html

时间: 2024-10-09 13:37:55

[转]使用 ssh -R 穿透局域网访问内部服务器主机,反向代理 无人值守化的相关文章

使用 ssh -R 穿透局域网访问内部服务器主机,反向代理 无人值守化

使用 ssh -R 穿透局域网访问内部服务器主机,反向代理 无人值守化 http://www.cnblogs.com/phpdragon/p/5314650.html 一.搭建SSH方向代理 准备: 局域网主机(虚拟主机): 192.168.6.233   CentOS 6.7 阿里云服务器:120.25.68.60   CentOS 6.7 1. 阿里云服务器120.25.68.60上需要修改sshd_config配置文件: [[email protected] ~]# vi /etc/ssh

利用ssh反向代理以及autossh实现从外网连接内网服务器

1. 描述一下目前的机器状况,梳理梳理: 机器 IP 用户名 备注 A 10.21.32.106 gdut728 目标服务器,处于内网 B 123.123.123.123 root 外网服务器,相当于桥梁的作用 PS:123.123.123.123只是我随意起的,大家请别攻击别人的服务器啊啊啊 2. 解决方法: 通俗地说:就是在机器A上做到B机器的反向代理:然后在B机器上做正向的代理实现本地端口的转发 2.1 实现前的准备 每台都要安装ssh的客户端. 在这里我使用的是centos7,都自带ss

局域网如何使用公网地址访问内部服务

局域网如何使用公网地址访问内部服务,布布扣,bubuko.com

外网PC(win7系统)通过SSH连接其它局域网PC(Linux系统)的方法探索

为方便叙述,将外网PC(win7系统)简称为主机W,将PC(Linux系统)简称为主机L. 两个主机的基本网络环境描述如下. a. 主机L是家庭PC,通过路由器接入到网络运营商的网关,进而连接互联网.路由器无固定外网IP,路由器外网IP变化时,需在主机W处更改远程连接目标的IP地址. b. 主机W连接在公司局域网,可通过公司网关连接到互联网. 以下为实现过程的描述. 1. 配置主机L (1)通过浏览器访问路由器网络设置管理页面.笔者使用的路由器型号为iPtime N604A,在浏览器地址栏输入1

使用ssh从外网访问内网

一.场景如下: 各个角色的对应关系如下: 角色 描述 APP 个人笔记本,属于内网IP sshd server 公网 VPS ( 映射端口: port 2222 ),拥有公网IP ssh client 内网机器,属于另一个内网IP APPSRV 与 内网 ssh client 是同一台机器 ( 目的端口: hostport 22 ) 两个帐号:admin/password为"内网机器"ssh的登录帐号密码,VPS-user/password为"公网VPS"ssh的登

XP局域网访问无权限、不能互相访问问题的完整解决方案

XP局域网访问无权限问题的完整解决方案: 1:用管理员账户登录系统 2:在"开始"-- "运行"里输入 GPEDIT.MSC 目的是打开组策略选项 3:依次展开"WINDOWS设置"-"本地策略"-"用户指派权利" 在窗口右边栏里找到"拒绝从网络访问这能计算机"后,双击打开, 把里面的GUEST帐户删除 4:依次展开"WINDOWS设置"-"本地策略&quo

linux 外网ssh通过端口映射访问内网linxu

1,外网ssh通过端口映射访问内网linxu服务器

android通过无线局域网访问pc机上tomcat服务器的资源

============问题描述============ 最近在做一个android的项目,到了网络部分了,遇到的问题是怎样通过android的wifi,利用无线局域网访问pc机上tomcat搭载的服务器上的资源.项目是一个 基于移动平台的应用,需要从服务器上读取资源,自己在网上也找了很多相关了帖子看了,基本上说的方法差不多,都没有说到重点,都是复制粘贴的转来转去,希望有做过这样的成功案例的高手们教教我,给我详细的步骤来让我完成,谢谢!!! ============解决方案1==========

apache本地和局域网访问设置

apache本地和局域网访问设置 最近做项目需要同事ajax发项目给我,因为是测试环境,所以需要能访问我的服务器.我服务器直接用的wampserver.因为没有接触过,所以百度了一下,都是没有成功,后来看了手册.理解了原理,自己就调试出来了.现在分享一下.(估计知识比较老了,毕竟现在用的nginx比较多.公司用的还是iis服务器 - -!) 外网访问设置 如果没有开启vhosts模块的话,一般的访问目录指向的是你的 www目录.httpd.conf里面可以看到 你会看到 类似这样的一段 <Dir