服务器测评网
我们一直在努力

Linux怎么创建SSH?Linux生成SSH密钥详细步骤有哪些

在Linux服务器运维与网络安全管理领域,SSH公钥认证机制是目前业界公认的最安全、最便捷的远程登录方案,相较于传统的密码验证方式,SSH密钥对通过非对称加密技术,彻底杜绝了暴力破解风险,并为自动化运维提供了免密登录的基础,构建一套高标准的SSH连接环境,不仅涉及客户端密钥对的生成,更包含服务端精细化的权限配置与安全加固,以下将从核心原理、操作步骤、安全加固及故障排查四个维度,详细阐述Linux下创建与配置SSH的专业流程。

Linux怎么创建SSH?Linux生成SSH密钥详细步骤有哪些

SSH密钥认证的核心原理与优势

SSH协议基于非对称加密算法实现身份验证,其核心在于生成一对密钥:私钥公钥,私钥由用户妥善保存在本地计算机,如同家中的钥匙;公钥则被放置在目标服务器上,如同门锁,登录时,服务器用公钥加密随机挑战信息,客户端持有私钥解密,若解密成功则验证通过。这种机制的优势在于私钥从未在网络上传输,且公钥无法推导出私钥,从而在数学层面保证了连接的绝对安全,对于企业级应用,建议优先采用ED25519算法,其在安全性与性能上均优于传统的RSA算法。

第一步:在客户端生成高强度的SSH密钥对

在Linux或MacOS终端下,使用ssh-keygen命令是创建密钥对的标准方式,为了确保安全性,必须选择合适的算法并设置强密码短语。

执行命令时,推荐使用ED25519算法,该算法具有更快的计算速度和更小的密钥尺寸,安全性极高,若需兼容老旧系统,可回退至RSA 4096位,命令示例如下:

ssh-keygen -t ed25519 -C "your_email@example.com"

在执行过程中,系统会提示保存路径,默认为~/.ssh/id_ed25519建议使用默认路径以便SSH客户端自动识别,随后,系统要求输入“passphrase”(密码短语)。请务必设置一个复杂的密码短语,这一步相当于给私钥再加了一把锁,即使私钥文件不幸泄露,攻击者没有密码短语也无法使用该私钥,生成完成后,将在.ssh目录下看到私钥文件(如id_ed25519)和公钥文件(如id_ed25519.pub)。

第二步:将公钥分发至目标服务器

生成密钥对后,关键步骤是将公钥安装到目标服务器的~/.ssh/authorized_keys文件中,手动复制粘贴容易出错,推荐使用ssh-copy-id工具,该工具能自动处理文件权限和目录创建问题。

执行以下命令完成公钥分发:

Linux怎么创建SSH?Linux生成SSH密钥详细步骤有哪些

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@remote_host_ip

如果目标服务器未安装ssh-copy-id,可通过手动命令实现,首先查看本地公钥内容cat ~/.ssh/id_ed25519.pub,然后登录服务器,执行:

mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo "粘贴你的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

权限设置是SSH登录成功的关键.ssh目录权限必须为700,authorized_keys文件权限必须为600,若权限过宽(如777),SSH服务出于安全考虑将拒绝读取公钥文件,导致登录失败。

第三步:服务端SSH配置的安全加固

为了最大化安全性,仅配置公钥认证是不够的,必须修改服务端的主配置文件/etc/ssh/sshd_config,禁用不安全的认证方式并调整连接参数。

使用管理员权限编辑配置文件:

sudo vim /etc/ssh/sshd_config

关键配置项调整建议如下:

  1. 禁用密码认证:确保PasswordAuthentication no,这是防止暴力破解的最有效手段,强制用户必须持有私钥才能登录。
  2. 禁用Root远程登录:设置PermitRootLogin no,攻击者常针对Root账号进行扫描,禁止Root登录可增加攻击者的成本,日常运维应先登录普通账号,再通过sudo提权。
  3. 限制登录用户或组:使用AllowUsersAllowGroups指令,明确指定允许登录的账号,只开放必要的权限。
  4. 更改默认端口:将Port 22修改为一个高位随机端口(如22222),虽然“隐匿式安全”不是万能的,但能避开大部分基于22端口的自动化脚本扫描。

修改完成后,务必执行sudo systemctl restart sshd重启服务使配置生效,注意,在重启前,建议保留一个当前的SSH连接会话,另开窗口测试新配置,以免因配置错误导致被锁在服务器门外。

Linux怎么创建SSH?Linux生成SSH密钥详细步骤有哪些

第四步:客户端配置优化与故障排查

为了提升管理多台服务器的效率,可在客户端~/.ssh/config文件中定义别名,通过配置HostHostNameUserPortIdentityFile,即可用简短的别名代替复杂的连接命令。

在遇到连接问题时,使用ssh -vvv user@host进行调试是专业运维的首选手段,该命令会输出详细的连接过程日志,帮助定位问题,常见问题通常包括:

  • 权限拒绝:检查服务端~/.sshauthorized_keys权限是否正确。
  • 算法不匹配:老旧服务器可能不支持ED25519,需切换至RSA。
  • SELinux拦截:某些CentOS系统下,需恢复SELinux上下文:restorecon -R -v ~/.ssh

相关问答

Q1:如果我不小心丢失了私钥文件,还能恢复登录服务器吗?
A: 无法恢复,SSH私钥文件是唯一的,且无法从公钥或服务器端推导出来,如果私钥丢失,唯一的解决方案是通过服务器端的VNC控制台或物理终端登录,重新生成新的密钥对,并将新的公钥追加到服务器的authorized_keys文件中,这也提醒我们,务必备份重要的私钥文件到安全的位置

Q2:为什么设置了公钥认证,服务器还是提示输入密码?
A: 这通常由三个原因导致,服务端sshd_config中的PasswordAuthentication未设置为no,且公钥验证失败导致服务回退到密码验证;服务端.sshauthorized_keys文件权限过宽,SSH服务拒绝读取;客户端使用的私钥与服务器上的公钥不匹配,建议使用ssh -vvv查看详细日志,重点关注“authentication refused: bad ownership or modes”等权限报错信息。

通过以上流程,我们建立了一套基于非对称加密、符合E-E-A-T原则(专业、权威、可信、体验)的SSH连接体系,这不仅保障了服务器的安全边界,也为后续的自动化部署奠定了坚实基础,如果您在配置过程中遇到特定的报错信息,欢迎在评论区留言,我们将为您提供针对性的技术支持。

赞(0)
未经允许不得转载:好主机测评网 » Linux怎么创建SSH?Linux生成SSH密钥详细步骤有哪些