Skip to content

SSH(OpenSSH)

SSH(Secure Shell)是一种加密网络协议,用于在不安全的网络中安全地远程登录和执行命令。OpenSSH 是最广泛使用的开源实现。

速查卡片

项目内容
远程登录ssh user@host
指定端口ssh -p 2222 user@host
指定密钥ssh -i ~/.ssh/id_ed25519 user@host
生成密钥ssh-keygen -t ed25519 -C "comment"
分发公钥ssh-copy-id user@host
拷贝文件scp file.txt user@host:/path/
递归拷贝scp -r dir/ user@host:/path/
本地端口转发ssh -L 8080:localhost:80 user@host
远程端口转发ssh -R 9090:localhost:3000 user@host
动态转发(SOCKS)ssh -D 1080 user@host
跳板机ssh -J jump@host target@internal
客户端配置~/.ssh/config
服务端配置/etc/ssh/sshd_config
调试连接ssh -vvv user@host
测试配置ssh -G host

概述

SSH 协议

SSH(Secure Shell)协议在两个不可信主机之间建立加密的安全通道,实现:

  • 远程登录:安全取代 telnet / rlogin
  • 命令执行:非交互式远程执行命令
  • 文件传输:通过 SCP / SFTP 安全拷贝文件
  • 端口转发:加密隧道代理 TCP 流量
  • X11 转发:安全运行远程图形程序

SSH 协议采用客户端-服务器架构,默认使用 TCP 22 端口。目前主流使用 SSH 协议版本 2(SSH-2),版本 1 因安全漏洞已被废弃。

OpenSSH 生态

OpenSSH 是 SSH 协议最广泛使用的开源实现,包含以下命令行工具:

命令用途
ssh远程登录客户端
scp安全文件拷贝
sftp交互式文件传输
ssh-keygen密钥生成与管理
ssh-copy-id公钥分发
ssh-agent密钥代理(缓存解密后的私钥)
ssh-add向 ssh-agent 添加密钥
ssh-keyscan批量收集主机公钥
sshdSSH 服务端守护进程

认证方式

SSH 支持多种认证方式,按默认尝试顺序:

  1. GSSAPI 认证(Kerberos)
  2. 基于主机的认证(host-based)
  3. 公钥认证(最推荐,安全且方便)
  4. 键盘交互式认证(keyboard-interactive)
  5. 密码认证(最简单但不推荐)

知识体系导航

SSH 知识体系按功能域划分为以下模块:

领域文档核心内容
核心命令ssh 客户端命令ssh 全部选项、远程执行、ControlMaster、X11 转发
密钥管理密钥管理ssh-keygen、ssh-copy-id、ssh-agent、authorized_keys
文件传输文件传输scp、sftp、rsync over SSH
高级隧道端口转发与隧道-L/-R/-D、ProxyJump、ProxyCommand、sshuttle
配置与安全配置与安全加固~/.ssh/config、sshd_config、安全最佳实践、排错

快速上手

第一次连接

bash
# 1. 生成密钥对(推荐 Ed25519)
ssh-keygen -t ed25519 -C "your_email@example.com"

# 2. 将公钥分发到远程主机
ssh-copy-id user@remote-host

# 3. 免密登录
ssh user@remote-host

常用连接模式

bash
# 基础登录
ssh user@192.168.1.100

# 指定端口
ssh -p 2222 user@host

# 指定密钥
ssh -i ~/.ssh/my_key user@host

# 登录后执行命令
ssh user@host 'ls -la /var/log'

# 强制分配伪终端(运行交互式程序)
ssh -t user@host top

创建客户端配置(免记忆长命令)

~/.ssh/config 中添加:

Host myserver
    HostName 192.168.1.100
    User root
    Port 2222
    IdentityFile ~/.ssh/my_key

之后只需 ssh myserver 即可连接。

版本与标准

  • 当前版本:OpenSSH 通常在各大发行版中保持更新
  • 协议版本:SSH Protocol 2(RFC 4250–4256)
  • 密钥类型推荐:Ed25519(最佳安全/性能比)、ECDSA、RSA(≥3072 位)

来源

来源链接
OpenSSH 官方文档https://man.openbsd.org/ssh
SSH 协议 RFChttps://datatracker.ietf.org/doc/rfc4251/
OpenSSH 项目主页https://www.openssh.com/