版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Ontheway0101/article/details/81977114
ssh内网穿透笔记
环境
- 一台拥有公网ip的云服务器
- OS : CentOS 7
- IP : 111.111.111.111 (假设这就是我的公网IP)
- User : root
- 我的办公电脑
- OS : Ubuntu 18.04
- User : zhang
注意事项
- ssh闲置一段时间之后会自动断开
- 云服务器端口需要自行开启
搭建过程
# 将办公电脑的22端口映射到云服务器的1111端口
# 在办公电脑上执行
ssh -fNR 1111:127.0.0.1:22 root@111.111.111.111
# 将云服务器的2222端口收到的信息转发给云服务器的1111端口
# 云服务器上执行
ssh -fCNL *:2222:127.0.0.1:1111 root@111.111.111.111
# 测试是否成功
ssh -p 2222 zhang@111.111.111.111
关于ssh闲置一段时间之后会自动断开这个问题,博主采用的方式是在办公电脑上设置每分钟发送一次数据包来维持ssh连接。
在 /etc/ssh/ssh_config 下添加 ServerAliveInterval 60
ssh 参数详情(本次使用到的)
-f 后台运行
-N 不执行远程命令,只用于端口转发,如果后台执行不添加此参数会报错,错误如下:
Cannot fork into background without a command to execute.
-C 请求压缩所有数据
-R port:host:hostport user@host 非本地起端口映射到一台主机
例如 1111:127.0.0.1:22 [email protected]
将云服务器上的1111端口映射到本地的22端口
-L *:port:host:hostport root@host 本地起端口转发到一台主机
例如 *:2222:127.0.0.1:1111 [email protected]
将云服务器的2222端口转发到本地的1111端口
-p port 指定ssh访问的端口
参考资料:
SSH 使用及-L -R -D简介
man手册
ps : 真是不知道大神们是怎么根据man手册学会的-R与-L的使用方式,我用google翻译把man ssh全篇都翻译了一遍,愣是没找到正确的姿势。