在使用 FinalShell 远程连接虚拟机 Linux 系统时,如果出现以下错误:

java.net.ConnectException: Connection refused: connect

说明 Linux虚拟机没有正确开启SSH服务网络未打通。下面提供详细的排查与解决步骤。


一、问题原因分析

  1. SSH服务未安装/未启动
    Linux虚拟机默认可能没有安装 openssh-server
    或者安装了但是服务没有运行。

  2. 防火墙阻止了22端口
    Linux防火墙(如 ufwfirewalld)拦截了SSH连接请求。

  3. 虚拟机网络模式不正确
    NAT模式下虚拟机与主机不在同一局域网,FinalShell无法直连。
    需要选择 桥接模式 或者 端口转发

  4. SSH配置文件错误
    /etc/ssh/sshd_config 配置异常,导致连接被拒绝。


二、详细解决步骤

1. 安装SSH服务(通常原因)

在Linux虚拟机中执行以下命令:

sudo apt-get update

sudo apt-get install openssh-server
或
sudo apt-get install openssh-server -y


2. 检查SSH端口是否监听

sudo netstat -tulnp | grep ssh
# 或
sudo ss -tulnp | grep ssh

正常情况应显示 22端口 在监听:

tcp   0   0 0.0.0.0:22   0.0.0.0:*   LISTEN   1234/sshd

3. 检查防火墙设置

如果22端口未放行,执行以下命令:

UFW防火墙:
sudo ufw allow 22
sudo ufw reload
Firewalld防火墙:
sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
sudo firewall-cmd --reload

4. 检查虚拟机网络模式

  • 推荐模式:桥接(Bridge),虚拟机与宿主机在同一网段。

  • NAT模式:需要设置端口转发(如宿主机2222 → 虚拟机22)。

  • Host-only模式:只能宿主机访问虚拟机,不适合远程管理。

查看虚拟机IP:

ip addr

假设虚拟机IP是 192.168.1.100,在FinalShell连接时填入该IP。


5. 修改SSH配置(如仍有问题)

编辑配置文件:

sudo nano /etc/ssh/sshd_config

确保以下配置正确(去掉注释符号 #):

Port 22
PermitRootLogin yes
PasswordAuthentication yes

保存后重启SSH服务:

sudo systemctl restart ssh

6. 使用FinalShell连接

在FinalShell中新建连接:

  • 主机:虚拟机IP(如 192.168.1.100

  • 端口:22

  • 用户名:虚拟机的Linux用户名

  • 密码:对应用户密码

点击连接即可。


三、常见问题排查

  1. 提示 Connection timed out
    → 检查虚拟机IP和网络模式是否正确。

  2. 提示 Authentication failed
    → 检查用户名/密码是否输入正确,或是否关闭了密码登录。

  3. 提示 Connection refused
    → 说明SSH服务没启动,或22端口未监听。


转载吱一声~

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