SSH 服务配置与 Network error: Connection refused 解决

相关链接:
VMware 虚拟机配置固定 IP

1. Ubuntu 配置 SSH 服务

1.1. 安装 SSH 服务

sudo apt-get update						# 更新系统包
sudo apt-get install openssh-server		# 自动下载并安装OpenSSH服务器
sudo systemctl status ssh				# 检查服务状态是否运行

1.2. 配置 SSH 服务

默认情况下,不做操作。

sudo nano /etc/ssh/sshd_config
sudo systemctl restart ssh				# 重启 ssh 服务
sudo systemctl stop ssh					# 关闭 SSH 服务
sudo systemctl start ssh				# 启动 SSH 服务
sudo systemctl enable ssh				# 如果希望 SSH 服务在每次系统启动时自动启动,可以启用它

SSH 其他拓展知识:

1、启用密码认证,取消如下行的注释符
#PasswordAuthentication yes
2、启用 root 登录功能,取消如下行的注释符
#PermitRootLogin yes
3、启用 SSH 密钥对登录,取消如下行的注释符
#PubkeyAuthentication yes
#AuthorizeKeysFile .ssh/authorized_keys
4、如何在 Linux 中允许用户使用 SSH
#echo "AllowUsers user3" >> /etc/ssh/sshd_config
若有多个用户,用户之间使用空格分隔
5、如何在 Linux 中阻止用户使用 SSH
#echo "DenyUsers user1" >> /etc/ssh/sshd_config
若有多个用户,用户之间使用空格分隔
6、如何在 Linux 中允许组使用 SSH
#echo "AllowGroups 组名称" >> /etc/ssh/sshd_config
若有多个组,组之间使用空格分隔
7、禁止组使用 SSH
#echo "DenyGroups 组名称" >>/etc/ssh/sshd_config

1.3. 允许 SSH 通过防火墙

sudo ufw allow ssh
# 或者
sudo ufw allow 22/tcp

其中 ufw allow 命令用于在 Ubuntu 上配置防火墙规则以允许特定的网络流量通过。如:

sudo ufw allow ssh							# 允许SSH连接
sudo ufw allow http							# 允许HTTP连接
sudo ufw allow https						# 允许HTTPS连接
sudo ufw allow 8080							# 允许特定端口的连接(例如,端口号为8080)
sudo ufw allow proto tcp port 8080			# 允许特定协议和端口号的连接(例如,允许TCP协议的8080端口)
sudo ufw allow from 192.168.0.100			# 允许指定IP地址或IP范围的连接(例如,允许来自192.168.0.100的连接)
sudo ufw allow 8080/tcp from 192.168.0.100	#允许特定协议和端口号,以及指定IP地址或IP范围的连接

1.4. 连接到 SSH 服务器

ssh <用户名>@<服务器IP地址>
ssh -p 22 <用户名>@<服务器IP地址>

2. Network error: Connection refused 排查

2.1. Ubuntu 虚拟机排查

参考:https://blog.csdn.net/qq_40914472/article/details/140990869

2.1.1. 检查 SSH 服务状态

首先,确保 SSH 服务正在运行。

sudo systemctl status ssh		# active (running) 为运行状态

如果 SSH 服务未运行,可以启动它。

2.1.2. 检查 SSH 配置文件

确认 SSH 配置文件 /etc/ssh/sshd_config 中的配置是正确的。

sudo vim /etc/ssh/sshd_config  # 注意是 sshd_config。有d

确保以下行没有被注释,并且端口设置正确:

Port 22
PermitRootLogin yes				# 启用 root 登录功能
PasswordAuthentication yes		# 启用密码认证

保存并关闭文件后,重新启动 SSH 服务以应用更改:

sudo systemctl restart ssh

2.1.3. 检查防火墙设置

确保防火墙没有阻止 SSH 连接。

sudo ufw status					# 查看防火墙状态
sudo ufw allow ssh				# 允许 SSH 通过防火墙
# 或者
# sudo ufw allow 22/tcp	
sudo ufw enable					# 启用防火墙(如果尚未启用):

2.1.4. 检查网络连接

确保您可以从客户端机器连接到服务器的 IP 地址:

ping <服务器IP地址>

2.1.5. 查看 SSH 日志

查看 SSH 日志文件,以获取更多关于连接失败的详细信息:

sudo tail -f /var/log/auth.log

2.1.6. 检查用户权限

确保您尝试登录的用户存在,并且具有正确的权限。
检查用户是否存在:

id <用户名>

2.1.7. 测试本地连接

在服务器上,尝试从本地连接到 SSH 服务,以确保 SSH 服务正常运行:

ssh <用户名>@localhost

2.1.8. 重新安装 OpenSSH

如果上述步骤均无效,您可以尝试重新安装 OpenSSH 服务:

sudo apt-get remove --purge openssh-server
sudo apt-get install openssh-server
sudo systemctl start ssh

2.2. 主机 VMnet8 排查

出现 Connection refused 的错误,原因可能是局域网内已经存在了跟 Ubuntu 虚拟机相同的 IP。
解决思路:
首先关闭 Ubuntu 虚拟机,然后在 Windows 终端 ping Ubuntu 虚拟机,如果通了,则说明 IP 冲突了。
参考:https://www.cnblogs.com/handsome1013/p/7569099.html

2.2.1. 问题排查

Ubuntu 虚拟机 IP 为 192.168.17.101(SSH 启动时,使用该 IP 地址),主机网络适配器 VMnet8 IP 地址同样为 192.168.17.101。
此情况下,关闭 Ubuntu 虚拟机,在 Windows 终端 ping 192.168.17.101,显示可以 ping 通,但是 ssh 失败。
问题确认,IP 地址冲突。
在这里插入图片描述

2.2.2. 问题解决

修改主机网路适配器 VMnet8 的 IP 为 192.168.17.100,保证与 Ubuntu 虚拟机 IP(192.168.17.101) 在同一网段内。
在这里插入图片描述
开启虚拟机,测试 SSH 服务。
在主机终端上 ping 192.168.17.101 成功;ssh root@192.168.17.101 成功。
在这里插入图片描述
从此再也不用修改虚拟机 IP 了。

2.3. sshd_config 用户禁用

参考:https://blog.csdn.net/qq_42048263/article/details/120632193
经过检查发现 sshd_config 启用了仅允许某些用户使用 ssh,但是 admin 用户却没有被囊括进去,其允许用户的字段信息如下

:~ # grep -i allowusers /etc/ssh/sshd_config
AllowUsers Root root test2
:~ #

将仅允许用户使用 SSH 后面追加admin用户

# grep -i allowusers /etc/ssh/sshd_config
AllowUsers Root root test2 admin

尝试再次 SSH 登录,可以看到此时 SSH 可以成功连接使用
至此问题得到解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值