1. 简介

SSH(Secure Shell) 是一种广泛使用的网络协议,允许我们在不安全的网络(如互联网)上安全地访问远程计算机

在本教程中,我们将深入探讨 SSH 的基本概念、使用场景、常用命令及其高级功能。

2. 什么是 Secure Shell?

Secure Shell(或称 Secure Socket Shell)是一种网络协议,属于 OSI 七层模型中的应用层协议。它也指代实现该协议的一整套工具集。

SSH 支持多种认证方式,其中最常见的是:

  • 密码认证:用户通过输入用户名和密码登录远程服务器。
  • 密钥认证:用户使用一对加密密钥进行身份验证。密钥对由一个私钥(保存在本地)和一个公钥(上传至服务器)组成。

此外,SSH 协议会在通信双方之间加密所有数据传输,因此被广泛用于互联网上的远程访问。

3. SSH 架构

SSH 1

SSH 采用典型的 客户端-服务器架构。通常,服务器管理员安装 SSH 服务端程序,监听并接受或拒绝客户端连接。默认情况下,SSH 服务监听 TCP 22 端口

4. SSH 的典型使用场景

SSH 几乎在所有服务器操作系统中都是默认安装的。其使用场景包括但不限于:

  • ✅ 本地与远程主机之间的通信
  • ✅ 远程访问服务器资源
  • ✅ 在远程主机上执行命令
  • ✅ 执行系统管理任务(如部署、调试、日志查看)

此外,SSH 的密钥认证机制还支持跨主机的 单点登录(SSO),用户可在多个账户之间切换而无需反复输入密码。

5. 常用 SSH 命令

SSH 工具集提供了多个命令,用于实现不同功能:

  • ssh:用于登录远程主机或执行远程命令
  • sshd:SSH 服务端守护进程,负责监听并处理客户端连接请求
  • ssh-keygen:生成 SSH 密钥对,用于自动登录和主机认证
  • ssh-copy-id:将本地公钥复制到远程主机,配置密钥登录
  • scp:基于 SSH 的安全文件复制命令(类似 RCP)
  • sftp:基于 SSH 的安全文件传输协议(类似 FTP)

6. 如何使用 SSH?

最基础的 SSH 使用方式是通过命令行登录远程主机:

ssh admin@server.example.com

上述命令中:

  • admin 是远程服务器上的用户名
  • server.example.com 是目标主机名(也可以使用 IP 地址)

例如,以下命令使用 root 用户登录 IP 地址为 10.1.1.2 的服务器:

ssh root@10.1.1.2

6.1 创建密钥对

使用以下命令生成 SSH 密钥对:

ssh-keygen -t rsa

该命令会生成一个 RSA 类型的密钥对,其中:

  • id_rsa:私钥文件(必须保密)
  • id_rsa.pub:公钥文件(可上传到远程服务器)

6.2 复制文件

使用 scp 命令可以在本地和远程主机之间安全地复制文件:

scp fileName user@remotehost:destinationPath

其中:

  • fileName 是本地文件名
  • user@remotehost:destinationPath 表示远程主机的用户、主机名和目标路径

例如:

scp myfile.txt user@example.com:/home/user/

7. SSH 隧道(端口转发)

SSH 隧道是一种通过 SSH 连接在本地和远程主机之间建立安全通道的技术。其主要用途是:

  • 转发本地端口到远程主机
  • 将远程服务映射到本地
  • 实现内网穿透或安全访问受限资源

例如,以下命令将本地 8080 端口转发到远程主机的 80 端口:

ssh -L 8080:localhost:80 user@remotehost

这样,访问本地的 localhost:8080 实际上访问的是远程主机的 localhost:80

8. 总结

本文介绍了 SSH 协议的基本概念、架构、使用场景及常用命令。我们还讨论了密钥认证、文件复制、以及 SSH 隧道等实用功能。

✅ SSH 是现代系统管理、自动化部署和安全通信不可或缺的工具之一。
❌ 忽略其安全性设置(如弱密码或未禁用 root 登录)可能导致严重安全隐患。
⚠️ 建议在生产环境中优先使用密钥认证,并定期审计 SSH 配置。


原始标题:Introduction to SSH