在日常的 Linux 服务器运维工作中,我们经常需要通过 SSH 协议连接到远程服务器进行操作。传统的使用密码登录方式虽然简单,但在安全性和便捷性上存在明显短板。尤其是在管理大量服务器、进行自动化脚本部署或是面对复杂的网络环境时,密码登录的效率低下和安全隐患便会日益凸显。
FinalShell 作为一款功能强大的 SSH 客户端工具,不仅提供了丰富多样的会话管理、性能监控、SFTP 文件传输等实用功能,更集成了完善的 SSH 密钥对管理机制,让免密登录变得轻而易举。本文将详细介绍如何在 FinalShell 中配置 PublicKey/PrivateKey(公钥/私钥)实现免密、快捷且安全的登录,助您将运维效率提升到新的高度。
为什么选择密钥登录?安全性与便捷性的双重升级
密码登录的本质是“你知道什么”(Something You Know),它的安全性高度依赖于密码的复杂度和用户的记忆。弱密码、重复使用密码、键盘记录以及暴力破解攻击,都可能轻易突破密码防线。
相比之下,SSH 密钥对登录基于非对称加密原理,其安全性远超传统密码。它依赖于一对关联的密钥:一个公钥(PublicKey)和一个私钥(PrivateKey)。
- 公钥:可以公开发布,存放在远程服务器上。
- 私钥:必须严格保密,存放在本地客户端。
当客户端尝试连接服务器时,服务器会使用公钥对客户端发送的数据进行加密,只有拥有对应私钥的客户端才能解密并响应。这个过程无需传输任何密码,从而有效避免了密码泄露的风险。同时,一旦配置成功,您将无需手动输入密码,实现一键登录,极大地提升了运维效率和体验。
在FinalShell中生成SSH密钥对
配置密钥登录的第一步是生成一对 SSH 密钥。FinalShell 内置了便捷的密钥生成工具,让整个过程变得非常简单。
-
打开 FinalShell 密钥管理器:启动 FinalShell 客户端,在顶部菜单栏中找到“工具”选项,然后选择“SSH密钥管理”。这将打开一个专门的密钥管理窗口。
-
创建新密钥:在 SSH 密钥管理窗口中,点击左下角的“新建”按钮。
-
配置密钥参数:
- 密钥类型:建议选择
RSA或Ed25519。Ed25519是一种更现代、更安全的算法,推荐优先选择。RSA也是广泛支持的选择,建议选择4096位以获得更高的安全性。 - 密钥名称:给你的密钥对起一个有意义的名字,例如
my_server_key或project_x_admin,方便日后识别和管理。 - 密码(Passphrase):强烈建议为私钥设置一个复杂的密码。这个密码会在每次使用私钥时要求输入,即使私钥文件本身泄露,没有这个密码也无法使用。这将为您的私钥提供额外一层保护。如果您是为了实现完全的免密自动化,也可以选择不设置密码,但请务必妥善保管私钥。
- 保存位置:FinalShell 会默认将生成的私钥文件(通常是
.pem或没有扩展名的文件)和公钥文件(.pub扩展名)保存在其配置目录下。您可以选择一个安全且易于管理的位置保存私钥。
FinalShell 密钥生成界面展示,方便用户直观操作生成 SSH 密钥对。 - 密钥类型:建议选择
-
生成并保存:点击“生成”按钮,FinalShell 将为您生成公钥和私钥。完成后,请务必确认私钥文件已安全保存到指定位置。
如果您尚未安装 FinalShell,或者想了解更多基础操作,可以访问我们的 FinalShell 官方下载渠道 获取最新版本,并通过 FinalShell Windows安装指南 完成安装配置。
上传PublicKey到远程服务器
生成密钥对后,下一步是将公钥上传到您希望免密登录的远程 Linux 服务器。
-
获取公钥内容: 在 FinalShell 的 SSH 密钥管理界面,选中您刚刚生成的密钥对,在下方会显示公钥(Public Key)的完整内容。复制这些内容。公钥通常以
ssh-rsa AAAA...或ssh-ed25519 AAAA...开头。 -
登录远程服务器: 您需要使用传统的密码方式登录一次目标服务器,或者通过 FinalShell 的 SFTP 功能进行文件操作。
-
创建或编辑
authorized_keys文件:- 登录到服务器后,进入您的用户主目录(通常是
~,即/home/your_username/)。 - 检查是否存在
.ssh目录。如果不存在,请创建它:mkdir -p ~/.ssh chmod 700 ~/.ssh - 进入
.ssh目录:cd ~/.ssh - 将复制的公钥内容添加到
authorized_keys文件中。如果文件不存在,则创建它;如果存在,则将新公钥追加到文件末尾。请注意,每行一个公钥。
将echo "your_public_key_content_here" >> ~/.ssh/authorized_keysyour_public_key_content_here替换为您从 FinalShell 复制的完整公钥内容。 - 设置
authorized_keys文件的正确权限:chmod 600 ~/.ssh/authorized_keys - 这些权限设置至关重要:
.ssh目录必须只有所有者有写权限 (700),authorized_keys文件必须只有所有者有读写权限 (600)。否则 SSH 服务会出于安全考虑拒绝使用该文件。
- 登录到服务器后,进入您的用户主目录(通常是
配置FinalShell使用PrivateKey免密登录
公钥上传到服务器并设置好权限后,现在就可以在 FinalShell 中配置使用私钥进行免密登录了。
-
编辑服务器连接: 在 FinalShell 的主界面,找到您要配置免密登录的服务器连接,右键点击,选择“编辑”。
-
配置认证方式: 在弹出的“服务器配置”窗口中,切换到“认证”或“SSH认证”标签页(具体名称可能因版本略有不同)。
- 在“认证方式”部分,选择“密钥登录”。
- 点击“私钥文件”旁边的文件夹图标,浏览并选择您之前在 FinalShell 中生成的私钥文件(例如
my_server_key)。 - 如果您的私钥设置了密码(Passphrase),请在“密钥密码”字段中输入。如果未设置,则留空。
SSH 密钥对认证示意图,展示私钥在客户端与公钥在服务器之间的安全交互。 -
保存并测试: 点击“确定”保存服务器配置。现在,尝试双击该服务器连接。如果一切配置正确,FinalShell 将无需密码直接连接到远程服务器(如果私钥有密码,则会弹出提示输入私钥密码)。
恭喜!您已成功配置 FinalShell 实现 SSH 密钥免密登录。
SSH密钥对登录的高级安全实践
为了进一步提高服务器的安全性,建议您在配置密钥登录后采取以下高级安全措施:
- 禁用密码登录:在确认密钥登录稳定可用后,可以在服务器上禁用 SSH 密码登录。
- 编辑 SSH 配置文件
/etc/ssh/sshd_config:sudo vi /etc/ssh/sshd_config - 找到以下行并修改或添加:
PasswordAuthentication no PubkeyAuthentication yes - 保存文件并重启 SSH 服务(不同系统命令可能不同):
sudo systemctl restart sshd # Debian/Ubuntu/CentOS 7+ # 或者 sudo service sshd restart # CentOS 6 / Older systems - 重要提示:在禁用密码登录之前,请务必确保您的密钥登录功能已完全验证通过,并且您已拥有可用的 SSH 密钥对,否则您可能会失去对服务器的访问权限。
- 编辑 SSH 配置文件
- 使用强密码保护私钥:即使是免密登录,也强烈建议为私钥设置一个强大的密码。这为私钥文件提供了一层额外的加密保护。
- 限制 Root 用户直接 SSH 登录:出于安全考虑,不建议直接允许 Root 用户通过 SSH 登录。可以修改
/etc/ssh/sshd_config中的PermitRootLogin为no,然后通过普通用户登录后再使用su或sudo -i切换到 Root 用户。 - 定期更换密钥:如同密码一样,密钥也应定期更换,以降低长期暴露的风险。
常见问题
在配置 FinalShell 密钥登录的过程中,用户可能会遇到一些常见问题。
1. 为什么上传公钥后仍然需要密码?
这通常是由于服务器端的权限设置不正确、SSH 服务配置限制或公钥内容有误导致的。
- 权限问题:请再次检查
~/.ssh目录权限是否为700,~/.ssh/authorized_keys文件权限是否为600。 sshd_config配置:确认服务器的/etc/ssh/sshd_config文件中PubkeyAuthentication yes已经开启,并且没有其他配置(例如AuthorizedKeysFile)指向错误的文件路径。- SELinux/AppArmor 限制:在某些安全增强型 Linux 发行版中,SELinux 或 AppArmor 可能会阻止 SSH 访问密钥文件。您可以检查相关日志 (
/var/log/auth.log或/var/log/secure) 获取更多信息。 - 公钥内容错误:确保您复制的公钥内容完整且没有额外的换行符或空格。
2. 忘记私钥密码怎么办?
如果您的私钥设置了密码,并且忘记了密码,那么很遗憾,没有办法恢复这个密码。您需要重新生成一对新的密钥对,并将新的公钥上传到所有相关服务器。因此,请务必将私钥密码牢记或安全保管。
3. 多个服务器共用一个密钥对是否安全?
从便捷性角度来看,共用密钥对可以简化管理。但从安全性角度来看,不推荐所有服务器共用同一个密钥对。一旦这个私钥泄露,所有使用该私钥进行认证的服务器都将面临风险。最佳实践是为不同的服务器、项目或角色创建独立的密钥对。
4. 密钥文件损坏或丢失怎么办?
私钥文件一旦丢失或损坏,您将无法通过密钥方式登录服务器。解决方法是重新生成一对密钥对,并将新的公钥上传到服务器。如果私钥文件丢失且服务器已禁用密码登录,您可能需要通过服务器控制台或云服务商提供的 VNC 登录方式进入系统,然后重新配置 SSH。
在处理这些问题时,确保您的 FinalShell 客户端以及远程服务器的配置都是最新的。您可以查阅我们的 FinalShell Windows安装指南 确保客户端安装无误。
总结
SSH 密钥对登录是现代 Linux 运维的基石,它不仅极大地提升了登录效率,更是保障服务器安全的重要防线。通过 FinalShell 强大的密钥管理功能,您可以轻松实现免密登录的配置,告别繁琐的密码输入,让您的日常运维工作更加顺畅和高效。
希望这篇教程能帮助您更好地利用 FinalShell 的强大功能,享受快捷安全的服务器管理体验。如果您是 FinalShell 的新用户,建议您首先查阅 FinalShell 首次连接服务器教程,以便更好地掌握基础连接技巧。
延伸阅读
若需进一步查阅,可先看本站以下教程: