博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ssh反向代理访问内网
阅读量:6208 次
发布时间:2019-06-21

本文共 906 字,大约阅读时间需要 3 分钟。

hot3.png

有以下的使用场景和需求:

电脑A:办公室的一台服务器,处于公司内网中,没有公网ip,可以访问公网;

电脑C:家里的一台电脑,处于家里的内网中,没有公网ip,可以访问公网;

现在希望通过家里的电脑C,用ssh访问公司的电脑A,以实现远程办公。但是,电脑A和C都没有公网ip,不能直接访问。那么,需要

电脑B:有公网ip,能被电脑A和C访问,比如租用的阿里云。

实现原理是使用ssh的反向代理

实现步骤:

  1. 在电脑A上实现反向代理,使电脑A的端口a_port_0(一般是22)暴露给电脑B的端口b_port_0
    ssh -fCNR b_port_0:localhost:a_port_0 usr_b@B.B.B.B
    注意:B.B.B.B是电脑B的公网ip
    如果电脑B是租用的阿里云,由于防火墙,端口b_port_0的选择有限,比如80;
  2. 在电脑C上ssh登录电脑B
    ssh -p b_port_1 usr_b@B.B.B.B
    如果电脑B是租用的阿里云,端口b_port_1只能是22
    登录后,就有了电脑C登录电脑B的ssh窗口
    在此ssh窗口下运行命令,查看电脑A的反向代理
    netstat -tnl | grep 127.0.0.1
    如果电脑A的反向代理成功,应该能看到端口b_port_0的监听
    在此ssh窗口下,再用ssh登录电脑A
    ssh -p b_port_0 usr_a
    usr_a是电脑A的用户名,IP127.0.0.1是一个特定ip,固定的。
    至此,就有了电脑C登录电脑A的ssh窗口
    在此ssh窗口下,就能操作电脑A了
  3. 在电脑A和C之间拷贝文件,可以用scp命令把文件拷贝到电脑B上中转
    比如,新开一个电脑C登录电脑B的ssh窗口,拷贝电脑A的文件到电脑B
    scp -P b_port_0 usr_a:/path_a/file_a /path_b
    注意指定端口的-P是大写的P
  4. 如果使用git,可以在电脑B上建一个中转仓库,在电脑A和C上push和pull电脑B的仓库,来实现电脑A和C的git仓库同步

转载于:https://my.oschina.net/kyle960/blog/1635081

你可能感兴趣的文章
CSS:元素塌陷问题
查看>>
Goalng软件包推荐
查看>>
Redis与Memcached的区别
查看>>
PHP程序员的技术成长规划
查看>>
OSChina 周四乱弹 ——妹子喜欢的是程序员 这是标准……
查看>>
OSChina 周四乱弹 —— 要成立复仇者联盟了,来报名
查看>>
vi的使用
查看>>
sphinx
查看>>
Jackson、JSON-lib、Gson性能对比
查看>>
Kali源库配置和拼音安装
查看>>
近期学习清单
查看>>
UI代码练习-视图的层次关系
查看>>
10个加速Table Views开发的Tips
查看>>
【转】主流PHP框架间的比较(Zend Framework,CakePHP,CodeIgnit...
查看>>
12_04_Linux软件管理之四yum
查看>>
Machine Learning from Start to Finish with Scikit-Learn
查看>>
判断android图片是否硬解码(方法)
查看>>
CentOS安装Nagios网络监视工具
查看>>
Oracle 随机取某一列的值
查看>>
PHP中的逆波兰式应用
查看>>