解决 mac ssh空闲 连接断开问题

  想必大家都知道,用终端 ssh 连接服务器,如果长时间没有操作,会被断开连接。

要用的话又得重新登录,这非常不方便,也影响开发效率。那针对这种情况,有没有解决方法呢?

答案是肯定的。理论上,有两种方案 : 

1.修改服务器sshd_config文件

2.修改使用者CRT的链接每隔多长时间发送一个字符串

修改服务器不太可能,站在管理者的角度思考问题,保持长时间连接,耗资源,谁也不同意让开发这样做。

那就从我们的客户端改起。

Mac 有两种解决方法 

1、下载SecureCRT,这个终端软件可以设置每隔一段时间,发送一串空字符,从而保证了和服务器长时间的连接

在这里吐槽下,SecureCRT Mac版本不好用,有些命令 ,如grep tail 等用了还不如不用, 根本停不下来, Ctrl + c、z

都不管用,不知道有什么命令能终止掉呢?知道的,可以跟我说下哈~~

2、直接修改 /etc/ssh_config文件

将 #ServerAliveCountMax 3

   #ServerAliveInterval 0

的注释去掉,并且 ServerAliveInterval  0 改为  ServerAliveInterval 5

参数备注 : 

1、ServerAliveCountMax 3 :表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开. 正常情况下, 客户端不会不响应. 

2、ServerAliveInterval 0 :指定了服务器端向客户端请求消息的时间间隔, 默认是0, 不发送.

   而ServerAliveInterval 5表示每5秒向服务器发送一次,这样就保持长连接了。

 

转载于:https://www.cnblogs.com/chenmo-xpw/p/4940789.html

<think>好的,我现在要解决问题是如何通过SSH实现MySQL的远程连接配置及操作。首先,我需要理解用户的需求,他们希望从本地通过SSH连接到远程的MySQL数据库,可能用于开发、管理或者数据访问等用途。接下来,我需要结合提供的引用内容,整理出正确的步骤和注意事项。 首先,根据引用[1]和引用[3],SSH隧道技术是实现远程连接的一种安全方法。本地端口转发是常用的方式,通过将远程服务器的MySQL端口映射到本地的某个端口,然后通过本地端口访问远程数据库。例如,用户提到的命令是`ssh -fN -L3307:lws.rds.com:3306 mysql-rds`,这里的3307是本地端口,远程主机的3306端口被转发到这个端口。同时,配置SSH的`ServerAliveInterval`和`ServerAliveCountMax`可以保持连接稳定,防止断开。 然后,引用[2]和引用[4]提到MySQL的配置需要允许远程连接。通常MySQL默认只允许本地连接,所以需要修改配置文件,如`bind-address`设置为`0.0.0.0`或者注释掉,并确保用户权限允许从远程主机登录。此外,防火墙设置也需要调整,允许3306端口通过,这在Ubuntu上可以使用ufw命令。 接下来,我需要将这些步骤系统地整理出来,确保用户能够按照步骤操作。首先配置SSH隧道,然后设置MySQL的远程访问权限,接着处理防火墙,最后测试连接。需要注意的是,每一步都可能出现问题,比如SSH配置错误、MySQL权限未正确设置或者防火墙阻挡,因此需要详细说明每个环节的检查和解决方法。 可能遇到的问题包括SSH连接断开,这时候可以参考引用[1]中的心跳配置,保持连接活跃。另外,用户可能遇到MySQL连接被拒绝,需要检查用户权限和bind-address设置。引用[4]中提到的ufw命令可以帮助管理防火墙规则。 最后,生成相关问题需要考虑用户可能进一步的需求,比如性能优化、安全加固或者与其他工具集成,比如Django如何通过SSH连接MySQL,这在引用[3]中有涉及。同时,用户可能关心不同操作系统下的配置差异,例如Mac和Linux的不同步骤。</think>### 通过SSH实现MySQL远程连接的配置及操作步骤 #### 一、配置SSH隧道(本地端口转发) 1. **创建SSH配置文件**(可选但推荐) 在本地创建或修改`~/.ssh/config`文件,添加以下内容: ```bash Host mysql-rds # 自定义主机别名 HostName 8.123.456.7 # 远程服务器IP或域名 User root # SSH登录用户名 ServerAliveInterval 10 # 每10秒发送心跳包 ServerAliveCountMax 3 # 最多允许3次心跳无响应 ``` 此配置可防止SSH连接空闲断开[^1]。 2. **建立SSH隧道** 执行命令将远程MySQL端口映射到本地: ```bash ssh -fN -L 3307:localhost:3306 mysql-rds ``` - `-fN`:后台运行且不执行远程命令 - `3307`:本地端口 - `localhost:3306`:远程MySQL服务的实际地址[^3] #### 二、配置MySQL允许远程访问 1. **修改MySQL配置文件** 在远程服务器上编辑`/etc/mysql/mysql.conf.d/mysqld.cnf`(路径可能因系统而异): ```bash # 注释或修改bind-address bind-address = 0.0.0.0 ``` 重启MySQL服务:`sudo systemctl restart mysql`[^4]。 2. **创建远程访问用户** 登录MySQL后执行: ```sql CREATE USER 'username'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` `'%'`表示允许所有IP访问[^2]。 #### 三、配置防火墙(如启用) 在远程服务器上开放MySQL端口: ```bash # Ubuntu使用ufw sudo ufw allow 3306/tcp sudo ufw reload ``` #### 四、测试连接 通过本地端口访问远程MySQL: ```bash mysql -u username -p -h 127.0.0.1 -P 3307 ``` 输入密码后若成功登录,则配置完成。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值