基于云服务器的ssh内网穿透的实现

引言

工作中,经常有未完成的工作需要回家继续,或者现场有就地服务器需要访问操作,teamviewer有时非授权版会出现种种问题,本文提供一种方法,通过云跳板机实现ssh访问内网固定ip的机器功能。

环境和配置

现场就地服务器local:

  • 内网ip: 192.168.1.133
  • 主机名:prs3000
  • 操作系统:CentOS Linux release 7.4.1708 (Core)
  • ssh端口: 22, 2222

云服务器cloud:

  • ip: 139.196.177.89
  • 主机名:iZ1125fdjfrZ
  • 操作系统:CentOS release 6.8 (Final)
  • ssh端口: 26150

工作机器user:

  • ip: 不重要
  • 主机名:不重要
  • 操作系统:Mac OS

就地服务器配置

ssh配置

安装openssh,配置ssh端口(默认是22,为了安全考虑,更改为2222)

cd /etc/ssh
ls
gedit sshd_config

如图开放2222端口:
基于云服务器的ssh内网穿透的实现_第1张图片
Protocol 2: 开放2个ssh端口(22和2222)

保存,重启sshd服务

systemctl restart sshd

# centos 7启动service和centos 6有区别,systemctl

验证就地机器local是否ssh开放成功,在局域网内输入:

ssh [email protected] -p 2222

可以登录表示验证成功。

配置local到cloud的免秘登陆

配置key: dms为local机器用户,prs3000为local机器hostname

ssh-keygen -t 'rsa' -b '4096' -C 'dms@prs3000'

拷贝key到cloud机器准许列表

ssh-copy-id [email protected] -p 26150

输入yes一路回车

开启sshd

输入

autossh -p 26150 -M 5678 -fCNR '139.196.177.89:26001:localhost:2222' [email protected] -i /home/dms/.ssh/id_rsa

# 26150 cloud服务器ssh端口
# fCNR 区分大小写
# -f 静默运行。
# -C 数据压缩,网速快不要加。
# -N 不执行任何指令。
# -R 使用远程端口转发。
#5678 cloud服务器监视端口
#26001 指定的cloud服务器访问端口,可以看作把local服务器的2222端口映射到了cloud服务器26001
#localhost 也可以输入local机器ip地址
#[email protected] cloud服务器登陆账户和ip
# /home/dms/.sshd/id_rsa dms是local机器用户

启动后查询服务是否运行

ps aux|grep autossh

如图:
在这里插入图片描述

云服务器配置

修改sshd文件

cloud服务器配置的项目很少,修改ssh配置文件

vi /etc/ssh/sshd_config

如图:
基于云服务器的ssh内网穿透的实现_第2张图片

开放端口

开放5678和26001端口(26001为例)

# 增加26001端口
/sbin/iptables -I INPUT -p tcp --dport 26001 -j ACCEPT

#保存
/etc/init.d/iptables save

#重启
service iptalbes restart

#查看所有端口状态
/etc/init.d/iptables status

#查看单一端口状态
lsof -i tcp:26001

基于云服务器的ssh内网穿透的实现_第3张图片

查看单一端口状态
在这里插入图片描述

登陆

在自己电脑上,打开终端,输入:

ssh [email protected] -p 26001

即可ssh访问local机器
基于云服务器的ssh内网穿透的实现_第4张图片

你可能感兴趣的:(工作总结,ssh,反向穿透,sshd,外网访问)