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

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

新装的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

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

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

`Permission denied, please try again.` 这种错误信息通常出现在尝试执行某个操作时,系统认为当前用户不具备足够的权限。在 Windows 系统上通过各种工具(例如 PowerShell、CMD 或者远程桌面连接)尝试访问 Linux 系统时遇到此错误,可能是由于几个原因导致: ### 可能的原因及解决步骤 #### 1. 用户权限不足 - **解决方案**:确保你在 Linux 端使用的账户有正确的权限。 - 登录到 Linux 操作系统。 - 使用 `sudo` 命令前执行命令可以提升权限,如 `sudo command`。 - 对于特定文件或目录,确保该账户拥有读取 (`r`)、写入 (`w`) 和执行 (`x`) 的权限。可通过 `ls -l` 查看权限,并使用 `chmod` 修改。 #### 2. SSH 配置问题 - **解决方案**: - 检查 SSH 服务是否正常运行。 - 对于 Ubuntu 或 Debian 类系统,运行 `service ssh status`;对于 CentOS 或 RHEL 类系统,则运行 `systemctl status sshd.service` 来检查状态。 - 如果服务未启动,使用相应的命令启动服务(例如 `service ssh start` 或 `systemctl start sshd.service`)。 #### 3. 密钥认证配置不当 - **解决方案**:默认情况下,Linux 资源可能会通过密码验证来保护,而不是使用密钥认证。这可能导致登录失败或权限受限。 - 修改 /etc/ssh/sshd_config 文件,确保 PasswordAuthentication 设置为 "yes" 并重启 SSH 服务。 - 创建公私钥对并配置 .ssh 目录下的 authorized_keys 文件。使用如下的生成命令: ``` ssh-keygen -t rsa -b 4096 cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys chown $USER:$USER ~/.ssh ``` - 使用新的公钥替换旧有的授权键。 #### 4. 客户端设置问题 - **解决方案**:确认客户端软件(比如 PuTTY、WinSCP 等)正确配置了SSH连接选项。 - 尝试清除历史记录或重新配置客户端的连接设置。 - 确保 SSH 协议版本匹配(一般推荐使用最新稳定版),并调整其他高级选项如身份验证方式等。 ### 扩展技巧 - 在 Windows 中使用 Git Bash、Cygwin 或类似工具,这些环境本身支持直接与 Linux 系统交互而无需经过 SSH 环节,避免了权限相关的问题。 - 学习并使用 Docker 技术,它提供了一种简单的方式在 Windows 上模拟完整的 Linux 环境,便于开发和测试。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值