跳到主要内容

SSH, FTP 与 SFTP

安全地管理远程服务器和交换文件是现代开发及运维工作中不可或缺的部分。了解 SSH 和 FTP/SFTP 协议对于安全配置和管理网络至关重要。

SSH (Secure Shell)

什么是 SSH?

SSH (Secure Shell) 是一项基于 TCP (默认端口 22) 的安全协议,它能在不安全的网络(如互联网)中为两台计算机之间提供加密的通信。

核心功能

  1. 远程登录 (Remote Login): 安全地由一台计算机登录到另一台。
  2. 命令执行 (Command Execution): 在远程主机上安全地执行命令。
  3. 数据传输 (Data Transfer): 为 SFTP、SCP 提供安全底层。

工作原理

第一阶段:协商与密钥交换

为了确保建立加密连接,在数据流传之前的过程通常涉及到 基于公钥/私钥的身份验证 以及对称密钥的协商。

第二阶段:身份验证方式

  • 口令验证 (Password): 使用用户名和密码(容易被暴力破解)。
  • 公钥验证 (Public Key): 推荐做法。将自己的“公钥”上传到服务器,使用“私钥”进行签名验证。

FTP (File Transfer Protocol)

什么是 FTP?

FTP (File Transfer Protocol) 是一种基于 TCP (端口 20, 21) 的协议,专门用于在网络上交换文件。

工作模式 (双重连接)

FTP 使用两个独立的连接来实现通信:

  1. 控制连接 (Control Connection): 端口 21,用于发送命令(如 ls, cd, put, get)。
  2. 数据连接 (Data Connection): 端口 20 或一个随机高位端口,用于实际的文件内容传输。

二进制模式 vs ASCII 模式

  • ASCII: 用于纯文本(会自动转换换行符)。
  • Binary: 用于程序、图片等(按字节原样传输)。

SFTP (Secure File Transfer Protocol)

什么是 SFTP?

SFTP 是 SSH 的一个子系统,它利用 SSH 的安全性来提供文件传输服务。其默认端口为 22

SFTP vs FTP 的优势

  • 安全性: 所有数据(包括用户名和密码)在传输过程中都会被加密。
  • 协议单一性: 只需要一个连接(端口 22)即可完成控制和数据传输。
  • 防止篡改: 每个数据分组都会被计算签名以防止传输中断或遭黑客篡改。

结论

在实际生产环境中,SFTP 已基本取代了传统的 FTP,因为它是更快捷且更安全的文件交换方式。对于远程管理而言,则应始终根据安全标准使用 SSH。