先说一个结论:这个问题大概率不是Finalshell坏了,也不是Ubuntu密码真的输错了,而是整套SSH登录链路里某一环没对上。作为常年用VMware跑Ubuntu、又把Finalshell当作主要SSH工具的人,我至少在三个不同环境里遇到过"一直提示输入密码"的诡异情况。密码明明是对的,点确定之后过两秒又弹一次,循环往复,像极了第一次用SSH时手忙脚乱的样子。
这篇文章就把我踩过的坑、排障的思考过程和最终的解决方案一次性讲清楚。不管你是刚装好Ubuntu虚拟机的新手,还是已经折腾了半天没头绪的老鸟,跟着下面的排查顺序走一遍,大概率能解决。
1. 先搞清楚"一直提示输入密码"背后到底发生了什么
1.1 这个报错场景到底是什么
需要先理解一个基本概念:Finalshell连Ubuntu虚拟机,本质上是在和你虚拟机里的SSH服务(sshd)对话。整个连接过程大致是三层:先建立TCP网络连接,再做SSH协议握手,最后进行用户身份认证。身份认证失败,才会出现反复弹密码框的行为。
大部分人对"一直提示输入密码"的第一反应是密码输错了,于是反复输入、反复弹窗,很快心态就崩了。但实际排障的时候你会发现,这个现象可能由三个完全不同的原因引起:一是SSH服务端根本没启用密码登录,二是客户端根本没把"密码验证"作为登录方式,三是用户的密码状态本身不满足登录条件。三种情况的表象一模一样,但解决路径完全不同。
所以我特别建议遇到这个问题时,先不要急着反复输密码,而是按下面的步骤做一次系统性排查。一次到位,比盲试十次更有用。
1.2 为什么Finalshell的表现形式如此迷惑
Finalshell作为一个图形化SSH客户端,它的缺点是会把很多底层信息"包装"起来。比如你用原生命令行工具 ssh 连接时,如果把日志级别调高,终端里会清晰地打印出"Connection closed by remote host""Permission denied, please try again"这类信息,而Finalshell往往只弹一个模糊的密码框或一个笼统的提示。
这就导致排障信息量不足。我实测下来的经验是:在Finalshell上排查了三十分钟没搞明白的事情,回到命令行用 ssh -vvv 看了一眼日志,十秒钟就定位了。所以本文虽然有大量篇幅在讲Finalshell怎么配置,但真正核心的排障技巧反而是"跳出Finalshell,用原生SSH命令做对照测试"。先别急着嫌弃命令行,这才是快速解决问题的钥匙。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 问题一:Ubuntu里SSH服务根本没装或者没起来
2.1 Ubuntu默认确实不装openssh-server
这是绝大多数新手第一次踩坑的根源。Ubuntu的桌面版(Desktop)默认只装了SSH客户端,没有安装SSH服务端。也就是说,你在Ubuntu图形界面里能正常上网、能打开终端,不代表这台机器"开着门"等你远程连接。SSH服务端没有安装时,虚拟机根本没有监听22端口,Finalshell发过去的连接请求会直接失败。
但这里有个迷惑点:有些版本的Ubuntu在提示上不够直观,Finalshell弹的是密码框而不是"连接被拒绝",导致你以为问题出在密码上。其实服务端压根就没给你认证的机会。
判断方法很简单。在Ubuntu的图形界面里打开终端,执行下面的命令:
bash复制systemctl status ssh
如果提示 Unit ssh.service could not be found,那就是没装。如果看到提示是 inactive (dead),说明装了但没启动。如果显示
