连接
以某用户身份连接到远程主机,可指定非标准端口,或执行单条命令后返回。ssh [user]@[host]ssh-p2222 [user]@[host]ssh [user]@[host] [command]
使用exit、logout或Ctrl+d结束会话。首次连接某主机时,SSH 会显示其密钥指纹并存储到 ~/.ssh/known_hosts。之后如果出现"host key changed"(主机密钥已更改)的警告,意味着服务器被重装,或有人正在拦截连接。如果会话挂起(网络断开),输入Enter ~ .强制关闭。密钥与免密登录
生成密钥对;ed25519是现代默认算法(仅在旧版服务器要求 RSA 时使用 -t rsa -b 4096)。私钥留在本机,公钥分发到服务器。ssh-keygen -t ed25519ssh-keygen -t rsa -b4096
ssh-copy-id [user]@[host]ssh -i [keyFile] [user]@[host]
SSH 代理将解密的密钥保存在内存中,因此带密码的密钥每个会话只需解锁一次。务必为私钥设置密码保护,并确保 ~/.ssh/id_ed25519 的权限为600。.pub 文件是安全可分享的。客户端配置
连接设置存储在~/.ssh/config中,每个主机一个配置块。配置完成后,ssh myserver即可替代完整的 user/host/port/key 参数组合,且 Tab 补全也能识别别名。Host myserver HostName server.example.com User admin Port 2222 IdentityFile ~/.ssh/id_ed25519 ssh myserver
传输文件
scp复制文件和目录(-r);rsync功能相同但支持断点续传且仅传输差异,更适合大文件或重复同步。scp [localFile] [user]@[host]:[remotePath]scp [user]@[host]:[remoteFile] .scp -r [localDir] [user]@[host]:[remoteDir]rsync -avz [localDir]/ [user]@[host]:[remoteDir]/
sftp提供交互式会话,支持get、put、ls和cd;sshfs将远程目录挂载为本地磁盘。sftp [user]@[host]sshfs [user]@[host]:[remoteDir] [localDir]fusermount -u [localDir]
端口转发
-L将远程服务映射到本地可访问:以下示例将服务器上 localhost:5432 运行的数据库暴露到你本地的 localhost:5432。-N仅打开隧道,不启动 Shell。ssh -L 5432:localhost:5432 [user]@[host]ssh -N -L 8080:internal-host:80 [user]@[gateway]
-R是反向操作:远程服务器上的某个端口转发到你的本机。ssh -R 8080:localhost:3000 [user]@[host]
-D将连接转为 SOCKS5 代理;将浏览器指向 localhost:9999 即可通过该服务器路由流量。ssh -D 9999 [user]@[host]
跳板主机与 X11
使用-J通过堡垒主机访问仅内网可达的机器,使用-X在连接上运行图形程序。ssh -J [user]@[bastion] [user]@[internalHost]ssh -X [user]@[host]
保持会话存活
发送保活包,使空闲连接在 NAT 超时后仍然存活;可以按主机或全局设置在 ~/.ssh/config 中配置。Host * ServerAliveInterval 60
对于必须经受断线的工作,在服务器上运行tmux:重新连接后附加会话,你的程序仍在运行(详见 Tmux 基础页面)。