linux ssh启动失败解决方法
前几天把自己的博客从nas迁移到阿里云上面,配置好域名,使用 termius 连接ssh一切都没有问题,为了图方便使用了1Pane 这个开源的服务器面板,之前用他家的 Halo 和 gitea 感觉挺不错的,这个1Panel确实也不错,里面所有的功能都是容器化的,对docker支持特别好,比那臃肿的 宝塔 好用太多了,配置好容器和反向代理之后还原了网站,用了几天,今天早上手贱点了面板里面的ssh,下午回来的时候发现手机上面的 Juice SSH 连接的时候提示1005错误,我当时一脸懵逼,然后使用了 termius发现连接是正常的,这时候我就纳闷了,为什么会出现这个离谱的情况,后面我仔细想了想,原来termius有缓存,用的是之前的ipv4地址访问的服务器,Juice SSH使用的ipv6访问的,于是我登录1Panel面板中去重新配置了一下ipv6,不配还好,一配置ssh直接就挂了,当时我慌得一批,没了ssh我该怎么控制服务器,于是我去阿里云控制台使用VNC连接进去查看了一下。
systemctl status ssh.service
内容我就不复现了,我怕了,生产环境还是不能乱搞😂,这个时候服务是死的,无论怎么start都起不来,所以说绝对是配置文件写错了,但是自始至终我都没有编辑过文件,怎么可能会错呢?于是使用
sshd -t
这个时候提示ipv6地址不正确,我去配置文件看了一下,配置没问题啊,
ListenAddress 0.0.0.0
ListenAddress ::
把ipv6这个地址删掉sshd服务就启动了,但是我不能没有ipv6啊,于是我去看了一下nas的配置文件
Port 22
AddressFamily any
nas压根就没有配置ipv4和ipv6的地址,最后我把ListenAddress删掉之后问题就解决了。
问题分析
之所以sshd会挂掉是因为阿里云的服务器默认就没有配置ipv6,也就是说没有把AddressFamilly any这一行的注释打开,没打开问题就大了,默认使用的是ipv4地址族,这个时候还不是错误真正发生错误的时候,真正发生错误是在使用1Panel添加绑定ipv4和ipv6的地址,这个按千刀的1Panel竟然没有打开AddressFamilly any这一行注释,这样当你重启sshd服务的时候sshd就会直接挂掉,正确的配置如下。
Port 22
AddressFamily any # 一定要打开这一行
ListenAddress 0.0.0.0
ListenAddress ::
这个AddressFamily是用来指定ip地址族的,如果两个都要使用就设置成any。
评论区