基于阿里云的SSH反向代理环境搭建

SSH服务器配置

SSH服务器是部署在阿里云,操作系统Ubuntu 18.04

  1. 打开服务器端的/etc/ssh/sshd_config文件,增加如下配置:
    GatewayPorts yes;打开sshd的网关端口转发功能

  2. 配置sshd和客户端连接的心跳间隔、心跳超时时间

此配置有两个作用:

  • 监测ssh连接状态
    此处ClientAliveInterval为5,表示心跳间隔为5秒
    ClientAliveCountMax为3,表示连续3次,如果心跳都没有回应的话,即15s后,服务器认为连接异常,服务器随即主动关闭ssh会话。
  • 保持ssh连接状态为长连接,因为客户端和服务器之间经过了很多的NAT,所以,需要发送心跳来维持SSH长连接。
  1. 重启sshd
    service ssh restart
  2. 关闭服务器的防火墙,否则服务器不支持端口转发
    Ubuntu:
    ufw disable

CentOS:
systemctl stop firewalld.service (关闭防火墙)
systemctl start firewalld.service (开启防火墙)
systemctl disable firewalld.service (禁止防火墙自启动)
systemctl enable firewalld.service (防火墙随系统开启启动)

  1. 配置阿里云安全组,增加端口转发规则

这里增加的规则放开TCP 50000到60000的端口

SSH设备端配置

SSH客户端是嵌入式linux系统,openssh提供ssh功能。
公司阿里云Linux系统IP地址: 121.199.30.133。

  1. 执行如下命令在SSH服务器端配置反向代理,将本地端口22上的数据转发到公网50000这个端口上。
    ssh -CqTfnN -R 0.0.0.0:50000:127.0.0.1:22 [email protected]
  • -C:压缩传输过程中的所有数据,此选项适用于于低速连接。
  • -q:安静模式,不打印警告信息。
  • -T:禁用伪终端配置。
  • -f:ssh后台运行模式。
  • -n:stdin重定向到/dev/null,适用于后台运行模式。
  • -N:适用于反向代理转发模式下,禁止执行远端发过来的命令。
  • 50000:公网端口
  • 22:本地端口
  • 120.78.194.78:ssh服务器的外网IP地址
  • root表示ssh服务器的用户名,执行提示输入的密码也是root用户的密码。
  1. 设备端执行过反向代理请求之后,可以在服务器端查看SSH连接建立情况,红框标出的是刚建立的SSH反向代理连接。

SSH客户端配置

  1. 打开xshell或其他支持ssh的客户端。执行如下命令
    Linux:
    $ ssh [email protected] -p 50000
    或者
    Windows:
    ssh [email protected] 50000
  • root表示设备的用户名,密码也是设备端该用户的密码
  • 120.78.194.78表示ssh服务器的外网IP
  • 50000表示设备端配置的转发端口
  1. 设备端免密登录服务器
  • 客户端使用ssh-keygen生成rsa加密通信的公钥(id_rsa.pub)、私钥(id_rsa)

  • 通过ssh-copy-id将公钥(id_rsa.pub)拷贝到服务器
    ssh-copy-id [email protected]
    A.A.A.A表示ssh服务器IP地址,root为用户名

  • 自动生成、上传公钥
    生成秘钥:ssh-keygen -f id_rsa -t rsa -N ‘’
    -f 秘钥文件名为id_rsa
    -t 定义加密算法为rsa
    -N 定义认证密码为空字符串
    上传公钥:ssh-copy-id [email protected]
    常用命令

  1. netstat -nalt | grep 22
    查看当前ssh网络连接

    扫描二维码关注公众号,回复: 17039290 查看本文章
  2. lsof -n -i:26741
    查看端口为26741的TCP连接,绑定的是哪个进程。

猜你喜欢

转载自blog.csdn.net/linux_embedded/article/details/128231643