服务器管理

FinalShell 在 Windows 上搞定密钥登录,SFTP 传文件真的香!

2026-07-08 · FinalShell

FinalShell 在 Windows 上搞定密钥登录,SFTP 传文件真的香! 配图

每次连服务器,都要输入长长的密码,是不是很烦?尤其是在 Windows 上用 FinalShell 这样的工具管理服务器时,重复劳动简直要命。今天我们就来聊聊,怎么在 FinalShell 上配置 SSH 密钥,不仅能免密登录,还能通过 SFTP 方便地传输文件,一劳永逸地解决这个烦恼。本文以 FinalShell 4.5.3 版本为例,帮你快速上手。

1. 生成 SSH 密钥对

要实现密钥登录,首先需要一对 SSH 密钥:公钥和私钥。公钥放在服务器上,私钥保存在你的本地电脑。

你可以选择两种方式来生成密钥对:

1.1 使用 FinalShell 内置功能生成

FinalShell 自带了生成密钥对的功能,非常方便。打开 FinalShell 客户端,在顶部菜单栏找到“工具” -> “SSH密钥生成”。

  1. 打开密钥生成器:点击后会弹出一个小窗口,你可以看到默认的密钥类型是 RSA,长度通常为 2048 位(推荐)或 4096 位。密钥注释可以写点备注,比如你的邮箱或者服务器名称,方便以后识别。
  2. 设置密码(可选但推荐):为了私钥的安全性,建议给私钥设置一个密码(Passphrase)。这样即使私钥文件泄露,没有密码也无法使用。这个密码只在你第一次使用该私钥连接时输入,之后 FinalShell 会记住它。
  3. 生成并保存:点击“生成”按钮,密钥对就会生成。然后点击“保存私钥”和“保存公钥”,把它们存储在一个你找得到、并且安全的本地文件夹里。我通常会创建一个 ~/.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 上传公钥内容

  1. 查看公钥内容:在本地电脑上,找到你生成的公钥文件(例如 id_rsa.pub),用文本编辑器(如记事本、VS Code)打开它,复制里面的所有内容。它通常以 ssh-rsa 开头,以你的注释结尾。

  2. 添加到 authorized_keys:回到 FinalShell 连接的服务器终端,执行以下命令将公钥内容追加到 authorized_keys 文件中。记得把 你的公钥内容 替换成你刚才复制的实际内容。

    echo "你的公钥内容" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    

    重要提示:authorized_keys 文件的权限必须是 600,即只有文件所有者有读写权限。否则 SSH 服务会拒绝使用该文件进行认证,导致密钥登录失败。我测试时就曾因为权限问题卡了很久,一定要注意。

到这里,服务器端的配置就完成了。接下来,我们要告诉 FinalShell 使用这个私钥来连接。

3. 在 FinalShell 中配置密钥登录

现在,我们回到 FinalShell 客户端,配置会话使用刚才生成的私钥进行登录。

  1. 编辑会话:在 FinalShell 的左侧会话树中,找到你要配置的服务器,右键点击选择“编辑”。如果还没有会话,就新建一个。
  2. 切换认证方式:在弹出的“会话设置”窗口中,你会看到一个连接配置界面。在左侧的选项列表中,选择“认证”。然后在右侧的“认证方式”下拉框中,选择“PublicKey”。
  3. 指定私钥:点击“选择文件”按钮,找到并选中你之前保存的私钥文件(例如 id_rsa)。如果你的私钥有密码(Passphrase),请在“私钥密码”输入框中填写。
  4. 保存并连接:确认所有设置无误后,点击右下角的“保存”按钮。现在,你就可以尝试连接服务器了。如果一切顺利,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/。

延伸阅读

若需进一步查阅,可先看本站以下教程: