SSH连接CentOS 7失败或被拒绝,该如何排查?

基础连接:开启远程管理之门

在开始之前,请确保您已具备以下前提条件:

SSH连接CentOS 7失败或被拒绝,该如何排查?

  • 一台已启动并连接到网络的CentOS 7服务器。
  • 服务器的IP地址或域名。
  • 一个具有登录权限的用户账户(默认通常是root,但更推荐使用普通用户)。
  • 一台客户端计算机(Windows、macOS或Linux),并装有SSH客户端,Windows 10/11已内置OpenSSH客户端,macOS和Linux则通常默认安装。

执行基本连接命令

SSH连接的基础命令格式非常简洁,打开您的客户端终端(或Windows的PowerShell/CMD),输入以下命令:

ssh username@server_ip
  • ssh:启动SSH客户端程序。
  • username:您在CentOS 7服务器上用于登录的用户名。
  • server_ip:您CentOS 7服务器的IP地址。

如果您的用户名是admin,服务器IP是168.1.100,命令则为:

ssh admin@192.168.1.100

首次连接与主机密钥验证

当您第一次连接到某台服务器时,SSH客户端会显示如下提示:

The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:AbCdEfGhIjKlMnOpQrStUvWxYz1234567890abcdef.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

这是SSH的安全机制之一,它告诉您,客户端不认识这台主机的“身份”(即主机密钥),并显示其指纹(fingerprint),一个独一无二的标识符,您需要确认这就是您想要连接的服务器,输入yes并回车后,客户端会将这台主机的密钥保存到本地的~/.ssh/known_hosts文件中,此后再连接时,就不会出现此提示,除非服务器的密钥发生了变化。

指定非标准端口

出于安全考虑,很多管理员会将SSH服务从默认的22端口更改为其他端口,您需要使用-p参数来指定端口号:

ssh -p 2222 username@server_ip

这个命令尝试通过2222端口连接到服务器。


高级连接方式与实用技巧

掌握了基础连接后,我们可以探索一些更强大、更便捷的SSH用法。

基于密钥的认证(免密登录)

密码认证虽然简单,但容易受到暴力破解攻击,基于密钥的认证则安全得多,它使用一对加密密钥(私钥和公钥)来进行身份验证。

步骤如下:

  1. 在客户端生成密钥对:
    在您的客户端计算机上运行以下命令:

    SSH连接CentOS 7失败或被拒绝,该如何排查?

    ssh-keygen -t rsa -b 4096

    系统会提示您指定密钥文件的保存位置(默认为~/.ssh/id_rsa)和设置一个 passphrase(密码短语)。 passphrase可以为私钥增加一层额外的保护,如果设置为空,则可以实现完全免密登录。

  2. 将公钥复制到服务器:
    生成密钥对后,您需要将公钥(id_rsa.pub添加到CentOS 7服务器上对应用户的~/.ssh/authorized_keys文件中,最简便的方法是使用ssh-copy-id命令:

    ssh-copy-id username@server_ip

    该命令会自动处理文件权限和内容追加,完成后您就可以直接使用ssh username@server_ip登录,而无需输入密码。

使用SSH配置文件简化连接

如果您需要管理多台服务器,每次都输入一长串命令和参数会很繁琐,SSH客户端允许您通过~/.ssh/config文件为常用连接创建别名。

创建或编辑该文件(nano ~/.ssh/config),并添加如下内容:

Host my-web-server
    HostName 192.168.1.100
    User admin
    Port 2222
    IdentityFile ~/.ssh/my_custom_key
Host my-db-server
    HostName db.example.com
    User dba

保存后,您就可以直接使用ssh my-web-server来连接第一台服务器,所有参数都会自动匹配,这极大地提升了工作效率。


安全最佳实践:加固您的SSH服务

连接安全是服务器安全的第一道防线。

禁用密码认证

在成功设置基于密钥的认证并确保可以正常登录后,强烈建议在服务器上禁用密码认证。

编辑服务器上的SSH配置文件:

sudo vi /etc/ssh/sshd_config

找到并修改以下行:

SSH连接CentOS 7失败或被拒绝,该如何排查?

PasswordAuthentication no

保存文件后,重启SSH服务使配置生效:

sudo systemctl restart sshd

警告: 在执行此步骤前,请务必确认您的密钥登录功能完好,否则您可能会将自己锁在服务器之外。

禁止root用户直接登录

允许root用户直接通过SSH登录是一个巨大的安全风险,攻击者一旦破解root密码,就获得了服务器的最高权限,最佳实践是使用普通用户登录,然后通过sudo提权。

同样在/etc/ssh/sshd_config文件中,修改:

PermitRootLogin no

重启sshd服务后,root用户将无法直接SSH登录。


常见问题与故障排除

错误信息 可能原因 解决方案
Connection refused SSH服务未启动;防火墙阻止了连接;端口号错误。 在服务器上检查systemctl status sshd;检查firewall-cmd --list-all;确认连接命令中的端口号是否正确。
Permission denied (publickey) 公钥未正确上传到服务器;服务器上的~/.ssh/authorized_keys文件权限不正确。 使用ssh-copy-id重新上传公钥;确保服务器上~/.ssh目录权限为700,authorized_keys文件权限为600。
Host key verification failed 服务器的SSH主机密钥已更改(例如重装了系统)。 在客户端删除~/.ssh/known_hosts文件中对应旧的主机条目,然后重新连接。

相关问答FAQs

Q1: 如何安全地断开SSH连接?
A1: 断开SSH连接非常简单,您可以在远程服务器的终端中输入以下任意一个命令:exitlogout,或者使用快捷键 Ctrl+D,执行后,SSH会话会终止,您将返回到本地计算机的终端。

Q2: 除了命令行操作,我可以通过SSH传输文件吗?
A2: 当然可以,SSH协议本身就支持安全的文件传输,最常用的两个工具是 scp (Secure Copy) 和 sftp (SSH File Transfer Protocol)。

  • :语法类似于 cp,将本地文件 file.txt 复制到服务器的 /home/admin/ 目录:
    scp file.txt admin@server_ip:/home/admin/
  • :它提供了一个交互式的文件传输界面,类似于传统的 ftp,连接后,您可以使用 getputlscd 等命令来浏览和传输文件。
    sftp admin@server_ip

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-05 16:23
下一篇 2025-10-05 16:27

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信