相关链接:
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 可以成功连接使用
至此问题得到解决。