linux 切换服务器

Linux切换服务器可先执行 exit 退出当前会话,再用 ssh 用户名@目标服务器IP 连接至新

核心思路

Linux 环境中切换服务器的本质是通过 SSH 协议建立与目标服务器的安全连接,核心手段包括:利用 ~/.ssh/config 文件预置多台服务器的配置参数、结合终端快捷键/插件实现快速切换、借助会话管理工具维持并行连接,以下从准备到实践逐步展开说明。

linux 切换服务器


前置条件与基础准备

确保已安装 OpenSSH 客户端

绝大多数 Linux 发行版默认集成 OpenSSH,可通过以下命令验证:

ssh -V   # 查看本地 SSH 版本

若未安装,需先执行包管理器安装(如 Ubuntu/Debian 使用 sudo apt install openssh-client)。

获取目标服务器访问凭证

需提前准备好以下至少一项:
| 认证方式 | 要求 |
|—————-|———————————————————————-|
| 密码 | 知道目标服务器的用户账号及对应密码 |
| SSH 密钥对 | 已在本地生成公私钥对,并将公钥上传至目标服务器的 ~/.ssh/authorized_keys |
| 动态令牌 | 部分企业环境要求二次验证(如 Google Authenticator) |


关键配置:~/.ssh/config 文件详解

此文件是 SSH 的全局配置文件,通过定义 “Host” 别名可大幅简化后续操作,以下是典型配置示例及解释:

配置项 作用 示例值 说明
Host 为服务器起一个易记的别名 prod-db, dev-web 后续直接用该别名代替 IP/域名发起连接
HostName 目标服务器的真实地址(IP 或域名) 168.1.100, example.com 必填项,否则无法定位服务器
User 登录使用的用户名 root, ubuntu 若不填则默认当前系统用户名
Port SSH 服务监听的端口(非默认 22 时必填) 2222 常见于云厂商随机分配端口的场景
IdentityFile 指定用于该主机的私钥路径(优先于默认 ~/.ssh/id_rsa ~/.ssh/id_prod_rsa 推荐为不同服务器生成专用密钥对,提升安全性
ForwardAgent 是否转发本地代理(用于跳板机场景) yes 设为 yes 可将本机的 SSH Agent 转发至远程服务器
Compression 数据传输压缩级别(yes/no/lz4 等) yes 网络较差时开启可加速传输

配置生效验证:修改后无需重启,下次执行 ssh <Host别名> 会自动加载新配置。


实际切换操作指南

场景 1:首次登录某台已配置的服务器

假设 ~/.ssh/config 中已有如下配置:

Host test-server
    HostName 10.0.0.5
    User admin
    IdentityFile ~/.ssh/test_key

只需在终端输入:

linux 切换服务器

ssh test-server  # 自动使用配置中的用户名、密钥和端口(未指定则为22)

场景 2:临时覆盖配置参数

若需临时修改某次连接的参数(如更换端口),可在命令行追加参数,优先级高于 ~/.ssh/config

ssh -p 3000 user@example.com  # 强制使用3000端口,忽略原配置中的Port设置

场景 3:快速切换多个活跃会话

推荐使用以下两种方式管理多台服务器的并发连接:
| 工具/方法 | 优势 | 基本用法 |
|—————–|———————————————————————-|——————————————-|
| tmux/screen | 支持会话分离(后台运行)、窗口分割、历史回溯 | tmux → 新建会话;Ctrl+B+ → 垂直分屏 |
| & 后台运行 | 简单轻量,适合短期任务 | ssh server & → 按 Enter 返回前台 |
| byobu 插件 | 增强版状态栏显示当前连接信息(需配合 tmux/screen) | 安装后自动集成,无需额外配置 |


常见问题排查手册

现象 可能原因及解决方案
Permission denied ✅ 检查 ~/.ssh/config 的文件权限是否为 600chmod 600 ~/.ssh/config);
✅ 确认目标服务器的 ~/.ssh/authorized_keys 权限为 600
✅ 若用密码登录,检查账号是否被锁定(passwd -S <username>)。
Connection refused ✅ 核对 HostName 是否正确(注意大小写);
✅ 检查目标服务器 SSH 服务是否运行(systemctl status sshd);
✅ 确认防火墙未阻止 SSH 端口(ufw statusiptables -L)。
Unknown host key ✅ 这是正常安全提示,首次连接会选择是否信任该主机公钥;
✅ 若需自动接受,可在 ~/.ssh/config 中添加 StrictHostKeyChecking no(不推荐生产环境使用)。
卡顿或延迟高 ✅ 启用压缩(Compression yes);
✅ 减少不必要的日志输出(LogLevel ERROR);
✅ 升级网络带宽或切换低负载时段。

相关问题与解答

Q1:如何在一台跳板机上通过单一命令跳转到内网服务器?

:可在 ~/.ssh/config 中使用 ProxyJump 参数实现级联跳转。

Host inner-server
    HostName 172.16.0.2          # 内网服务器真实 IP
    User appuser
    IdentityFile ~/.ssh/inner_key
    ProxyJump bastion-host       # 跳板机别名(需已配置)

此后只需执行 ssh inner-server,系统会自动先连接到 bastion-host,再从其跳转至内网服务器。

Q2:忘记了某台服务器的 SSH 密钥密码怎么办?

:若使用的是带密码的 RSA 密钥,可通过以下步骤重置:

  1. 找到对应的私钥文件(如 ~/.ssh/id_rsa);
  2. 使用 ssh-keygen -p -f ~/.ssh/id_rsa 进入交互式修改模式;
  3. 选择 “Change passphrase”,输入旧密码和新密码;
  4. 若完全遗忘旧密码,需删除原密钥对(rm ~/.ssh/id_rsa),重新生成新的密钥对并上传公钥至服务器。

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/105210.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年8月16日 15:32
下一篇 2025年6月6日 01:03

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN