服务器管理
FinalShell 在 Windows 上搞定密钥登录,SFTP 传文件真的香!
每次连服务器,都要输入长长的密码,是不是很烦?尤其是在 Windows 上用 FinalShell 这样的工具管理服务器时,重复劳动简直要命。今天我们就来聊聊,怎么在 FinalShell 上配置 SSH 密钥,不仅能免密登录,还能通过 SFTP 方便地传输文件,一劳永逸地解决这个烦恼。本文以 FinalShell 4.5.3 版本为例,帮你快速上手。
1. 生成 SSH 密钥对
要实现密钥登录,首先需要一对 SSH 密钥:公钥和私钥。公钥放在服务器上,私钥保存在你的本地电脑。
你可以选择两种方式来生成密钥对:
1.1 使用 FinalShell 内置功能生成
FinalShell 自带了生成密钥对的功能,非常方便。打开 FinalShell 客户端,在顶部菜单栏找到“工具” -> “SSH密钥生成”。
- 打开密钥生成器:点击后会弹出一个小窗口,你可以看到默认的密钥类型是 RSA,长度通常为 2048 位(推荐)或 4096 位。密钥注释可以写点备注,比如你的邮箱或者服务器名称,方便以后识别。
- 设置密码(可选但推荐):为了私钥的安全性,建议给私钥设置一个密码(Passphrase)。这样即使私钥文件泄露,没有密码也无法使用。这个密码只在你第一次使用该私钥连接时输入,之后 FinalShell 会记住它。
- 生成并保存:点击“生成”按钮,密钥对就会生成。然后点击“保存私钥”和“保存公钥”,把它们存储在一个你找得到、并且安全的本地文件夹里。我通常会创建一个
~/.ssh目录来专门存放它们。

1.2 使用命令行工具生成(如果你习惯)
如果你更喜欢命令行,也可以在 Windows 的 Git Bash 或 WSL 中使用 ssh-keygen 命令来生成:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
这个命令会引导你完成密钥生成过程,包括选择保存路径和设置私钥密码。默认情况下,它会在 ~/.ssh 目录下生成 id_rsa (私钥) 和 id_rsa.pub (公钥) 文件。
生成完密钥对后,请确保你的私钥文件(通常是没有 .pub 后缀的那个)安全地保存在本地电脑上,不要随意泄露。
2. 将公钥上传到服务器
公钥需要上传到你要连接的 Linux 服务器上,并添加到用户的 ~/.ssh/authorized_keys 文件中。这个文件决定了哪些公钥可以用于免密登录。
2.1 准备服务器环境
首先,你需要通过传统的密码方式登录一次服务器。登录后,确保你的用户主目录下有 .ssh 目录。如果没有,可以手动创建并设置正确权限:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
2.2 上传公钥内容
-
查看公钥内容:在本地电脑上,找到你生成的公钥文件(例如
id_rsa.pub),用文本编辑器(如记事本、VS Code)打开它,复制里面的所有内容。它通常以ssh-rsa开头,以你的注释结尾。 -
添加到
authorized_keys:回到 FinalShell 连接的服务器终端,执行以下命令将公钥内容追加到authorized_keys文件中。记得把你的公钥内容替换成你刚才复制的实际内容。echo "你的公钥内容" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys重要提示:
authorized_keys文件的权限必须是600,即只有文件所有者有读写权限。否则 SSH 服务会拒绝使用该文件进行认证,导致密钥登录失败。我测试时就曾因为权限问题卡了很久,一定要注意。
到这里,服务器端的配置就完成了。接下来,我们要告诉 FinalShell 使用这个私钥来连接。
3. 在 FinalShell 中配置密钥登录
现在,我们回到 FinalShell 客户端,配置会话使用刚才生成的私钥进行登录。
- 编辑会话:在 FinalShell 的左侧会话树中,找到你要配置的服务器,右键点击选择“编辑”。如果还没有会话,就新建一个。
- 切换认证方式:在弹出的“会话设置”窗口中,你会看到一个连接配置界面。在左侧的选项列表中,选择“认证”。然后在右侧的“认证方式”下拉框中,选择“PublicKey”。
- 指定私钥:点击“选择文件”按钮,找到并选中你之前保存的私钥文件(例如
id_rsa)。如果你的私钥有密码(Passphrase),请在“私钥密码”输入框中填写。 - 保存并连接:确认所有设置无误后,点击右下角的“保存”按钮。现在,你就可以尝试连接服务器了。如果一切顺利,FinalShell 将不再要求你输入密码,直接通过密钥认证登录成功。
如果登录时遇到问题,可以参考 /blog/finalshell-windows-install-guide/ 这篇文章,确保你的 FinalShell 客户端安装正确。
4. 使用 SFTP 传输文件
密钥登录配置完成后,FinalShell 的 SFTP 文件传输功能也会变得更加便捷和安全。
当你的 FinalShell 会话通过密钥成功连接到服务器后,你会发现主界面下方或者侧边栏有一个“文件”或“SFTP”标签页。点击这个标签页,FinalShell 会自动建立一个 SFTP 连接,无需你再输入密码。
你可以像操作本地文件管理器一样,在 FinalShell 的 SFTP 界面中进行文件的上传、下载、删除、重命名等操作。左侧是你的本地文件系统,右侧是服务器上的文件系统。直接拖拽文件就可以实现快速传输,非常方便。
如果你需要更详细的 SFTP 操作指南,可以查阅 /blog/finalshell-sftp-file-transfer/ 这篇文章。
常见问题
在使用 FinalShell 进行密钥登录和 SFTP 传输时,你可能会遇到一些问题。这里我整理了几个常见的问题和解决办法:
1. 提示“认证失败”或“Permission denied (publickey)”?
- 检查私钥是否正确:确保你在 FinalShell 中选择的是正确的私钥文件,并且私钥密码(如果有的话)输入正确。
- 检查服务器上的公钥:登录到服务器,确认
~/.ssh/authorized_keys文件中包含了你的完整公钥内容,并且没有多余的空格或换行符。最常见的错误就是复制时只复制了一部分。 - 检查
authorized_keys文件权限:服务器上~/.ssh目录的权限必须是700(drwx------),~/.ssh/authorized_keys文件的权限必须是600(-rw-------)。如果权限不对,SSH 服务会直接忽略这个文件。你可以使用ls -ld ~/.ssh和ls -l ~/.ssh/authorized_keys命令来查看权限,并用chmod命令修改。 - 检查
sshd_config配置:极少数情况下,服务器的 SSH 服务配置 (/etc/ssh/sshd_config) 可能禁用了公钥认证。确保PubkeyAuthentication yes没有被注释掉,并且AuthorizedKeysFile .ssh/authorized_keys指向正确。修改后需要重启 SSH 服务systemctl restart sshd。
2. SFTP 连接失败或文件传输中断?
- 网络问题:检查你的网络连接是否稳定。服务器的网络状况也可能影响 SFTP 传输。
- 防火墙设置:服务器的防火墙(如
firewalld或ufw)可能阻止了某些端口的通信。虽然 SSH 默认是 22 端口,SFTP 通过 SSH 隧道传输,但如果 SSH 端口被更改或限制,SFTP 也会受影响。确保 SSH 端口是开放的。 - 服务器磁盘空间:如果你在上传文件时遇到问题,可能是服务器上的目标目录磁盘空间不足。使用
df -h命令检查磁盘使用情况。
3. 私钥密码每次输入很麻烦?
FinalShell 通常会记住私钥密码,但如果你清理了缓存或在其他电脑上使用,可能需要重新输入。为了安全,建议你还是给私钥设置密码。如果实在觉得麻烦,并且你对电脑安全性有足够信心,也可以在生成私钥时不设置密码,但我不推荐这种做法,风险较高。
掌握了 FinalShell 的密钥登录和 SFTP 文件传输,你的服务器管理效率会大大提升。希望这篇教程能帮助你告别手动输入密码的烦恼,享受更流畅、更安全的服务器操作体验。如果你还想了解 FinalShell 的端口转发功能,可以看看这篇文章:/blog/finalshell-port-forwarding-guide/。
延伸阅读
若需进一步查阅,可先看本站以下教程: