远程linux服务器不给mysql外网访问权限的情况,通过ssh访问,并映射到windows本地.

我百度了一圈,没有找到winddows直接映射的方案.只有linux映射Linux.

 

不过win10有个内置linux子系统,通过这个映射

 

linux服务器

 

无需设置,只要它本地能访问mysql即可.

 

 

 

 

 

win10

 

ssh是密码登陆的

如果linux服务器ssh是用户密码登陆,直接一条指令解决.

ssh -fNg -L 3307:127.0.0.1:3306 myuser@remotehost.com

 

这样通过  127.0.0.1 3307端口访问linux服务器的mysql,

mysql的用户密码也是远程的.

 

 

ssh是密钥登陆的

 

这个密钥文件登陆有点麻烦

 

linux子系统开始一直连接不上.

提示key文件权限太高. 但是用chmod命令无法降低权限.

后面再贴吧前辈指点下

 

1, 将key文件访问 ~/.ssh/ 目录

2,chmod 400  key文件

3,试试

yake@yake-pc:~/.ssh$ ssh -i ssh.txt root@rcon.getce.cn
Last login: Sun Jul 12 17:55:49 2020 from 182.111.165.24

可以登陆了

 

 

映射mysql

 

在linux子系统输入

ssh -i ~/.ssh/ssh.txt -fNg -L 3307:127.0.0.1:3306 root@www.getce.cn

 

注意这条命令输入完直接结束.没有提示.

但是你本地mysql工具连接你就会发现可以连接了.

 

安全性

 

前面是用的root用户,这是不安全的.

 

远程新建一个用户

useradd mysql_nologin

 

远程切换用户

su -l mysql_nologin

 

远程新建文件夹

mkdir ~/.ssh

chmod 700 ~/.ssh

注意权限非常重要,只能700.

本地新建证书

步骤省略

用ssh-keygen生成,实际上你服务器上生成也可以.

拷贝公钥.

 

远程新建登陆证书授权文件

vi ~/.ssh/authorized_keys   #将公钥粘贴进去,并保存

chmod 600 ~/.ssh/authorized_keys

 

注意权限非常重要,只能600.

 

本地试试证书登陆.

本步骤省略

 

降低远程用户权限

usermod -s /sbin/nologin mysql_nologin

 

 

 

这样就有了一个低权限用户,而且需要证书登陆.安全性还可以.

 

 

 

 

参考

https://blog.csdn.net/yilukuangpao/article/details/79225295

https://blog.csdn.net/bee100/article/details/83599417

https://www.oschina.net/question/1395553_221348