前言
在进行Java开发时,高度的依赖 Windows 上的开发软件 idea ,那么我们想访问位于服务器上的 redis 怎么办呢?在平时我们想访问位于服务器上的程序,只需要开放它的端口即可,比如我们创建的网站,比如 tomcat 的8080 端口,但 reids 的 6379 端口我们能开放吗?答案是不能,因为 redis 的端口一旦开放,就非常容易被黑客攻击。
那么我们要如何在不开放 redis 端口的情况下,也能在本地主机访问服务器上的 redis 程序呢?方法有两个:
(1).直接让 Java 程序也在 Linux 服务器上运行
我们将 Java 程序打成 jar 包,然后把 jar 包拷贝到 Linux 服务器上运行,此时 Java 程序和 redis 位于同一个主机,就可以很方便的进行访问了。但这要我们每次调试都打 jar 包然后拷贝到 Linux 服务器上运行,非常的麻烦,所以不推荐
(2).配置 ssh 端口转发,把服务器的 redis 端口映射到本地主机
我们可以通过 ssh 将服务器上 redis 的 6397 端口映射到本地主机的 8888 端口,当我们在本地主机构造请求发送给 8888 端口时,ssh 会帮我们把请求转发给服务器的 6379 端口,也就是redis
ssh 协议
ssh 的全称是 Secure Shell ,它是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH 通过在网络中创建安全、加密的连接(也叫做"隧道")来工作。
ssh 协议默认在 22 端口,它的功能非常强大,其中一个很重要的功能就是支持端口转发,相当于可以通过 ssh 的 22 端口来转发其他端口的数据
我们通过简单的配置,让 ssh 明确本地主机上 8888 端口和云服务器 6379 端口之间的映射关系,当我们将请求发送给本地主机上的 8888 端口时,这个请求会由隧道转发给服务器上 ssh 的 22 端口,服务器上的 ssh 服务器程序会将该请求交给 6379 端口,也就是 redis。(ssh 可以帮多个端口转发信息,可以设置多个映射关系)
简单配置
软件:xshell
1.选中会话,右键,点击属性
2.在 ssh 目录下选择隧道
3.点击添加(添加映射关系)
4.设置转换规则(映射关系)
5.点击连接
6.检验连接情况
我们可以查看本地主机的 8888 端口的网络连接情况来判断是否连接成功
java
netstat -ano|findstr 8888
如图代表已经连接成功
当我们把连接的 xshell 窗口关闭以后,连接便中断
连接成功以后,后续我们在 Java 代码中通过 127.0.0.1:8888 便能操作服务器的 redis 了,并且其他的客户端无法访问我们服务器的 redis