问题描述
之前用的colocrossing的服务器,装上了宝塔面板,其他功能都一切正常,但是发现在使用宝塔终端的时候报了下面的错误
未知错误: Traceback (most recent call last):
File "/www/server/panel/class/ssh_terminal.py", line 179, in connect
self._tp.start_client()
File "/www/server/panel/pyenv/lib/python3.7/site-packages/paramiko/transport.py", line 660, in start_client
raise e
File "/www/server/panel/pyenv/lib/python3.7/site-packages/paramiko/transport.py", line 2083, in run
self._handler_table[ptype](self, m)
File "/www/server/panel/pyenv/lib/python3.7/site-packages/paramiko/transport.py", line 2198, in _negotiate_keys
self._parse_kex_init(m)
File "/www/server/panel/pyenv/lib/python3.7/site-packages/paramiko/transport.py", line 2378, in _parse_kex_init
"Incompatible ssh peer (no acceptable host key)"
paramiko.ssh_exception.SSHException: Incompatible ssh peer (no acceptable host key)
报错的截图如下,无法正常使用宝塔面板的终端,但是使用别的ssh是可以正常使用的
原因分析
通过查看这个报错的代码,可以看到是/www/server/panel/class/ssh_terminal.py
这个python文件抛出的问题,原因是Incompatible ssh peer (no acceptable host key)
即客户端和服务器之间存在 SSH 主机密钥不兼容的问题。我现在用的这个机器是colocrossing的镜像,其中的ssh是他们的配置,他们的ssh配置貌似与宝塔的终端连接有点不兼容
因为我们不方便修改宝塔的面板的代码,那么解决思路就只有一个,就是让服务器的ssh密钥能够与宝塔兼容(我们无法修改宝塔的代码)
解决方案
我选择重新生成一个密钥,相应的Ubuntu的命令如下
sudo ssh-keygen -A
然后,执行下面的代码重启ssh服务
sudo systemctl restart sshd
问题解决,刷新下宝塔面板的网页,可以发现可以正常连接上ssh了