【Mac】Mac通过反向代理连接内网(教育网)服务器 + 免密登陆

一、申请服务器作为反向代理

这里申请的是阿里云服务器(其他云服务器均可)

二、配置阿里云反向代理服务器 + 内网服务器

1、登陆阿里云服务器配置ssh

  • 打开 /etc/ssh/sshd_config, 将GatewayPorts设为yes
  • 执行 sudo service sshd restart 重启sshd服务

2、配置阿里云服务器的防火墙

2.1 登录阿里云服务器的控制台, 将要映射的外网端口(如4501)加入安全组

2.2 设置阿里云服务器防火墙

首先开放要映射的外网端口

# 检查端口是否已开放 
sudo firewall-cmd --query-port=4501/tcp 

# 开放端口 
sudo firewall-cmd --permanent --add-port=4501/tcp 

# 在上一条命令之后,即便开放了,还是需要重新加载才会生效 
sudo firewall-cmd --reload 

# 列出防火墙已经放行的端口 
sudo firewall-cmd --list-ports

3、配置内网服务器实现免密登录

在做完映射之后, 为了保证连接不会中断, 两台服务器间需要经常相互通信, 所以免密登录是必须的

# 在内网服务器上生成公钥私钥对
# 需要免密登陆,则在生成公钥私钥对时不输入任何密码串,直接回车,如下图所示
ssh-keygen -t rsa

# 将内网服务器的公钥复制到外网服务器 
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_ip

# 上述两步可以简化为在~/.ssh/目录下执行
ssh-keygen
ssh-copy-id user@remote-ip

4、配置端口映射

登陆内网服务器配置两台服务器的端口映射, 映射后用户便通过上面设置的 “外网服务器IP(阿里云服务器) + 指定端口” 来访问访问内网服务器。

需要安装autossh,以防止ssh断掉,autossh更稳定

# 安装autossh
centos: sudo yum install autossh 
ubuntu: sudo apt-get install autossh 

# autossh -M [内网端口] -fCNR [外网IP或省略]:[外网端口]:[内网IP]:[内网端口] [外网用户]@[外网IP] 
autossh -M 2223 -fCNR 4501:192.168.3.65:22 root@182.xx.xx.xxx

登陆阿里云服务器查看端口是否可监听

netstat -anp | grep 4501

如果上述过程之后无法得到端口映射, 可更改autossh后面的内网端口,再执行一次命令。

参数说明

-M 指定一个内网端口来监视ssh连接状态,连接中断时自动重连 
-f 后台执行ssh指令 
-C 允许压缩数据 
-N 不执行远程指令 
-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口 
-L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口

5、配置内网服务器设置开机自启

# autossh -M [内网端口] -fCNR [外网IP或省略]:[外网端口]:[内网IP]:[内网端口] [外网用户]@[外网IP] 
autossh -M 2223 -fCNR 4501:192.168.3.65:22 root@182.xx.xx.xxx
  • 将上面的命令写入文件 /etc/rc.d/rc.local
  • 执行 sudo chmod +x /etc/rc.d/rc.local

三、将个人PC切换为外网后连接服务器

1、Windows使用xshell工具连接

不需要再添加代理,直接创建新的SSH连接

协议:SSH

主机:阿里云服务器的IP

端口:阿里云服务器映射的端口(4501)

2、Mac配置ssh的config文件连接

# 配置Mac本地ssh的~/.ssh/config文件,添加如下内容
## 阿里云服务器的连接配置(已配置免密)
Host aliyun
Hostname 182.xx.xxx.xxx #Aliyun-server IP
User root
Port 22

## 内网服务器1的连接配置
Host proxy65
Hostname 182.xx.xxx.xxx #Aliyun-server IP
User root
Port 4501

## 内网服务器2的连接配置
Host proxy66
Hostname 182.xx.xxx.xxx #Aliyun-server IP
User root
Port 4502


# 配置服务器的免密登陆
## 先在内网服务器~/.ssh/目录下上生成公钥私钥对(生成公钥私钥对时不输入任何密码串,直接回车)
ssh-keygen
## 将公钥配置到外网服务器的~/.ssh/authorized_keys文件中,直接使用如下命令
ssh-copy-id user@remote-ip
## 因为我们已配置了ssh的config文件,因此可以直接ssh-copy-id + [host别名]
ssh-copy-id aliyun
ssh-copy-id proxy65
ssh-copy-id proxy66


# 连接
ssh aliyun
ssh proxy65
ssh proxy66

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值