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. 私钥权限 :私钥文件权限必须设为 600 或 400,否则 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 参数允许其他主机访问转发端口时需谨慎,确保网络安全策略允许。

相关推荐
程序猿老A7 小时前
云服务器怎么配置视频存储?
运维·服务器·音视频
程序员老陆7 小时前
Docker 命令全景指南:从镜像构建到生产运维
运维·docker·容器
Είναι η κοπέλα7 小时前
WSL2 部署 AI 开发环境:内核级 Linux + GPU 直通
linux·运维·人工智能
其实防守也摸鱼7 小时前
网安自测题:掌握核心知识点的实用练习
linux·运维·服务器·前端·数据库·sql·xss
2401_868534788 小时前
简要说明PON下行和上传数据方式
运维·服务器·网络
weixin_403810138 小时前
iOS 自动化脚本怎么输入文字:代理、输入法与快捷指令三级方案
运维·ios·自动化
ai小陈16 小时前
GPU服务器租用存储验收:检查点写入与磁盘吞吐实战
运维·服务器·人工智能·ai·ssh·gpu算力
有毒的教程18 小时前
VMware仅主机模式:物理机 ↔ 虚拟机 文件共享
运维
山岚的运维笔记21 小时前
ComfyUI NVIDIA安装教程:官方便携版下载+run_nvidia_gpu.bat启动,8G显存Windows实操
运维·服务器·windows·笔记·prompt·aigc·comfyui
海宇大数据21 小时前
零信任架构实战:基于海宇活体识别V步骤1构建自动化远程公证会话初始化网关
运维·人工智能·架构·自动化