欢迎光临
专业的主机评测网站

怎样设置SSH密钥登录?

SSH密钥登录完全指南:告别密码,拥抱安全与便捷

在远程服务器管理和日常开发工作中,安全与效率是两大核心诉求。传统的密码登录方式不仅存在被暴力破解的风险,每次输入也略显繁琐。而SSH密钥登录作为一种更安全、更高效的认证方式,正成为开发者和系统管理员的首选。本文将详细介绍如何从零开始设置SSH密钥登录,助您构建一道坚固的安全防线。

一、SSH密钥登录的核心原理

SSH密钥认证采用非对称加密体系,它包含一对数学上关联的密钥:

  • 私钥:存放在您的本地客户端计算机上,必须严格保密,如同家门钥匙。
  • 公钥:可以放置在您需要登录的任何远程服务器上,如同公开的门锁。

当您尝试连接时,服务器会使用公钥创建一个加密挑战,只有拥有对应私钥的客户端才能正确解密并回应,从而完成认证。这种方法彻底避免了密码在网络中传输,从根本上杜绝了窃听和暴力破解。

二、本地生成SSH密钥对(以Linux/macOS和Windows为例)

1. Linux 与 macOS 系统

打开终端,执行以下命令:

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

此处-t ed25519指定了目前公认安全且高效的EdDSA算法。系统会提示您:

  • 选择密钥保存路径(直接回车使用默认路径~/.ssh/id_ed25519即可)。
  • 设置一个密钥的保护密码。这为私钥额外增加了一层保护,即使私钥文件泄露,也无法直接使用。您可以选择留空,但出于安全考虑,建议设置。

生成成功后,在~/.ssh/目录下会得到两个文件:id_ed25519(私钥)和id_ed25519.pub(公钥)。

2. Windows 系统

对于Windows 10及以上版本,系统内置了OpenSSH客户端。

  • 打开PowerShell或命令提示符,使用与上述相同的ssh-keygen命令即可。
  • 对于更早版本的Windows,可以使用Git Bash或PuTTYgen等工具生成密钥对。

三、将公钥部署到远程服务器

这是设置的关键一步,目的是让服务器认识您的“公钥锁”。

方法一:使用ssh-copy-id命令(最便捷)

如果您的本地系统支持此命令(多数Linux发行版和macOS自带),只需执行:

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@remote_server_ip

系统会提示您输入一次服务器密码,之后公钥便会自动复制到服务器对应用户的~/.ssh/authorized_keys文件中。

方法二:手动复制公钥

如果ssh-copy-id不可用,可以手动操作:

  1. 在本地查看并复制公钥内容:
    cat ~/.ssh/id_ed25519.pub
  2. 使用密码方式登录远程服务器:
    ssh username@remote_server_ip
  3. 在服务器上,确保~/.ssh目录存在,并设置正确权限:
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
  4. 将复制的公钥内容追加到authorized_keys文件,并设置其权限:
    echo "粘贴您的公钥内容" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys

权限设置至关重要,过松的权限会导致SSH服务器出于安全考虑拒绝使用密钥。

四、测试与使用密钥登录

完成部署后,断开当前连接,尝试重新登录:

ssh username@remote_server_ip

如果一切顺利,系统将不再询问账户密码,而是直接登录(若您为私钥设置了保护密码,则会提示输入该密码)。

五、进阶配置与安全加固

1. 禁用密码登录(强烈推荐)

确认密钥登录无误后,可以彻底关闭密码认证以提升安全性。在远程服务器上编辑SSH服务端配置文件:

sudo nano /etc/ssh/sshd_config

找到并修改以下行:

PasswordAuthentication no
PubkeyAuthentication yes

保存后重启SSH服务:
sudo systemctl restart sshd(系统使用systemd)。

2. 使用SSH Agent管理私钥密码

为了避免每次使用密钥都输入保护密码,可以使用ssh-agent

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

输入一次保护密码后,在当前会话中即可无需重复输入。

3. 为不同服务器配置别名

在本地的~/.ssh/config文件中进行配置,可以简化连接命令:

Host myserver
    HostName remote_server_ip
    User username
    IdentityFile ~/.ssh/id_ed25519

配置后,只需使用ssh myserver即可连接。

六、故障排除与常见问题

  • 连接仍要求密码:首先检查服务器上authorized_keys文件权限是否为600,.ssh目录权限是否为700。其次确认sshd_configPubkeyAuthenticationyes
  • “Permission denied (publickey)”:通常意味着服务器未找到匹配的公钥。请仔细核对公钥内容是否完整复制,或尝试使用ssh -v参数查看详细的连接过程以定位问题。
  • 私钥权限过松:SSH对私钥文件权限敏感,通常要求为600。使用chmod 600 ~/.ssh/id_ed25519修复。

总结而言,设置SSH密钥登录是一个一劳永逸的投资。它通过强大的加密技术,在显著提升远程访问安全性的同时,也带来了无需记忆和输入密码的流畅体验。只需花费几分钟完成上述步骤,您就能为自己的数字资产筑起一道坚实的堡垒,并享受高效运维带来的便利。

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。

专业的主机评测网站

国内/国外VPS测评、云服务器评测,从VPS或IDC商家的资质、客服水平、售后服务、VPS线路、服务器硬件、主机性能等、访问速度进行云主机、IDC测评。

联系我们联系我们