ssh Debian 报 Permission denied, please try again / Port 22 Connection Refused

本文详细介绍了新安装Debian11时遇到SSH连接问题的可能原因,包括地址错误、未安装或启动SSH服务、配置问题和防火墙设置,提供了相应的排查和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新装的Debian (11)  ssh连不上?

ssh 连接报: Port 22 Connection Refused?

或者出现以下情况?


可能有几个原因导致这种情况:

地址错误

没安装SSH服务

SSH 服务未启动

SSH 配置问题 #大概率

防火墙问题


地址错误

请确保在 Debian 和 SSH 客户端在同一网络下,或者确保公网 IP 地址正确并且端口映射或穿透设置正确。同时,请确认 root 用户的密码是否正确。


没安装SSH服务

1.更新软件包列表:

sudo apt update

2.安装 SSH 服务器软件包(openssh-server):

sudo apt install openssh-server

3.安装完成后,SSH 服务器将自动启动。你可以使用以下命令检查 SSH 服务的状态:

​sudo systemctl status ssh

出现 -bash: sudo: command not found 错误时,解决方法如下:
1.使用 root 账户:如果你已经以 root 账户登录系统,那么不需要使用 sudo 命令来执行命令,因为 root 用户已经具有所有权限。

要切换到 root 账户,你可以使用 su 命令。在终端中输入以下命令,然后输入 root 用户的密码,即可切换到 root 账户:

su -

2.安装 sudo 软件包:如果你不是以 root 账户登录系统,可以尝试安装 sudo 软件包。使用以下命令安装:

su -c "apt install sudo" #这将使用 root 权限安装 sudo 软件包

现在,你的 Debian 系统上已经安装并启动了 SSH 服务器。你可以尝试使用 SSH 客户端连接到该服务器。


SSH 服务未启动

确保 SSH 服务已经正确启动。你可以使用以下命令检查 SSH 服务的状态:

sudo systemctl status ssh

如果 SSH 服务未运行,你可以使用以下命令启动它:

sudo systemctl start ssh

如果想开机自启动 SSH 服务,可以使用以下命令:

sudo systemctl enable ssh

SSH 配置问题 #大概率

如果出现 SSH 配置错误,大概率是因为配置文件 /etc/ssh/sshd_config 中的设置不正确。请按照以下步骤进行检查和修正:

检查 /etc/ssh/sshd_config 文件中的 SSH 配置,确保以下设置正确:

        Port 应设置为 22(或你指定的端口)。

        PermitRootLoginPasswordAuthentication 等选项设置正确。

1.使用 vim 或 vi 编辑配置文件:

sudo vim /etc/ssh/sshd_config

附上 vim 使用教程

如果出现 -bash: vim: command not found 错误,请先安装 vim:

sudo apt install vim -y

如果安装 vim 报错,也可以使用 vi 进行编辑。vi 和 vim 的操作大同小异:

sudo vi /etc/ssh/sshd_config

2.在编辑配置文件时,请确保以下配置正确(使用 # 注释掉的需要删除 # 以启用配置):

Port 22  # SSH 使用的端口,可以自定义配置,默认使用 22
PermitRootLogin yes  # 允许使用 Root 用户登录
PasswordAuthentication yes  # 允许通过密码授权
PermitEmptyPasswords no  # 不允许空密码

3.使用 vim 编辑时,正确的配置会显示为彩色,如果是白色,可能是输入错误或该配置无效。

4.在修改配置文件后,重启 SSH 服务使更改生效:

sudo systemctl restart ssh

防火墙问题

这些命令用于添加临时规则,只在当前会话中有效,重启后将失效。为了使规则持久化,你需要根据使用的防火墙工具进行相应的配置。

新安装的 Debian 发行版通常会默认安装 iptables 软件包,但不会预先配置防火墙规则,因此防火墙功能并未启用。管理员需要手动配置并启用防火墙以保护系统安全,可选择使用 iptables、nftables、ufw 或 firewalld 等工具进行设置。

1.iptables:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

优化:如果需要规则持久化,可以将规则保存到文件中并使用 iptables-persistent 包:

        1.在设置完 iptables 规则后,保存当前规则到文件中:

sudo iptables-save > /etc/iptables/rules.v4  # IPv4 规则保存到文件
sudo ip6tables-save > /etc/iptables/rules.v6  # IPv6 规则保存到文件

        2.配置 iptables-persistent 包使其在系统启动时加载保存的规则文件:

sudo systemctl enable netfilter-persistent

这样,在系统重启后,iptables-persistent 包会自动加载之前保存的规则文件,从而使得你设置的 iptables 规则持久化生效。

2.nftables:

sudo nft add rule inet filter input tcp dport 22 accept

优化:同样,可以将规则保存到文件中并在启动时加载:

        1.将规则保存到文件中:

sudo nft list ruleset > /etc/nftables.conf

        2.配置 nftables 在系统启动时加载规则文件:

在 Debian 系统中,你可以使用 systemd 来管理 nftables。创建一个 systemd 服务单元文件来加载规则文件。

创建 /etc/systemd/system/nftables.service 文件,并添加以下内容:

[Unit]
Description=Netfilter Tables (nftables) ruleset
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/nft -f /etc/nftables.conf

[Install]
WantedBy=multi-user.target

然后启用该服务:

sudo systemctl enable nftables.service

现在,当系统启动时,nftables 将加载 /etc/nftables.conf 文件中的规则。

3.ufw:

sudo ufw allow 22/tcp

这个命令已经包含了持久化配置,无需额外优化。

4.firewalld:

sudo firewall-cmd --zone=public --add-port=22/tcp --permanent 
sudo firewall-cmd --reload

这个命令也已经包含了持久化配置,无需额外优化。

确保根据你的需求选择合适的命令,并根据需要将规则持久化,以确保在系统重启后规则仍然有效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值