SSH 命令速查表
SSH 最常用命令的快速参考,按功能分组,涵盖连接、密钥、传输、转发、配置和安全加固
基本连接
ssh user@host |
连接远程服务器 |
ssh -p 2222 user@host |
指定端口连接 |
ssh -i ~/.ssh/key user@host |
指定私钥连接 |
ssh user@host 'command' |
执行远程命令 |
ssh -J jump user@target |
通过跳板机连接 |
ssh -v user@host |
调试模式连接 |
密钥管理
ssh-keygen -t ed25519 -C "email" |
生成 Ed25519 密钥(推荐) |
ssh-keygen -t rsa -b 4096 |
生成 RSA 4096 位密钥 |
ssh-copy-id user@host |
复制公钥到远程服务器 |
ssh-add ~/.ssh/key |
添加密钥到 agent |
ssh-add -l |
列出 agent 中的密钥 |
ssh-add -D |
清除 agent 中所有密钥 |
eval $(ssh-agent -s) |
启动 SSH agent |
ssh-keygen -R hostname |
移除 known_hosts 中的主机记录 |
文件传输
scp file user@host:/path/ |
上传文件到远程 |
scp user@host:/path/file ./ |
从远程下载文件 |
scp -r dir/ user@host:/path/ |
递归上传目录 |
sftp user@host |
交互式文件传输 |
sftp> put local_file |
sftp 中上传文件 |
sftp> get remote_file |
sftp 中下载文件 |
rsync -avz -e ssh src/ user@host:dest/ |
增量同步(推荐) |
端口转发
ssh -NL 8080:localhost:80 user@host |
本地转发(访问远程服务) |
ssh -NR 8080:localhost:3000 user@host |
远程转发(暴露本地服务) |
ssh -ND 1080 user@host |
动态转发(SOCKS 代理) |
ssh -fNL 3307:db:3306 user@bastion |
后台运行本地转发 |
ssh -NL 3307:db:3306 -L 6380:redis:6379 user@host |
多端口同时转发 |
配置管理
vim ~/.ssh/config |
编辑 SSH 客户端配置 |
chmod 600 ~/.ssh/config |
设置配置文件权限 |
chmod 700 ~/.ssh |
设置 .ssh 目录权限 |
chmod 600 ~/.ssh/id_* |
设置私钥文件权限 |
ssh -O check user@host |
检查连接复用状态 |
ssh -O exit user@host |
关闭复用连接 |
ssh-keyscan host >> ~/.ssh/known_hosts |
预添加主机密钥 |
安全加固
PermitRootLogin no |
禁止 root 登录 |
PasswordAuthentication no |
禁用密码认证 |
AllowUsers user1 user2 |
用户白名单 |
MaxAuthTries 3 |
限制认证尝试次数 |
Port 2222 |
修改默认端口 |
sshd -t |
测试配置文件语法 |
systemctl restart sshd |
重启 SSH 服务 |