SSH 备忘录

备忘录

记录一下我用到的 SSH 命令。

config 文件

SSH 客户端的用户级配置文件通常位于 ~/.ssh/config(系统级配置位于 /etc/ssh/ssh_config)。

配置项:

1
2
3
4
5
6
Host <别名>
HostName <IP地址或域名>
User <用户名>
Port <端口号>
IdentityFile <私钥路径>
IdentitiesOnly yes # 只使用指定的私钥进行认证

连接使用 ssh <别名>

ssh -L 本地端口转发

SSH 端口转发主要有三种:

  • 本地转发(Local Forwarding,ssh -L):将本地端口映射到远程
  • 远程转发(Remote Forwarding,ssh -R):将远程端口映射到本地
  • 动态转发(Dynamic Forwarding,ssh -D):创建 SOCKS 代理

其中 ssh -L 最常用于访问远程内网服务。

未配置 config 文件时:

1
ssh -L <本地端口>:<目标地址>:<目标端口> <用户>@<跳板机>

配置 config 文件后:

1
ssh -L <本地端口>:<目标地址>:<目标端口> <别名>

例如:

1
ssh -L 8080:localhost:80 server

含义:通过 SSH 连接到 server,将本机 8080 端口的流量经由 server 转发到 server 视角下localhost:80(即服务器自己的 80 端口)。目标地址不仅可以是 localhost,也可以是服务器内网中的其他机器(如 192.168.1.100:3306),常用于内网穿透或运维内网服务。

常用命令

ssh-copy-id — 免密登录

将本机公钥追加到服务器的 ~/.ssh/authorized_keys,一条命令配置好免密登录:

1
ssh-copy-id user@server

推荐使用 ed25519 算法生成密钥对:

1
ssh-keygen -t ed25519 -C "your_email@example.com"

scp — 文件传输

基于 SSH 的文件复制命令:

1
2
3
4
5
6
7
8
# 上传文件到服务器
scp file.txt server:/tmp/

# 从服务器下载文件
scp server:/tmp/file.txt .

# 上传整个目录
scp -r ./data server:/tmp/

rsync — 增量同步

scp 更高效,支持增量传输和断点续传:

1
rsync -avz ./data server:/backup/

进阶 config 选项

1
2
3
4
5
6
7
8
Host my-server
HostName 192.168.1.100
User ubuntu
Port 22
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
ServerAliveInterval 60 # 每60秒发心跳,防止超时断开
ForwardAgent yes # 转发 SSH Agent,跳板机场景常用

ProxyJump — 跳板机

通过跳板机连接内网服务器:

1
2
3
4
5
6
7
8
Host bastion
HostName 1.2.3.4
User jump-user

Host internal
HostName 10.0.0.10
User ubuntu
ProxyJump bastion

配置后直接 ssh internal 即可自动经由跳板机连接。

参考链接


SSH 备忘录
https://qinghehe.site/2026/04/08/ssh-备忘录/
作者
青禾
发布于
2026年4月8日
许可协议