目前我正在尝试配置隧道以保持活力。ssh.localhost.run闲置一段时间后。
我做了一些研究,发现了这种类型的~/.ssh/config文件,如下所示:
Host *
ServerAliveInterval 60
ServerAliveCountMax 5
但是过了一段时间(通常是 1 小时)PuTTY 会响应“来自服务器的主机密钥的签名无效”。旧隧道终止,我必须手动创建新隧道,我仍然可以使用旧密钥,但隧道链接(域)不同。
我的问题:
有什么方法可以让这个隧道保持有效(永不过期),或者有什么方法可以解决“来自服务器主机密钥的签名无效”?
这不是空闲到期——响应是由大多数 SSH 客户端和服务器每隔几个小时启动一次以交换新密钥的定期重新握手引起的。该过程与初始连接期间发生的情况非常相似,包括重新验证服务器的“主机密钥”(作为副作用,而不是作为目标),并且显然您的服务器正在错误地进行重新握手。
换句话说,这是您的隧道使用的自定义 SSH 服务器软件的问题。(不过,首先确保您拥有最新版本的 PuTTY(即 0.77),以防它碰巧是客户端错误。)
PuTTY 允许您在“连接 > SSH > Kex”中调整或禁用密钥重新交换参数。默认时间间隔为 60 分钟,默认数据限制为 1 GB 传输 - 每次达到这些限制中的任何一个时,PuTTY 都会开始重新生成密钥。
使用现代密码,您可以安全地增加密钥更新周期(每小时更新密钥适用于古老的 64 位甚至 56 位密码),例如,基于时间的密钥更新可以设置为一周甚至完全禁用,而基于数据的密钥更新也可以设置为类似
1024GB
或禁用。但是,这只会调整客户端发起的重新生成密钥——它不能阻止服务器请求重新生成密钥。
最后,~/.ssh/config 用于 OpenSSH - PuTTY 不会读取它。PuTTY 中存在相同的设置,但必须通过其自己的设置屏幕进行配置。