原文网址:http://www.linuxsir.org/bbs/thread37295.html

内网的朋友苦于没有合法 ip,不能对外提供 internet 服务。解决方案很多,可以通过在网关做端口映射,或其他的辅助软件等。

本文介绍两种比较简单实用的方法,利用 ssh 这个强大的工具。
(以下方法不分平台,都适用)

案例一、
内网主机 A ,开了 http,ftp ,http ,vnc,sshd,socks5,cvs 等服务。无合法 ip 地址。
外网主机 B ,开了 sshd 服务。有合法 ip : 218.xxx.xxx.xxx
我们的目的是让 B 能访问 A 上的各种服务。

步骤:
1、A 知道 B ip 后,先用 ssh client 连上 B,命令如下:
ssh -R 1234:localhost:21 -l root 218.xxx.xxx.xxx

解释:
关于 ssh 的参数,请看 ssh --help
-L listen-port:host:port Forward local port to remote address
-R listen-port:host:port Forward remote port to local address
-L local (本地) -R :remote (远程)

-R 1234:localhost:21 其实做了个“端口转发(forward)"。
意思是主机 A 把本地的 21端口(对应ftp服务)映射为 B 的1234 端口(任意未被占用),同时 A 监听 B 的1234 端口。
在 B 上用 netstat -al | grep 1234 ,你能看到这个监听连接。
任何发送到 B 1234 端口的请求将被传送到 A的 21 端口。

2、B 用 ftp 工具(任意,如gftp) 连本地的 1234 端口,输入 A 的 ftp 用户和密码。
ftp localhost 1234

千万不要觉的奇怪,为什么连的是本地的地址。
举个不恰当例子,相当于 A 在 B 的房间里装了个***(监听端口),那么 B 在房间里说的话就通过***传送到了 A。

3、推广:
如果 B 没占用 21 端口的话,那么可以写成:
A使用: ssh -R 21:localhost:21 -l root 218.xxx.xxx.xxx
B使用: ftp localhost

如果你想使用 A 上的 http 或其他服务,只需改变服务端口:
http服务 :
A使用:ssh -R 1234:localhost:80 -l root 218.xxx.xxx.xxx
B使用:w3m http://localhost:1234

sshd服务:
A使用:ssh -R 1234:localhost:22 -l root 218.xxx.xxx.xxx
B使用:ssh localhost -p 1234

vnc 服务:
A使用:ssh -R 1234:localhost:5901(其他) -l root 218.xxx.xxx.xxx
B使用:vncviewer localhost:1

socks5服务:
A使用:ssh -R 1234:localhost:1080 -l root 218.xxx.xxx.xxx
B 略

cvs 服务:
A使用:ssh -R 1234:localhost:2401 -l root 218.xxx.xxx.xxx
B使用:cvs -d :pserver:root@localhost:1234/home/cvsroot login

这里是否一定要用 root ,涉及到权限问题,具体还得靠大家来总结经验。

案例二、
部分朋友会问了,这样的话只是两台机器的互相通讯,如何让广域网的人都能访问呢?
聪明的你,这时候可能已经有了答案。

内网主机 A ,开了 http,ftp ,http ,vnc,sshd,socks5,cvs等服务。无合法 ip 地址。
外网主机 B ,开了 sshd 服务。有合法 ip : 218.xxx.xxx.xxx
我们的目的是让 internet 上的任何主机能访问 A 上的各种服务。

步骤:
1、首先,B 的sshd 服务端做点小小的设置:
vi /etc/ssh/sshd.config
加入 GatewayPorts yes
然后重启 sshd 服务: /etc /init.d/ssh restart 或 /etc/init.d/sshd restart
(解释:
不加,默认会把监听端口绑定在 localhost 或 lo(127.0.0.1),这样除了 B自身别人是没法访问监听端口的。
加入 GatewayPorts yes,把监听端口绑定到 0.0.0.0 ,这样外部的所有机器都能访问到这个监听端口。
主要是考虑安全性问题,默认情况,只允许本地访问。

这里才是真正的难点,实验了一个晚上,累人呀!给点鼓励吧 :)

2、A 知道 B ip 后,先用 ssh client 连上 B,命令如下:
ssh -R 21:localhost:21 -l root 218.xxx.xxx.xxx
(事先确定 B 的21 端口未被占用)

3、分布在 internet 的其它客户机使用 ftp 工具(任意),连 B 21端口。

ftp 218.xxx.xxx.xxx 21

你会发现自己连上了内网 A 的ftp 服务。

此法和案例一完全一样。

internet --------->> B 21 端口----------->>A 21端口
可以叫做端口转发,或隧道技术,也可以称之为跳板(B),或反* 。呵呵,我瞎说的。。。

可能遇到的问题:

Country:/etc# ssh localhost -p 1234
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
be:5f:d2:45:66:4d:0c:9e:2b:6b:45:65:a7:b2:85:28.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:11
RSA host key for localhost has changed and you have requested strict checking.
Host key verification failed.
Country:/etc# ssh localhost -p 1234
root@localhost's password:
Last login: Mon May 5 02:39:53 2003 from localhost
localhost root #

如上问题,请删除 ~/.ssh/known_hosts,然后再试。

点评:
当然 ssh 还有很多的功能没有用,如先用 ssh 连接 上去后,可以用 scp命令来存取文件,等等。
scp -P xxx user@host:path/file

其它突破网关传送文件的方式也千变万化。

优点是:
可以突破网关,一般情况下,向网管要求在网关上给你做端口映射是不现实的,但用此法你可以让要好的朋友给你做。
使用方案一:比较点对点传送文件比较方便,或使用ssh进行远程控制内网。
ssh本身是加密,保证安全可靠。

