Xshell如何设置SSH密钥登录?(详细步骤)

SSH 密钥登录是一种比密码登录更安全、更便捷的认证方式。在 Xshell 中设置 SSH 密钥登录,你需要先生成密钥对(公钥和私钥),然后将公钥部署到服务器上,最后在 Xshell 中配置使用私钥进行连接。

在 Xshell 中设置 SSH 密钥登录的步骤

整个过程分为三大步:生成密钥对、部署公钥、以及在 Xshell 中配置连接。

步骤一:在 Xshell 中生成 SSH 密钥对

Xshell 内置了密钥生成器,操作起来很方便。

  1. 打开 Xshell 软件。
  2. 在菜单栏点击 “工具(Tools)” > “新建用户密钥生成向导(New User Key Generation Wizard)”
  3. 在弹出的向导窗口中:
    • 选择密钥类型: 推荐选择 “RSA”“ECDSA”。RSA 是最常用和兼容性最好的,ECDSA 提供了更好的性能和安全性。
    • 选择密钥长度: 对于 RSA,推荐选择 “2048”“4096” 位。长度越长越安全,但生成和使用会略慢。
    • 点击 “下一步(Next)”
  4. 生成密钥: 此时 Xshell 会开始生成密钥。你需要根据提示随机移动鼠标,以帮助生成更强的随机性。
  5. 设置密钥参数:
    • 密钥名称(Key name): 给你的密钥起一个有意义的名字,例如 my_server_key
    • 密码(Passphrase):强烈建议为私钥设置一个密码(Passphrase)。这会为你的私钥提供额外的保护,即使私钥文件泄露,没有密码也无法使用。
      • 注意: 这个密码不是你服务器的登录密码,而是你私钥的密码。如果你不设置,私钥可以直接使用,但安全性降低。
    • 点击 “下一步(Next)”
  6. 保存公钥和私钥:
    • 向导会显示你的公钥(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 服务器上。

  1. 使用密码登录到你的远程 Linux 服务器。 (第一次连接时仍需密码)
  2. 创建或编辑授权密钥文件:
    • 首先,确保你的用户主目录下有 .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 文件的末尾。
    • 保存并关闭文件。
  3. 设置 authorized_keys 文件的权限: 这也是非常关键的一步,权限不正确会导致密钥登录失败。Bashchmod 600 ~/.ssh/authorized_keys
  4. (可选但推荐)禁用密码登录: 为了提高安全性,你可以在服务器上禁用密码登录,只允许密钥登录。
    • 编辑 SSH 配置文件:Bashsudo nano /etc/ssh/sshd_config
    • 找到以下行并修改或添加:PasswordAuthentication no PubkeyAuthentication yes
    • 保存并关闭文件。
    • 重启 SSH 服务:Bashsudo systemctl restart sshd # 对于systemd系统 # 或者 sudo service sshd restart # 对于旧版init系统
    • 注意: 在禁用密码登录之前,请务必确认你的密钥登录已经可以正常工作!否则你可能会被锁定在服务器之外。

步骤三:在 Xshell 中配置使用私钥登录

现在,你需要在 Xshell 的会话属性中指定使用你生成的私钥文件进行登录。

  1. 打开 Xshell 软件。
  2. 在菜单栏点击 “文件(File)” > “新建(New)”,或者打开你已有的会话。
  3. 在会话属性窗口中:
    • 连接(Connection):
      • 名称(Name): 给你的会话起一个名字。
      • 主机(Host): 输入你的服务器 IP 地址或域名。
      • 协议(Protocol): 选择 “SSH”
      • 端口号(Port Number): 默认为 22,如果服务器 SSH 端口有修改,请填写正确的端口号。
    • 用户身份验证(Authentication):
      • 在左侧类别中,点击 “用户身份验证(Authentication)”
      • 方法(Method): 勾选 “Public Key (公钥)”
      • 用户名(User Name): 输入你在服务器上要登录的用户名(例如 root 或你的普通用户)。
      • 用户密钥(User Key): 点击 “浏览(Browse…)” 按钮,选择你在步骤一中保存的私钥文件(.pem.ppk 格式)。
      • 密码(Passphrase): 如果你在生成私钥时设置了密码,在这里输入该密码。
  4. 点击 “确定(OK)” 保存会话设置。
  5. 连接测试:
    • 在 Xshell 的会话管理器中,双击你刚刚配置的会话。
    • 如果一切设置正确,Xshell 将使用私钥尝试登录。如果你的私钥设置了密码,会提示你输入密码。
    • 成功连接后,你就完成了 SSH 密钥登录的设置。

总结

SSH 密钥登录提供了更高级别的安全性,减少了密码被暴力破解的风险。按照上述步骤,你可以顺利在 Xshell 中实现这一功能。记住,私钥的保管是重中之重,绝不能泄露给任何人。

Xshell设置SSH密钥登录常见问题

这通常是因为你的私钥设置了密码(passphrase)。每次使用该私钥进行认证时,Xshell 都会要求你输入这个密码,以进一步保护你的私钥。如果你不想每次都输入,可以在生成密钥时选择不设置密码(不推荐,安全性降低),或者使用 Xagent 等工具管理私钥。

SSH密钥登录更安全。 密钥通常由长字符串组成,难以被暴力破解;私钥保存在本地,公钥部署在服务器,两者都难以被窃取。而密码可能被字典攻击或暴力破解,也容易因用户设置简单密码或在其他网站泄露而受影响。密钥登录避免了密码在网络传输的风险。

私钥的密码无法直接找回或重置。 如果你忘记了私钥密码,那么这个私钥就失效了,无法用于SSH认证。你唯一的选择是重新生成一套新的SSH密钥对(公钥和私钥),然后按照步骤重新将新的公钥部署到服务器上,并用新的私钥在Xshell中配置连接。