SSH 客户端常用指令与配置速查手册

SSH 就像一把钥匙,但倒霉的是,你永远不知道它开的是服务器的大门,还是你那台忘了密码的旧电脑。

一、远程连接基础命令

标准登录

bash 复制代码
ssh user@host

示例:ssh root@192.168.1.100

指定端口登录

bash 复制代码
ssh -p 端口 user@host

示例:ssh -p 2222 deploy@example.com

使用指定私钥登录

bash 复制代码
ssh -i 私钥文件 user@host

示例:ssh -i ~/.ssh/id_ed25519 root@server

执行单条命令后退出

bash 复制代码
ssh user@host 'command'

示例:ssh root@server 'ls -la /var/log'

退出远程会话

bash 复制代码
exit

或按 Ctrl + D


二、密钥管理与认证

生成 ED25519 密钥对(现代推荐,安全性高且速度快)

bash 复制代码
ssh-keygen -t ed25519

一路回车,默认生成在 ~/.ssh/id_ed25519

生成 RSA 密钥对(兼容性更好)

bash 复制代码
ssh-keygen -t rsa -b 4096

示例:ssh-keygen -t rsa -b 4096 -C "email@example.com"

推送公钥到远程服务器(实现免密登录)

bash 复制代码
ssh-copy-id user@host

示例:ssh-copy-id root@192.168.1.100

将私钥加载到 ssh-agent 缓存

bash 复制代码
ssh-add ~/.ssh/私钥名

示例:ssh-add ~/.ssh/id_ed25519

列出已缓存的密钥

bash 复制代码
ssh-add -l

清除 known_hosts 中的主机记录(主机密钥变更时使用)

bash 复制代码
ssh-keygen -R host

示例:ssh-keygen -R 192.168.1.100

测试 GitHub SSH 连接

bash 复制代码
ssh -T git@github.com

成功时返回:Hi username! You've successfully authenticated...


三、端口转发(隧道)

本地端口转发:将远程主机的端口映射到本地,访问本地端口即访问远程服务

bash 复制代码
ssh -L 本地端口:目标主机:目标端口 user@跳板机

示例:ssh -L 8080:localhost:80 root@server

效果:访问本机 8080 端口即访问 server 的 80 端口

远程端口转发:将本地服务暴露到远程主机的指定端口

bash 复制代码
ssh -R 远程端口:本地主机:本地端口 user@远程主机

示例:ssh -R 9090:localhost:3000 root@server

效果:他人访问 server 的 9090 端口即访问本地的 3000 端口

动态端口转发(SOCKS5 代理)

bash 复制代码
ssh -D 本地端口 user@host

示例:ssh -D 1080 root@server

效果:本地 1080 端口变成 SOCKS5 代理,流量经远程主机转发

纯隧道模式(不执行远程命令)

bash 复制代码
ssh -N -L 8080:host:80 user@host

示例:ssh -N -L 8080:internal:80 root@server

后台运行隧道

bash 复制代码
ssh -f -N -L 8080:localhost:80 user@host

允许其他主机访问本地转发端口(默认只绑定 127.0.0.1)

bash 复制代码
ssh -g -L 8080:localhost:80 user@host

四、调试与排错

输出连接调试信息

bash 复制代码
ssh -v user@host

-v 详细,-vv 更详细,-vvv 最详细

示例:ssh -vvv root@192.168.1.100

设置连接超时时间

bash 复制代码
ssh -o ConnectTimeout=秒数 user@host

示例:ssh -o ConnectTimeout=10 root@server

跳过主机密钥确认(仅测试环境,生产有安全风险)

bash 复制代码
ssh -o StrictHostKeyChecking=no user@host

示例:ssh -o StrictHostKeyChecking=no root@192.168.1.100

指定非默认配置文件

bash 复制代码
ssh -F 配置文件 user@host

示例:ssh -F /tmp/ssh_config root@server


五、客户端配置文件 ~/.ssh/config

通过配置文件可以为不同主机设置别名、端口、用户名、私钥等参数,大幅简化命令。

配置文件示例:

bash 复制代码
Host prod
    HostName 192.168.1.100
    User deploy
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

Host dev
    HostName dev.example.com
    User admin
    ProxyJump jump-server

配置完成后,直接执行 ssh prod 即可,无需输入完整参数。


六、常用场景速查

首次登录新服务器

bash 复制代码
ssh root@host

输入密码完成首次登录

配置免密登录流程

bash 复制代码
ssh-keygen
ssh-copy-id user@host

登录非标准端口服务器

bash 复制代码
ssh -p 2222 user@host

临时测试远程 Web 服务

bash 复制代码
ssh -L 8080:localhost:80 user@host

之后在本地浏览器访问 localhost:8080

将本地服务临时暴露给同事

bash 复制代码
ssh -R 9090:localhost:3000 user@host

同事访问你的服务器 9090 端口即可

连接失败排查

bash 复制代码
ssh -vvv user@host

查看详细连接日志定位问题

在远程服务器执行一条命令

bash 复制代码
ssh user@host 'df -h'

七、注意事项

  1. 私钥权限 :私钥文件权限必须设为 600400,否则 SSH 会拒绝使用

    bash 复制代码
    chmod 600 ~/.ssh/id_ed25519
  2. 连接缓慢 :若连接过程卡顿,可能是服务端开启了 DNS 反向解析。可在服务端 /etc/ssh/sshd_config 中设置 UseDNS no 并重启 sshd。

  3. 端口安全:建议将默认的 22 端口修改为高位端口,减少被暴力破解的风险。

  4. 配置文件区分

    • 客户端配置文件位于 ~/.ssh/config
    • 服务端配置文件位于 /etc/ssh/sshd_config
    • 修改服务端配置后需执行 systemctl restart sshd 生效
  5. 转发安全 :使用 -g 参数允许其他主机访问转发端口时需谨慎,确保网络安全策略允许。

相关推荐
pt10431 小时前
Cisco Splunk for AI Operations:AIOps机器学习
运维·网络·人工智能·机器学习
putItInYourHand1 小时前
Docker Compose 部署 Mosquitto MQTT Broker 完整实战指南
运维·docker·容器
Larru-Sun1 小时前
Nginx + Vue Router 基础:SPA History 部署、反向代理与请求分流
运维·vue.js·nginx
考虑考虑9 小时前
cmd局部设置java变量
运维·后端·自动化运维
我爱吃土豆110 小时前
AI 编程工具远程开发指南:Codex 桌面版与 WorkBuddy 通过 SSH 连接云服务器实践
服务器·人工智能·ssh
生活爱好者!10 小时前
哇!影视新玩法!docker部署NEOWATCH NAS
运维·docker·容器
一技安身10 小时前
【信创】银河麒麟V10、统信UOS解压7Z文件
linux·运维·服务器
迷途呀11 小时前
CI/CD 自动化部署实践:让代码提交后自动上线
linux·运维·nginx·ci/cd·自动化
闲云自留地11 小时前
动手玩 Nova:Hypervisor、主机聚合、可用分区、虚拟机生命周期实操
运维·架构·openstack