从外网 SSH 进局域网,反向代理+正向代理解决方案

标签: ssh 反向代理 局域网 | 发表时间:2015-04-29 20:01 | 作者:冰雪殿
出处:http://segmentfault.com/blogs

相信很多同学都会碰到这样一个问题。在实验室有一台机器用于日常工作,当我回家了或者回宿舍之后因为没法进入内网,所以访问不到了。如果这个时候我需要 SSH 进去做一下工作,那么怎么解决这个问题呢?本文将给出一种使用 SSH 的代理功能的解决方案。

问题描述:

机器状况

机器号 IP 用户名 备注
A 192.168.0.A usr_a 目标服务器,在局域网中,可以访问 A
B B.B.B.B usr_b 代理服务器,在外网中,无法访问 A
C - - 可以直接访问 B,无法直接访问 A

目标

从 C 机器使用 SSH 访问 A

解决方案

在 A 机器上做到 B 机器的反向代理;在 B 机器上做正向代理本地端口转发

环境需求

  • 每台机器上都需要 SSH 客户端
  • A、B 两台机器上需要 SSH 服务器端。通常是 openssh-server。

    在 Ubuntu 上安装过程为

        bash    sudo apt-get install openssl-server
    

实施步骤

  1. 建立 A 机器到 B 机器的反向代理【A 机器上操作】

        bash    ssh -fCNR <port_b1>:localhost:22 [email protected]
    

    <port_b1> 为 B 机器上端口,用来与 A 机器上的22端口绑定。

  2. 建立 B 机器上的正向代理,用作本地转发。做这一步是因为绑定后的 端口只支持本地访问【B 机器上操作】

        bash    ssh -fCNL "*:<port_b2>:localhost:<port_b1>' localhost
    

    <port_b2> 为本地转发端口,用以和外网通信,并将数据转发到 <port_b1>,实现可以从其他机器访问。

    其中的 *表示接受来自任意机器的访问。

  3. 现在在 C 机器上可以通过 B 机器 ssh 到 A 机器

        bash    ssh -p <portb2> [email protected]
    

至此方案完成。

附:

SSH 参数解释

  -f 后台运行
-C 允许压缩数据
-N 不执行任何命令
-R 将端口绑定到远程服务器,反向代理
-L 将端口绑定到本地客户端,正向代理

相关 [外网 ssh 局域网] 推荐:

从外网 SSH 进局域网,反向代理+正向代理解决方案

- - SegmentFault 最新的文章
相信很多同学都会碰到这样一个问题. 在实验室有一台机器用于日常工作,当我回家了或者回宿舍之后因为没法进入内网,所以访问不到了. 如果这个时候我需要 SSH 进去做一下工作,那么怎么解决这个问题呢. 本文将给出一种使用 SSH 的代理功能的解决方案. 目标服务器,在局域网中,可以访问 A. 代理服务器,在外网中,无法访问 A.

用啥Ngrok,用SSH解决大局域网反向端口转发问题

- - FreeBuf.COM | 关注黑客与极客
自从家里换了联通光纤后,联通就在我家宽带出口前搭了一个路由器,我家也彻底沦为192.168.1.0/24段的局域网了,带来的问题就是在外网无法访问家里的路由器. 这对于刷了LEDE,有时候需要从外网直接管理使用路由器的我,觉得难受极了. 在这之前,了解过一个ngrok项目,用于将局域网内的某一个地址的端口,映射到公网.

SSH Tunnel扫盲

- Jerry - 老王的技术手册 ( 我的新博客:http://huoding.com )
前些天,由于我不知道如何在Putty里拷贝字符而被朋友们取笑,着实糗了一把. 不过被别人B4的一大好处就是你会知耻而后勇,这阵子通过研读PuTTY 中文教程,估计以后不会再犯同样的错误了,在学习Putty的同时偶然发现自己对SSH Tunnel的了解很匮乏,所以便有了今天这篇笔记. SSH Tunnel有三种,分别是本地Local(ssh -NfL),远程Remote(ssh -NfR),动态Dynamic(ssh -NfD).

SSH那些事儿

- Mao.. - Visual Mao++
不知道读者中知道SSH有多少,我想除了pro们,剩下的都是用VPS. 一般来说,用SSH就是用ssh –D[1]这个动态转发接口,至于做什么用也就不明说了,大家都懂. 熟悉hg的都知道可以从“ssh://”地址克隆repository[2],那剩下的呢. 故事的起因是office desktop在department firewall之内,用laptop的remote desktop(RDP)连接office需要先用PuTTY之类的神器连接department firewall(OpenBSD的哦),然后再用RDP连接desktop[3].

linux配置ssh+rsync

- - CSDN博客推荐文章
sftp    文件共享 类似ftp  ssh  secure file transfer client. scp    文件共享 类似cp. #PermitRootLogin yes    改成no 禁止root直接登录. #Port 22    改变ssh的默认端口号   要打开注释. 登录  ssh  [email protected]  然后输入密码就好了.

注册送 SSH Tunnels 账号

- jason - 细节的力量
来源:http://www.hiwaley.com/2098.html. 赠送 SSH Tunnels 账号,用途请Google “SSH Tunnels“. 长期有效,直到本站倒闭,或者某天墙塌了. SSH的账号和Blog的账号一样,如需修改SSH的密码,直接修改Blog的密码即可. 注册帐号后,需要配置SSH客户端和浏览器,具体方法如下:.

免费VPN & SSH信息

- jason - iGFW
注册即送免费128M流量的PPTP和L2TP,OPENVPN. 注册地址:http://www.jpvpn.net/register. 配置文件下载:http://sharesend.com/gpebc. 以下15组免费帐号,用户名和密码一样. 用户名和密码填写在vegas目录下的Acct.txt文件里.

优秀的Android SSH工具

- 牛牛 - Solidot
Peter Jackson 写道 Secure Shell(SSH)是工作在应用层和传输层之上的网络安全协议,利用128位公钥加密接收和发送的信息. SSH能保证两个主机之间的通信不被中间人拦截. 作为一种安全保护协议,SSH常被用于安全数据通信和远程命令执行. 其它常用用途包括使用SSH文件传输协议或安全复制协议在机器之间建立安全隧道或传输文件.

SSH的登录限制

- - 操作系统 - ITeye博客
从网络来的数据包首先要经过iptables,所以可以在iptables上面加上规则来限制ip的访问. 比如只限制3个外网,1个内网IP连接. 直接在/etc/hosts.deny里面加一行. sshd: ALL EXCEPT xxx.xxx.xxx.xxx(允许的ip或网段). sshd: ALL EXCEPT xxx.xxx.xxx.xxx/255.255.255.0(允许的网段) 就可以了.

DenyHosts防SSH暴力破解

- - 操作系统 - ITeye博客
DenyHosts官方网站为: http://denyhosts.sourceforge.net. 1、首先判断系统安装的sshd是否支持tcp_wrappers(默认都支持). 2、判断默认安装的Python版本. Centos5.5默认已安装了python 2.4.3. 二、已安装Python2.3以上版本的情况.