🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

WinSCP SFTP连接与公钥认证完全指南

WinSCP是网站制作中不可或缺的文件传输工具。本文将为初学者详细解释从基本的SFTP连接步骤到如何设置更安全的“公钥认证”方法,并附有图片(示意图)。我们用通俗易懂的语言解释专业术语,并提供了可供复制粘贴的代码。来吧,让我们一起体验“能用”的感觉!🚀


WinSCP与SFTP基础

首先,让我们回顾一下基础知识。

什么是WinSCP?

WinSCP是一款在Windows上运行的开源文件传输客户端。它用于在本地计算机(您的PC)和远程服务器(存放网站的计算机)之间安全地传输文件。其魅力在于可以通过拖放操作直观地使用。

什么是SFTP?

SFTP(SSH File Transfer Protocol)是一种用于加密发送和接收文件的协议(通信规则)。与传统的FTP不同,SFTP的所有通信内容都经过加密,可以防止第三方窃听或篡改数据,因此非常安全。在现代Web制作中,SFTP连接已成为主流。


基本SFTP连接(密码认证)

首先,让我们尝试最简单的使用密码的SFTP连接方法。只需输入服务器合同时提供的信息,非常简单。

  1. 启动WinSCP后,将显示登录屏幕。
  2. 选择“新站点”并输入以下信息:
    • 文件协议: SFTP
    • 主机名: 服务器的主机名或IP地址(例如:`example.com`)
    • 端口号: 22(SFTP的标准端口,根据服务器的不同可能会有差异)
    • 用户名: 服务器的用户名(例如:`user01`)
    • 密码: 服务器的密码
  3. 输入完毕后,点击“保存”按钮。系统会询问站点名称,请输入一个容易识别的名称(例如:`我的网站`)然后按OK。
  4. 下次连接时,只需选择已保存的站点名称,然后点击“登录”即可。

仅凭这些操作,您就可以连接到服务器并上传或下载文件了。但是,为了进一步提高安全性,强烈建议您执行下一步——“公钥认证”。


【正题】WinSCP设置公钥认证的全步骤

密码认证虽然方便,但存在密码泄露后任何人都可以访问服务器的风险。因此,我们引入了公钥认证。这是一种使用“密钥”和“锁孔”配对进行认证的更高级、更安全的方法。

虽然设置步骤稍多,但只要一步步仔细操作就没问题。按照本指南操作,您一定能成功设置!

步骤1:创建密钥对(公钥和私钥)

首先,在您自己的PC上创建用于认证的“密钥对”。WinSCP附带了一个用于创建密钥的工具“PuTTYgen”。

  1. 在WinSCP登录屏幕下方,从“工具”中选择“运行PuTTYgen”。
  2. PuTTYgen启动后,确认窗口底部的“要生成的密钥类型”为“RSA”,然后点击“生成”按钮。
  3. 当显示“请在此窗口的空白区域移动鼠标以生成一些随机性”时,请随机移动鼠标光标。这将生成一个不可预测的唯一密钥。
  4. 当进度条满时,密钥生成完成。

🔑 设置和保存密钥信息

密钥生成后,需要进行一些设置。

  1. 复制公钥: 窗口顶部文本框中“用于粘贴到OpenSSH authorized_keys文件的公钥”下的字符串(以`ssh-rsa AAAA...`开头)就是您的公钥。稍后需要在服务器上设置它,因此请先将其全部复制并粘贴到文本编辑器中。
  2. 密钥的密码短语: 在“密钥的密码短语”和“确认密码短语”中输入密码。这是使用私钥的密码。它非常重要,因为即使第三方非法操作您的PC,没有这个密码短语也无法登录服务器。请务必设置。
  3. 保存私钥: 点击“保存私钥”按钮。会出现一个警告,但请选择“是”继续。将文件名命名为易于理解的名称,如“my-private-key”,并将其保存在PC的安全位置。这个`.ppk`文件绝不能泄露给他人。
  4. (可选)保存公钥: 您也可以通过“保存公钥”按钮将公钥另存为文件,但本次我们将使用刚才复制的字符串。

现在,您的PC上有了“私钥(.ppk文件)”,并且您的笔记中有了“公钥(以ssh-rsa开头的字符串)”。