缺点也不少:
使用 ssh 加密,势必影响性能,可以用 -C 选项调节压缩率。
如果象方案二使用额外的服务器,数据都要服务器中转(我是这样认为,没跟踪过),势必影响速度。
公网的服务器不好找。

建议:恳请编程高手们根据类似得原理,做个端口转发小工具,效果会更好。

本文,雕虫小计,漏洞无数。旨在提供一种如何解决问题的思路,请大侠不要笑话。也请大家多多支持,共同提高。

特别感谢 :sleeve ,x11 兄,是他们帮助一起实现的。以及 irc.linuxfire.com 中的大伙:)

ssh 使用新法:公网(合法 ip)用户访问内网(私有 ip)服务器(http,ftp,sshd,cvs...),内网的朋友不妨一看。相关推荐

  1. ssh 使用新法:公网(合法 ip)用户访问内网(私有 ip)服务器(http,ftp,sshd,cvs...),

    内网的朋友苦于没有合法 ip,不能对外提供 internet 服务.解决方案很多,可以通过在网关做端口映射,或其他的辅助软件等. 本文介绍两种比较简单实用的方法,利用 ssh 这个强大的工具. (以下 ...

  2. 什么是公有IP地址?什么是私有IP地址?及各自范围介绍

    什么是公有IP地址(公网IP): 组建一个企业级网络,需要去向"电信运营商ISP"申请一个接入Internet的宽带,同时ISP还会给我们分配一个或多个IP地址,这些IP地址可以供 ...

  3. IPv4的私有IP地址和IPv6的私有IP地址 分享

    私有IP地址可以用于私有网络,如个人用户和企业用户.它们是不能用在互联网上的路由.它们可以满足安全性,同时也节省了宝贵的IP地址空间.有了私有 IP地址,需要组建网络的个人用户和企业用户只有在内部使用 ...

  4. localhost可以访问 ip不能访问_为啥用 ip 不可以访问知乎,而百度却可以?

    (给算法爱好者加星标,修炼编程内功) 作者:帅地 (本文来自作者投稿) 我们先来ping知乎的域名,然后可以得到响应的服务器的ip, 之后我们用浏览器来访问这个ip,结果如下 被拒绝访问了. 而用ip ...

  5. 屏蔽ip段访问 html,php屏蔽ip、ip段、省份地区的访客

    实际应用中需要屏蔽一些不友好的访客,可针对这部分访客进行单独IP屏蔽.指定IP段屏蔽.指定地区屏蔽. 代码如下: header("content-Type: text/html; chars ...

  6. 屏蔽ip段访问 html,限制某IP段对网页的访问(ASP)

    ASP脚本限制某IP段对网页的访问 昨天为了做个测试,要对某段IP做限制访问我的网页,于是上网搜了些代码,我做了下调整,分享给大家.我找到了两种方法,上代码: 方法一: 限制IP段访问 functio ...

  7. 阿里云ECS经典网络访问专有网络的私有IP无法访问

    最近公司服务器在更新换代,以前都用的同一账号下同一地区同一网络的ECS服务器 所以直接内网ip直接可以直接调通. 现在迁移到了一台专有网络上 ,经典网络调用专有网络的私有IP就掉不通了.需要在专有网络 ...

  8. mysql设置固定ip地址访问_mysql设置指定ip访问,用户权限相关操作

    基础语法 GRANT priv_type ON database.table TO user[IDENTIFIED BY [PASSWORD] 'password'] [,user [IDENTIFI ...

  9. 有关NAT,私网IP怎么访问公网IP

    这里我有必要先介绍两个头,生活在数据链路层的MAC头和生活在网络层的IP头,以及为啥他们要这样封装数据. MAC头 1.以太网帧的内容很好理解,要找机器,需要目标MAC和源MAC: 2.类型两种一个是 ...

最新文章

  1. python处理excel奖金_60万行的Excel数据,Python轻松处理
  2. python报告 No module named 'main'错误
  3. 何使用BERT模型实现中文的文本分类
  4. AOS编排语言系列教程(三):创建子网Subnet
  5. curve函数 roc_sklearn-roc_curve
  6. [转]HTTP协议之状态码详解
  7. python post请求实例_Python3模拟curl发送post请求操作示例
  8. Pytorch中的强化学习
  9. 详解tensorflow数据读取-tf.train.string_input_producer和tf.train.start_queue_runners
  10. 【脑电信号】基于matlab小波变换睡眠脑电信号监测【含Matlab源码 595期】
  11. Anaconda下载安装Pytorch遇到的几个问题及解决办法
  12. layui中表格绑定数据_使用LAYUI操作数据表格
  13. php百度蜘蛛劫持,技术教程:php伪造ip访问一个网站,可以伪造百度蜘蛛ip
  14. 移动端touch拖动事件和click事件冲突问题解决
  15. cairo填充_cairo graphics 手册(2)
  16. 不要急,没有一朵花,从一开始就是花,也不要嚣张,没有一朵花,
  17. 浅谈你们根本不懂的区块链游戏
  18. 用HTML写一首诗并配上图片,需要满足诗的格式
  19. 内外网通过公网IP访问DMZ主机
  20. 2017新媒体运营升职加薪指南:从内容到数据,如何走好新媒体的进阶之路?

热门文章

  1. react项目Menu菜单栏、iconfont图标引用
  2. UWB的三种算法详解
  3. ORA-01654错误:表空间满了,插入失败
  4. Edge兼容IE,Edge关闭弹窗阻止
  5. 如何快速的登陆github
  6. github项目首页播放小视频啦!
  7. Latex调整表格行距
  8. 人工智能助力危化品企业生产安全
  9. 微软捕获中国黑客刘蝶雨的故事
  10. windows PHP 5 版本的下载