SSH"connection reset by ip_address port 22"问题解决

本文解决SSH客户端无法连接服务器的问题,出现connection reset错误。通过重置SSH配置和重新创建key文件解决,具体步骤包括删除原有key文件和重新配置openssh-server。

前提是安装好了openssh,但是客户端无法连接,出现了
connection reset by (server_ip_address) port 22
可以试试重置ssh的配置。我是通过这个直接解决的,网上的教程很多都不行,就这个可以直接解决,我查看了log文件,说我是缺少了.key文件
重置一下重新创建key文件就能解决

rm /etc/ssh/ssh_host_*
sudo dpkg-reconfigure openssh-server
你看到的提示如下: ``` administrator@localhost's password: Connection reset by ::1 port 22 ``` 这表示你尝试通过 SSH 登录 `localhost`(即本机)的 `administrator` 用户,但在输入密码后,SSH 连接被服务器端主动断开,提示 `Connection reset by ::1 port 22`。 --- ## 🔍 错误含义解析 - `administrator@localhost's password:` 表示 SSH 客户端已连接到 SSH 服务端,并提示你输入密码。 - `Connection reset by ::1 port 22` 表示在你输入密码后,SSH 服务端主动断开了连接。这通常是由于以下原因之一: --- ## 🚫 常见原因与解决方法 ### ✅ 1. **密码输入错误** - 即使你认为密码正确,也可能由于大小写、空格、键盘布局等问题导致密码错误。 - **解决方法**: - 多尝试几次,确认密码正确。 - 尝试本地登录验证密码是否正确: ```bash su - administrator ``` --- ### ✅ 2. **SSH 配置限制了 `root` 或 `administrator` 登录** 在许多系统中(尤其是 Linux 和 OpenSSH 的默认配置),**禁止直接以 `root` 或 `administrator` 身份通过 SSH 登录**。 - **检查配置**: ```bash sudo nano /etc/ssh/sshd_config ``` 查找以下配置项: ```bash PermitRootLogin no ``` 如果是 Windows 系统,检查是否允许管理员账户通过 OpenSSH 登录。 - **解决方法**: - 修改配置允许管理员登录(仅限测试环境): ```bash PermitRootLogin yes ``` > 注意:`administrator` 在 Linux 中可能不存在,`root` 是等价账户。 - 然后重启 SSH 服务: ```bash sudo systemctl restart sshd ``` --- ### ✅ 3. **SSH 服务异常崩溃或配置错误** - SSH 服务可能在验证密码后发生异常,导致连接被重置。 - 查看 SSH 日志: ```bash sudo tail -f /var/log/auth.log ``` - 如果看到如下错误: ``` fatal: mm_request_receive: buffer_get failed ``` 说明 SSH 的 PAM 或权限配置可能有问题。 - **解决方法**: - 重新安装 SSH 服务: ```bash sudo apt purge openssh-server sudo apt install openssh-server ``` --- ### ✅ 4. **PAM 模块或 SELinux/AppArmor 限制** - 某些 Linux 系统使用 PAM、SELinux 或 AppArmor 来限制 SSH 登录。 - **解决方法**: - 暂时禁用 SELinux: ```bash setenforce 0 ``` - 查看 `/var/log/audit/audit.log` 是否有相关拒绝记录。 --- ### ✅ 5. **使用密钥登录失败导致连接中断** - 如果你配置了密钥登录,但密钥权限设置错误(如 `.ssh` 目录或 `authorized_keys` 文件权限不对),也可能导致连接中断。 - **`.ssh` 文件夹和文件的正确权限应为**: ```bash chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys ``` --- ### ✅ 6. **Windows OpenSSH 服务配置问题** 如果你是在 Windows 上使用 OpenSSH 服务,可能出现以下问题: - OpenSSH 服务未正常运行。 - 用户权限未正确配置。 - `sshd_config` 中限制了用户登录。 - **解决方法**: - 检查 OpenSSH 服务是否运行: ```powershell Get-Service sshd ``` - 查看日志文件: ```powershell notepad C:\ProgramData\ssh\logs\sshd.log ``` --- ## ✅ 示例:修复步骤 ```bash # 查看 SSH 是否运行 systemctl status sshd # 编辑配置文件 sudo nano /etc/ssh/sshd_config # 修改以下配置(如需要) PermitRootLogin yes PasswordAuthentication yes # 重启 SSH 服务 sudo systemctl restart sshd # 查看日志 tail -f /var/log/auth.log # 尝试登录 ssh administrator@localhost ``` --- ## 🧪 补充:Windows OpenSSH 服务器配置 `administrator` 登录 如果你是在 Windows 上使用 OpenSSH 服务器: 1. 确保你已安装并启动 OpenSSH 服务器: ```powershell Start-Service sshd Set-Service -Name sshd -StartupType Automatic ``` 2. 默认情况下,OpenSSH 不允许 `Administrator` 登录,你需要手动配置: - 创建 `C:\ProgramData\ssh\administrators_authorized_keys` 文件 - 设置权限: ```powershell icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /grant administrators:F icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /grant SYSTEM:F ``` 3. 编辑 `sshd_config`: ```bash Match Group administrators AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锡城筱凯

你的鼓励是我创造的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值