Mac使用SSH Control Master休眠后套接字被删需重输密码如何解决
解决Mac休眠后SSH Control Master套接字丢失问题方案
方案1:优化SSH配置实现无缝自动重建(推荐)
修改本地~/.ssh/config配置,添加自动重连相关参数,无需手动操作即可无感恢复连接:
Host * ControlPath ~/.ssh/master-%C ControlMaster auto ControlPersist 16h # 新增保活参数避免网络波动导致连接断开 ServerAliveInterval 60 ServerAliveCountMax 3
其中ControlMaster auto的作用是自动检测现有控制套接字是否可用,不可用时自动创建新的主控连接,不会出现连接失败的情况。
执行chmod 700 ~/.ssh确保目录权限正确,避免套接字创建失败。
方案2:配置SSH密钥认证彻底免密
如果重建连接时不想输入密码,直接配置密钥登录即可:
- 本地生成密钥对:
ssh-keygen -t ed25519,无需额外设置直接全程回车即可 - 将公钥上传到远程服务器:
ssh-copy-id 远程用户名@远程服务器地址
配置完成后,无论控制套接字是否存在,新建SSH连接都不需要输入密码。
方案3:修改套接字存储路径避免被系统清理
如果确认是系统自动删除了~/.ssh下的套接字文件,可以将存储路径切换到MacOS不会主动清理的用户应用支持目录:
- 先创建专属存储目录:
mkdir -p ~/Library/Application\ Support/SSHControlMasters - 修改
ControlPath参数为:ControlPath ~/Library/Application\ Support/SSHControlMasters/master-%C
方案4:休眠钩子保留原有连接(进阶)
如果需要保留休眠前的连接不重建,可以通过sleepwatcher工具监控系统休眠/唤醒事件,编写脚本在休眠前备份控制套接字、唤醒后恢复,实现连接不中断。
内容的提问来源于stack exchange,提问作者Tissot11
相关产品推荐
相关产品推荐

