SSH 密钥登录是一种比密码登录更安全、更便捷的认证方式。在 Xshell 中设置 SSH 密钥登录,你需要先生成密钥对(公钥和私钥),然后将公钥部署到服务器上,最后在 Xshell 中配置使用私钥进行连接。
在 Xshell 中设置 SSH 密钥登录的步骤
整个过程分为三大步:生成密钥对、部署公钥、以及在 Xshell 中配置连接。
步骤一:在 Xshell 中生成 SSH 密钥对
Xshell 内置了密钥生成器,操作起来很方便。
- 打开 Xshell 软件。
- 在菜单栏点击 “工具(Tools)” > “新建用户密钥生成向导(New User Key Generation Wizard)”。
- 在弹出的向导窗口中:
- 选择密钥类型: 推荐选择 “RSA” 或 “ECDSA”。RSA 是最常用和兼容性最好的,ECDSA 提供了更好的性能和安全性。
- 选择密钥长度: 对于 RSA,推荐选择 “2048” 或 “4096” 位。长度越长越安全,但生成和使用会略慢。
- 点击 “下一步(Next)”。
- 生成密钥: 此时 Xshell 会开始生成密钥。你需要根据提示随机移动鼠标,以帮助生成更强的随机性。
- 设置密钥参数:
- 密钥名称(Key name): 给你的密钥起一个有意义的名字,例如
my_server_key
。 - 密码(Passphrase):强烈建议为私钥设置一个密码(Passphrase)。这会为你的私钥提供额外的保护,即使私钥文件泄露,没有密码也无法使用。
- 注意: 这个密码不是你服务器的登录密码,而是你私钥的密码。如果你不设置,私钥可以直接使用,但安全性降低。
- 点击 “下一步(Next)”。
- 密钥名称(Key name): 给你的密钥起一个有意义的名字,例如
- 保存公钥和私钥:
- 向导会显示你的公钥(Public key) 内容。
- 点击 “保存为文件(Save as file…)” 按钮。
- 将公钥保存为
.pub
文件(例如my_server_key.pub
)。这个文件就是要上传到服务器上的。 - 点击 “保存私钥为(Save private key as…)” 按钮。
- 将私钥保存为
.pem
或.ppk
文件(例如my_server_key.pem
)。这个文件将用于 Xshell 连接,请务必妥善保管,切勿泄露! - 点击 “完成(Finish)” 关闭向导。
步骤二:将公钥部署到远程 Linux 服务器
你需要将上一步生成的公钥 (.pub
文件) 上传到你想要连接的 Linux 服务器上。
- 使用密码登录到你的远程 Linux 服务器。 (第一次连接时仍需密码)
- 创建或编辑授权密钥文件:
- 首先,确保你的用户主目录下有
.ssh
目录,如果没有则创建:Bashmkdir -p ~/.ssh chmod 700 ~/.ssh # 设置权限,非常重要,否则SSH可能不工作
- 然后,将你的公钥内容添加到
~/.ssh/authorized_keys
文件中。如果该文件不存在,则创建它。Bashnano ~/.ssh/authorized_keys # 使用 nano 或 vi 编辑器
- 粘贴公钥内容: 将你在 Xshell 中生成的
.pub
文件内容(以ssh-rsa AAAA...
或ecdsa-sha2-nistp...
开头,通常以你设置的密钥名称结尾)完整地粘贴到authorized_keys
文件的末尾。 - 保存并关闭文件。
- 首先,确保你的用户主目录下有
- 设置
authorized_keys
文件的权限: 这也是非常关键的一步,权限不正确会导致密钥登录失败。Bashchmod 600 ~/.ssh/authorized_keys
- (可选但推荐)禁用密码登录: 为了提高安全性,你可以在服务器上禁用密码登录,只允许密钥登录。
- 编辑 SSH 配置文件:Bash
sudo nano /etc/ssh/sshd_config
- 找到以下行并修改或添加:
PasswordAuthentication no PubkeyAuthentication yes
- 保存并关闭文件。
- 重启 SSH 服务:Bash
sudo systemctl restart sshd # 对于systemd系统 # 或者 sudo service sshd restart # 对于旧版init系统
- 注意: 在禁用密码登录之前,请务必确认你的密钥登录已经可以正常工作!否则你可能会被锁定在服务器之外。
- 编辑 SSH 配置文件:Bash
步骤三:在 Xshell 中配置使用私钥登录
现在,你需要在 Xshell 的会话属性中指定使用你生成的私钥文件进行登录。
- 打开 Xshell 软件。
- 在菜单栏点击 “文件(File)” > “新建(New)”,或者打开你已有的会话。
- 在会话属性窗口中:
- 连接(Connection):
- 名称(Name): 给你的会话起一个名字。
- 主机(Host): 输入你的服务器 IP 地址或域名。
- 协议(Protocol): 选择 “SSH”。
- 端口号(Port Number): 默认为 22,如果服务器 SSH 端口有修改,请填写正确的端口号。
- 用户身份验证(Authentication):
- 在左侧类别中,点击 “用户身份验证(Authentication)”。
- 方法(Method): 勾选 “Public Key (公钥)”。
- 用户名(User Name): 输入你在服务器上要登录的用户名(例如
root
或你的普通用户)。 - 用户密钥(User Key): 点击 “浏览(Browse…)” 按钮,选择你在步骤一中保存的私钥文件(
.pem
或.ppk
格式)。 - 密码(Passphrase): 如果你在生成私钥时设置了密码,在这里输入该密码。
- 连接(Connection):
- 点击 “确定(OK)” 保存会话设置。
- 连接测试:
- 在 Xshell 的会话管理器中,双击你刚刚配置的会话。
- 如果一切设置正确,Xshell 将使用私钥尝试登录。如果你的私钥设置了密码,会提示你输入密码。
- 成功连接后,你就完成了 SSH 密钥登录的设置。
总结
SSH 密钥登录提供了更高级别的安全性,减少了密码被暴力破解的风险。按照上述步骤,你可以顺利在 Xshell 中实现这一功能。记住,私钥的保管是重中之重,绝不能泄露给任何人。
Xshell设置SSH密钥登录常见问题
为何设置了SSH密钥登录后,有时仍会提示我输入密码?
这通常是因为你的私钥设置了密码(passphrase)。每次使用该私钥进行认证时,Xshell 都会要求你输入这个密码,以进一步保护你的私钥。如果你不想每次都输入,可以在生成密钥时选择不设置密码(不推荐,安全性降低),或者使用 Xagent 等工具管理私钥。
SSH密钥登录和密码登录哪个更安全?为什么?
SSH密钥登录更安全。 密钥通常由长字符串组成,难以被暴力破解;私钥保存在本地,公钥部署在服务器,两者都难以被窃取。而密码可能被字典攻击或暴力破解,也容易因用户设置简单密码或在其他网站泄露而受影响。密钥登录避免了密码在网络传输的风险。
如果我把私钥的密码忘记了怎么办?能找回或重置吗?
私钥的密码无法直接找回或重置。 如果你忘记了私钥密码,那么这个私钥就失效了,无法用于SSH认证。你唯一的选择是重新生成一套新的SSH密钥对(公钥和私钥),然后按照步骤重新将新的公钥部署到服务器上,并用新的私钥在Xshell中配置连接。