步骤2:在服务器上设置公钥

接下来,将您刚刚创建的公钥部署到服务器上。此操作是为了告诉服务器:“允许持有与此公钥对应的私钥的人访问。”

首先,使用密码认证登录服务器一次。(如果服务器禁用了密码认证,您需要请求服务器管理员为您部署公钥)。

使用WinSCP连接到服务器后,通过顶部菜单的“命令”->“打开终端”或按`Ctrl+T`打开终端(黑色窗口)。然后,按顺序逐一执行以下命令。

1. 创建SSH配置目录并设置权限

创建一个专用于存放公钥的目录(文件夹)`~/.ssh`,并设置其权限,使其仅对所有者可读、可写、可执行。这是非常重要的安全步骤。

mkdir -p ~/.ssh && chmod 700 ~/.ssh

2. 将公钥写入authorized_keys文件

接下来,将公钥追加到名为`authorized_keys`的文件中。拥有此文件中所列公钥的用户将被允许访问。在执行以下命令之前,请将`"在此处粘贴您的公钥"`部分替换为您自己的公钥(从PuTTYgen复制的以`ssh-rsa AAAA...`开头的长字符串)。

echo "在此处粘贴您的公钥" >> ~/.ssh/authorized_keys

3. 设置authorized_keys文件的权限

最后,设置所创建的`authorized_keys`文件的权限,使其仅对所有者可读可写。这也是一项强制性的安全设置。

chmod 600 ~/.ssh/authorized_keys

至此,服务器端的设置已完成!您可以关闭终端了。


步骤3:在WinSCP中设置私钥并连接!

现在是最后一步了。我们来告诉WinSCP:“请使用这个私钥进行连接。”

  1. 返回WinSCP登录屏幕,选择您想配置的站点,然后点击“编辑”按钮。
  2. 将密码字段留
  3. 点击“高级...”按钮。将打开“高级站点设置”窗口。
  4. 从左侧树状菜单中选择“SSH”->“认证”。
  5. 在“认证参数”部分,点击“私钥文件”字段右侧的“...”按钮。
  6. 将打开一个文件选择对话框。选择您在步骤1中保存的私钥文件(.ppk文件)
  7. 点击“确定”按钮关闭高级设置,然后在登录屏幕上点击“保存”以更新配置。

现在一切准备就绪!尝试点击“登录”按钮吧。

此时,您看到的将不是密码输入提示,而是“输入密钥的密码短语”的提示。在这里,输入您在步骤1中设置的密码短语。

如果服务器的文件列表成功显示,那么使用公钥认证的SFTP连接就成功了!🎉


应用示例:公钥认证的优点

  • 提升安全性: 对抗密码暴力破解(brute-force attack)等攻击的能力非常强。由于没有私钥就无法登录,因此比仅使用密码的认证要安全得多。
  • 管理多个服务器: 如果在多个服务器上注册同一个公钥,您就可以用一个私钥(和密码短语)登录多个服务器,管理起来更方便。
  • 与自动化集成: 与脚本等结合使用时,无需直接在脚本中写入密码,从而可以构建更安全的自动化流程。

注意事项 ⚠️

  • 严格管理私钥: 私钥文件(.ppk)本身就是您的访问凭证。绝不要给他人看、泄露或上传到公共仓库(如GitHub)。使用U盘等物理方式进行管理也是一个好方法。
  • 密码短语的重要性: 如果不设置密码短语,一旦私钥文件泄露,第三方就可以无需密码短语登录服务器。请务必设置复杂的密码短语。
  • 服务器端的SSH配置: 本指南的步骤是基于服务器已启用SSH连接和公钥认证的前提。如果无法连接,您可能需要检查服务器的`sshd_config`文件设置,或联系您的托管服务提供商的支持。

总结:掌握安全的文件传输!

本次,我们详细解释了从使用WinSCP进行基本SFTP连接到设置更安全的公钥认证的全过程。起初可能觉得有点难,但一旦设置完成,之后的文件管理将变得非常安全和便捷。

作为一名Web开发者,保护客户的重要数据是一项至关重要的责任。请借此机会掌握公钥认证,实践更高一级的安全措施。