使用公钥和私钥登录 SSH 是一种比密码更安全、更便捷的身份验证方式。下面是为您整理的详细操作流程。
🔑 生成密钥对
首先,在您的本地计算机上生成一对密钥(公钥和私钥)。
-
打开终端,执行以下命令:
bashssh-keygen -t rsa -b 4096-t rsa指定密钥类型为 RSA。-b 4096指定密钥长度为 4096 位,安全性更高。
-
系统会提示您:
Enter file in which to save the key:按回车键使用默认路径即可(通常是~/.ssh/id_rsa)。Enter passphrase:强烈建议为私钥设置一个"密码短语"。这能为私钥增加一层重要保护,即使私钥文件不慎泄露,对方也无法直接使用。
命令执行成功后,您会在 ~/.ssh/ 目录下得到两个文件:id_rsa(私钥) 和 id_rsa.pub(公钥)。私钥是你的身份证明,必须妥善保管,绝不外传;公钥则可以放心地放到任何你需要登录的服务器上。
📤 将公钥上传至服务器
接下来,需要将公钥部署到您想登录的远程服务器上。
推荐使用 ssh-copy-id 命令,这是最简便的方法:
bash
ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip_address
系统会提示您输入一次服务器用户的密码,验证成功后公钥会自动追加到服务器对应用户家目录下的 ~/.ssh/authorized_keys 文件中。
如果无法使用 ssh-copy-id,可以手动复制:
-
将
id_rsa.pub文件内容拷贝到剪贴板。 -
登录服务器,编辑或创建
~/.ssh/authorized_keys文件。 -
将公钥内容粘贴到新的一行。
-
至关重要的一步 :设置正确的文件权限,否则 SSH 服务器会拒绝认可该密钥:
bashchmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
⚙️ 配置服务器 SSH
为使服务器接受密钥登录,需要确保其 SSH 服务配置正确。
-
编辑服务器上的 SSH 配置文件:
bashsudo nano /etc/ssh/sshd_config -
确认或修改以下行,确保它们为
yes:PubkeyAuthentication yes # RSAAuthentication yes # 对于较新版本的 OpenSSH,通常不需要这一行 -
(可选但强烈推荐) 在确认能通过密钥登录成功后 ,可以禁用密码登录以极大提升安全性:
PasswordAuthentication no -
保存文件后,重启 SSH 服务使配置生效:
bashsudo systemctl restart sshd
🖥️ 使用私钥登录
完成以上设置后,您就可以使用私钥登录了。
-
在 Linux 或 macOS 上 :SSH 客户端通常会自动使用
~/.ssh/id_rsa这个默认私钥。只需直接连接即可,如果设置了密码短语,会提示您输入:bashssh username@server_ip_address -
如果需要指定其他私钥文件 ,使用
-i参数:bashssh -i /path/to/your/private_key username@server_ip_address -
在 Windows 上 :使用 PuTTY 等工具时,需要用 PuTTYgen 工具将私钥转换为
.ppk格式,然后在连接设置中指定该私钥文件。
🛡️ 增强安全性建议
为了进一步提升安全级别,可以考虑:
-
禁用 root 用户直接通过 SSH 登录 :
在/etc/ssh/sshd_config中设置:PermitRootLogin no -
考虑修改默认的 SSH 端口 :将
Port 22改为一个非标准端口,可以减少自动化攻击脚本的骚扰。 -
使用 Fail2ban 等工具:它可以自动屏蔽多次尝试登录失败的 IP 地址。
完成这些步骤后,您的 SSH 登录方式就变得更加安全可靠了。如果在配置过程中遇到任何问题,例如权限设置或配置文件修改,可以随时提问。