当前位置:首页 > Linux > 正文

如何使用ssh登录linux服务器

使用 ssh [用户名]@[服务器IP/域名]:[端口] 命令,输入密码或加载私钥即可登录,首次需确认指纹

理解SSH的核心作用

SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络环境中安全地远程管理Linux/Unix服务器,相较于明文传输的Telnet,SSH通过非对称加密技术保障数据传输的安全性,支持身份验证、数据完整性校验和防中间人攻破,其核心功能包括:

远程命令执行

文件传输(配合scp或rsync)

隧道代理(Port Forwarding)

图形化界面转发(X11 Forwarding)


前置准备条件

必备要素清单

项目 说明
SSH客户端 Windows/macOS/Linux均可使用系统自带终端或第三方工具(PuTTY、MobaXterm)
服务器信息 IP地址/域名 + 端口号(默认22,若修改需确认)
认证方式 密码认证(临时使用)或密钥认证(推荐长期使用)
网络连通性 确保本地与服务器之间可互通(可通过ping测试)

获取服务器访问权限

联系系统管理员获取以下任一组合:

  • 用户名 + 密码(首次登录后建议立即生成密钥)
  • 用户名 + SSH私钥(需提前将公钥上传至服务器)


基础登录流程详解

标准命令格式

ssh [选项] 用户名@服务器地址 -p 端口号

关键参数解析

| 参数 | 作用 | 示例 |

|————|—————————————-|——————————-|

| -i | 指定私钥文件路径 | -i ~/.ssh/id_rsa |

| -p | 自定义端口(非默认22时必填) | -p 2222 |

| -X | 启用X11转发(用于运行GUI程序) | -X |

| -L | 本地端口映射到远程服务器 | -L 8080:localhost:80 |

| -o StrictHostKeyChecking=no | 跳过首次连接时的主机密钥确认(仅测试环境使用) | — |

典型登录场景示例

场景1:密码认证(适用于临时访问)

如何使用ssh登录linux服务器 第1张

风险提示:频繁输错密码可能导致账户锁定,生产环境应禁用root直接登录。

场景2:密钥认证(推荐生产环境使用)

① 生成ED25519密钥对(比RSA更安全):

ssh-keygen -t ed25519 -C "your_email@example.com" # 按提示选择保存路径(默认~/.ssh/id_ed25519),无需设置密码可直接回车

② 将公钥上传至服务器:

如何使用ssh登录linux服务器 第2张

③ 无密码登录测试:

ssh -i ~/.ssh/id_ed25519 user@server_ip


进阶功能实战

X11转发实现图形化操作

当需要在本地显示远程服务器的GUI程序时(如MATLAB、GIMP):

# Linux/macOS客户端 ssh -X user@server_ip # -X表示信任X11显示器 # Windows客户端需安装Xming/VcXsrv并设置DISPLAY环境变量 setxkbmap -model abnt2 & matlab & # 启动巴西键盘布局的MATLAB

优化建议:通过~/.Xresources文件统一配置字体、主题等样式。

端口转发构建安全通道

案例:访问内网MySQL数据库

假设服务器A(公网IP: 203.0.113.5)可访问内网服务器B(192.168.1.2:3306),但外部无法直连B:

# 在本地机器执行 ssh -L 3307:192.168.1.2:3306 user@203.0.113.5 # 然后使用本地工具连接localhost:3307,流量经SSH隧道加密传输至B的3306端口 mysql -h localhost -P 3307 -u dbuser -p

此方法常用于绕过防火墙限制,且比直接暴露数据库端口更安全。

多跳代理突破网络限制

当目标服务器仅允许通过跳板机访问时:

# 第一步:登录跳板机BastionHost ssh user@bastionhost.com # 第二步:从跳板机跳转至目标服务器TargetServer ssh admin@targetserver.internal # 需确保跳板机允许二次跳转 # 合并为一条命令(使用ProxyJump) ssh -J user@bastionhost.com admin@targetserver.internal


安全加固最佳实践

风险点 防范措施 实施命令/操作
弱密码暴力免费 禁用密码登录,强制使用密钥 vim /etc/ssh/sshd_config

PasswordAuthentication no

密钥泄露风险 定期轮换密钥,限制私钥文件权限 chmod 600 ~/.ssh/id_

touch ~/.ssh/config添加IdentityFile路径

空闲连接截持 设置超时断开时间 ClientAliveInterval 300

ClientAliveCountMax 3

日志审计缺失 记录所有登录尝试 LogLevel VERBOSE

SyslogFacility AUTHPRIV

版本漏洞利用 保持OpenSSH版本更新 apt update && apt install openssh-server


常见错误排查手册

现象 可能原因及解决方案
Connection refused 服务未运行 → systemctl status sshd

端口被防火墙拦截 → ufw allow 22

Permission denied 私钥权限错误 → chmod 600 id_rsa

公钥未正确添加到authorized_keys

Host key verification failed ️ 中间人攻破风险!

首次连接时输入yes接受指纹

️ 生产环境应固定已知主机指纹

Too many authentication failures 账户被临时锁定

⏳ 等待几分钟后重试

或联系管理员解锁


相关问答FAQs

Q1: 我忘记了SSH密码该怎么办?

A: 如果拥有物理控制权或救援模式访问权限:

  1. 重启服务器进入单用户模式(Grub菜单选择recovery mode);
  2. 挂载根分区为读写模式:mount -o remount,rw /;
  3. 执行passwd username重置密码;
  4. 重启系统后即可用新密码登录。

    若无物理权限,需联系云服务商控制台重置实例密码。

Q2: SSH连接突然中断是什么原因?

A: 常见原因及解决方法:

  1. 网络波动:检查MTU值是否过大(建议调至1400以下);
  2. TCP Keepalive超时:在客户端添加ServerAliveInterval 60到~/.ssh/config;
  3. 资源耗尽:查看服务器负载(top命令),优化进程或升级配置;
  4. DNS解析异常:改用IP地址代替域名登录;
  5. 硬件故障:检查交换机端口状态灯是否正常。

如何使用ssh登录linux服务器 第3张

0