SSH 登录认证、端口转发与文件传输
ssh user@host
登录远程主机
ssh [选项] [用户名@]主机 [-p 端口]
ssh 远程执行命令
在远程主机执行一条命令后返回
ssh [用户名@]主机 '命令'
ssh-keygen
生成 SSH 密钥对
ssh-keygen -t 算法 [-C 注释] [-f 输出路径]
ssh-copy-id
把公钥安装到远程主机
ssh-copy-id [-i 公钥文件] [用户名@]主机
ssh-agent 与 ssh-add
在会话中缓存私钥口令
eval "$(ssh-agent -s)" && ssh-add ~/.ssh/私钥
~/.ssh/config 配置
为常用主机定义别名与参数
Host 别名 HostName 实际地址 User 用户名 IdentityFile ~/.ssh/私钥
ssh -vvv 调试连接
输出详细的连接协商过程
ssh -vvv [用户名@]主机
ssh-keygen 管理 known_hosts
查看与移除已知主机指纹
ssh-keygen -R 主机 ssh-keygen -F 主机
ssh-keygen -l 查看指纹
计算密钥指纹与类型
ssh-keygen -lf 公钥文件
ssh -L 本地端口转发
把本地端口转发到远端可访问的地址
ssh -L [本地地址:]本地端口:目标主机:目标端口 跳板主机
ssh -R 远程端口转发
把远端端口转发到本地服务
ssh -R [远端地址:]远端端口:目标主机:目标端口 远端主机
ssh -D 动态转发
启动 SOCKS 代理
ssh -N -D [本地地址:]本地端口 远端主机
ssh -J 跳板机
通过跳板机连接目标主机
ssh -J [用户@]跳板主机 [用户@]目标主机
保持 SSH 连接与隧道
避免空闲连接被中间设备断开
ssh -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -N -L 本地端口:目标:端口 主机
scp 复制文件
在本地与远程之间复制文件
scp [-r] 源路径 [用户名@]主机:目标路径
sftp 交互式传输
基于 SSH 的交互式文件传输
sftp [用户名@]主机 > put 本地文件 > get 远端文件
rsync over ssh
增量同步文件到远程主机
rsync -avz --delete -e ssh 源目录 [用户名@]主机:目标目录