Linux 远程连接服务器:从入门到精通的详细指南

快小二编导 技术教程

在数字化时代,服务器管理早已告别“物理机房蹲守”的模式——无论是运维工程师维护云端服务器,还是开发者调试远程代码,Linux 远程连接都是必备技能。它不仅能让你随时随地操作服务器,更能提高团队协作效率。但对于新手来说,“远程连接”似乎是个技术门槛:SSH 是什么?密钥登录怎么配置?连接失败该怎么排查?

本文将从基础原理实战操作,一步步教你掌握 Linux 远程连接的核心方法,无论是密码登录还是更安全的密钥登录,都能轻松搞定。

一、先搞懂:远程连接的核心——SSH 协议

在开始操作前,你得先明白:Linux 远程连接的“幕后功臣”是 SSH(Secure Shell) 协议。

简单来说,SSH 是一种加密的网络传输协议,它能在本地电脑和远程服务器之间建立安全的“通道”——所有传输的数据都会被加密,避免被黑客窃听或篡改。相比早期的 Telnet(明文传输,极不安全),SSH 是目前远程管理 Linux 服务器的标准方式。

SSH 有两个常用版本:

  • SSH-1:早期版本,存在安全漏洞,已被淘汰;
  • SSH-2:当前主流版本,支持更强的加密算法(如 AES、RSA),安全性更高。

现在的 Linux 系统(如 Ubuntu、CentOS、Debian)默认安装的都是 SSH-2,所以你不用特意升级,只需确保服务器端开启 SSH 服务即可。

二、准备工作:确认服务器和本地环境

在连接前,你需要准备 3 样东西:

1. 服务器端:开启 SSH 服务并配置网络

首先,远程服务器必须满足两个条件:

  • 安装并启动 SSH 服务
  • 网络可访问(有公网 IP 或在同一局域网内)。

步骤 1:检查 SSH 服务状态

登录服务器(如果是本地服务器,直接操作;如果是云服务器,可通过服务商的“控制台远程连接”功能临时登录),执行以下命令:

# 检查 SSH 服务是否安装(以 Ubuntu/Debian 为例)
dpkg -l | grep ssh

# 检查 SSH 服务是否运行
systemctl status sshd

如果输出显示 active (running),说明 SSH 服务已启动;如果未安装,需手动安装:

  • Ubuntu/Debian:sudo apt update && sudo apt install openssh-server
  • CentOS/RHEL:sudo yum install openssh-server && sudo systemctl start sshd

步骤 2:配置防火墙放行 SSH 端口

SSH 默认使用 22 端口,如果服务器开启了防火墙(如 ufwfirewalld),必须放行 22 端口,否则本地无法连接。

  • Ubuntu/Debian(ufw 防火墙)

    sudo ufw allow 22/tcp  # 放行 22 端口
    sudo ufw enable        # 启用防火墙(如果未启用)
    sudo ufw status        # 查看规则是否生效
  • CentOS/RHEL(firewalld 防火墙)

    sudo firewall-cmd --add-port=22/tcp --permanent  # 永久放行 22 端口
    sudo firewall-cmd --reload                       # 重新加载规则
    sudo firewall-cmd --list-ports                   # 查看已放行端口

步骤 3:获取服务器 IP 地址

你需要知道服务器的 IP 才能连接,执行以下命令查看:

# 查看所有网络接口的 IP
ip addr show

# 或更简单的方式(只显示 IPv4)
hostname -I

如果是云服务器(如阿里云、腾讯云),还需要在服务商控制台开启“公网 IP”,并确保安全组规则放行 22 端口(这一步很容易被忽略!)。

2. 本地端:安装 SSH 客户端

不同操作系统的 SSH 客户端不同,但都很容易获取:

  • Windows
    • Windows 10/11 已自带 OpenSSH 客户端(需在“设置 → 应用 → 可选功能”中安装);
    • 也可以用第三方工具,如 PuTTY(经典图形化工具,适合新手)、Xshell(功能强大,付费但有免费版)。
  • macOS/Linux:系统自带 ssh 命令,直接在终端使用即可。

三、实战操作 1:密码登录(入门级)

密码登录是最直观的方式,适合新手快速上手。

1. Windows 系统:用 PuTTY 连接

PuTTY 是 Windows 下最流行的 SSH 客户端,操作步骤如下:

步骤 1:下载并打开 PuTTY

  • 官网下载:putty.org,选择最新版本的 putty.exe(无需安装,直接运行)。

步骤 2:配置连接参数

打开 PuTTY 后,在“Session”界面填写:

  • Host Name (or IP address):服务器的 IP 地址(如 192.168.1.10047.xxx.xxx.xxx);
  • Port:默认 22(如果服务器修改过 SSH 端口,填修改后的端口);
  • Connection type:选择 SSH

步骤 3:建立连接

点击“Open”,首次连接会弹出“安全警告”(提示服务器指纹未缓存),点击“是”即可。

步骤 4:输入账号密码

  • 首先输入服务器的用户名(如 root 或普通用户 ubuntu),按回车;
  • 然后输入密码(输入时屏幕不会显示字符,这是 Linux 的安全设计),按回车。

如果密码正确,就会成功进入服务器的命令行界面!

2. macOS/Linux 系统:用终端连接

直接打开终端,执行以下命令:

ssh 用户名@服务器IP

例如:

ssh root@192.168.1.100  # 用 root 用户连接
# 或
ssh ubuntu@47.xxx.xxx.xxx  # 用普通用户连接

首次连接同样会提示“是否信任服务器”,输入 yes 并回车,然后输入密码即可登录。

四、实战操作 2:密钥登录(安全级)

密码登录虽然简单,但存在风险:密码可能被暴力破解(尤其是弱密码)。而密钥登录通过“公钥-私钥”配对的方式验证身份,安全性更高,也是企业级服务器的推荐方式。

什么是“公钥-私钥”?

  • 私钥:保存在本地电脑,相当于你的“身份证”,必须妥善保管(不能泄露);
  • 公钥:上传到服务器,相当于“锁”——只有持有对应私钥的人才能打开这把锁。

连接时,服务器会用公钥加密一个随机字符串,本地用私钥解密后发回服务器,验证通过即可登录,全程无需输入密码。

随机图片

步骤 1:本地生成密钥对

打开本地终端(Windows 用 PuTTYgen,macOS/Linux 用终端)生成密钥。

方式 A:Windows 用 PuTTYgen 生成

  1. 下载 PuTTYgen(和 PuTTY 同官网,或在 PuTTY 安装包中找到);
  2. 打开 PuTTYgen,默认选择 RSA 算法(密钥长度选 2048 或 4096,越长越安全);
  3. 点击“Generate”,然后在空白处随机移动鼠标(生成随机熵),直到进度条完成;
  4. 生成后,设置一个密钥密码(可选,但建议设置,防止私钥被盗用);
  5. 点击“Save public key”保存公钥(如 id_rsa.pub);
  6. 点击“Save private key”保存私钥(如 id_rsa.ppk,PuTTY 专用格式)。

方式 B:macOS/Linux 用终端生成

直接执行以下命令:

ssh-keygen -t rsa -b 4096
  • -t rsa:指定算法为 RSA;
  • -b 4096:密钥长度 4096 位(更安全)。

执行后会提示:

  • “Enter file in which to save the key”:按回车,默认保存到 ~/.ssh/id_rsa(私钥)和 ~/.ssh/id_rsa.pub(公钥);
  • “Enter passphrase”:设置密钥密码(可选,建议设置);
  • “Enter same passphrase again”:重复密码。

生成完成后,私钥在 ~/.ssh/id_rsa,公钥在 ~/.ssh/id_rsa.pub

步骤 2:将公钥上传到服务器

生成密钥后,需要把公钥上传到服务器的 ~/.ssh/authorized_keys 文件中(这个文件保存所有允许登录的公钥)。

方式 1:手动上传(通用)

  1. 先查看本地公钥内容:

    • Windows:打开 id_rsa.pub 文件,复制所有内容;
    • macOS/Linux:执行 cat ~/.ssh/id_rsa.pub,复制输出的字符串。
  2. 登录服务器(用密码登录),执行以下命令:

    # 创建 .ssh 目录(如果不存在)
    mkdir -p ~/.ssh
    # 把公钥内容追加到 authorized_keys 文件
    echo "复制的公钥内容" >> ~/.ssh/authorized_keys
    # 设置正确的权限(必须!否则 SSH 会拒绝使用)
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys

方式 2:用 ssh-copy-id 快速上传(macOS/Linux 专用)

如果是 macOS 或 Linux 本地,直接执行以下命令,一键上传公钥:

ssh-copy-id 用户名@服务器IP

例如:

ssh-copy-id ubuntu@192.168.1.100

执行后输入服务器密码,公钥会自动添加到 authorized_keys 并设置权限,非常方便。

步骤 3:用密钥登录服务器

Windows(PuTTY):

  1. 打开 PuTTY,在“Session”界面填写服务器 IP 和端口;
  2. 点击左侧“Connection → SSH → Auth”;
  3. 点击“Browse”,选择之前保存的私钥文件(id_rsa.ppk);
  4. 回到“Session”界面,点击“Open”;
  5. 输入服务器用户名,按回车(如果设置了密钥密码,会提示输入,否则直接登录)。

macOS/Linux(终端):

直接执行以下命令(如果私钥是默认路径 ~/.ssh/id_rsa,可省略 -i 参数):

ssh -i ~/.ssh/id_rsa 用户名@服务器IP

例如:

ssh -i ~/.ssh/id_rsa ubuntu@192.168.1.100

如果设置了密钥密码,输入密码后即可登录;否则直接进入服务器。

五、进阶技巧:让远程连接更高效

掌握基础登录后,这些技巧能帮你提升效率:

1. 修改 SSH 端口(避免暴力破解)

默认 22 端口是黑客暴力破解的重点目标,建议修改为 10000-65535 之间的非知名端口(如 2222):

  1. 登录服务器,编辑 SSH 配置文件:

    sudo vi /etc/ssh/sshd_config
  2. 找到 Port 22 这一行,把 22 改成新端口(如 2222):

    Port 2222
  3. 保存并退出(vi 中按 Esc,输入 :wq 回车)。

  4. 重启 SSH 服务:

    • Ubuntu/Debian:sudo systemctl restart sshd
    • CentOS/RHEL:sudo systemctl restart sshd
  5. 防火墙放行新端口(以 ufw 为例):

    sudo ufw allow 2222/tcp
    sudo ufw reload

之后连接时,需要指定新端口:

  • PuTTY:在“Port”栏填 2222;
  • 终端:ssh -p 2222 用户名@服务器IP

2. 禁用密码登录(强制密钥登录)

如果已经配置了密钥登录,建议禁用密码登录,彻底杜绝暴力破解风险:

  1. 编辑 SSH 配置文件:

    sudo vi /etc/ssh/sshd_config
  2. 找到以下两行,修改为:

    PasswordAuthentication no  # 禁用密码登录
    PubkeyAuthentication yes   # 启用密钥登录
  3. 重启 SSH 服务:

    sudo systemctl restart sshd

注意:修改前必须确保密钥登录可用,否则会被锁在服务器外!

3. 配置别名(不用每次输 IP)

如果经常连接某台服务器,可在本地配置别名,简化命令:

  1. 本地打开 ~/.ssh/config 文件(如果不存在,创建一个):

    vi ~/.ssh/config
  2. 添加以下内容:

    Host myserver  # 别名,随便取(如 myserver)
     HostName 47.xxx.xxx.xxx  # 服务器 IP
     User ubuntu  # 登录用户名
     Port 2222    #  SSH 端口(如果修改过)
     IdentityFile ~/.ssh/id_rsa  # 私钥路径
  3. 保存后,直接用别名连接:

    ssh myserver

六、常见问题排查

连接失败是新手常遇到的问题,以下是高频原因及解决方法:

1. “Connection refused”(连接被拒绝)

  • 原因:服务器未启动 SSH 服务,或端口错误,或防火墙未放行端口。
  • 解决:
    1. 检查服务器 SSH 服务状态:systemctl status sshd
    2. 确认本地输入的端口和服务器一致;
    3. 检查防火墙规则,确保端口放行。

2. “Permission denied (publickey)”(公钥验证失败)

  • 原因:公钥未正确上传到服务器,或权限设置错误,或私钥路径不对。
  • 解决:
    1. 检查服务器 ~/.ssh/authorized_keys 是否有本地公钥;
    2. 确保服务器 ~/.ssh 权限为 700authorized_keys 权限为 600
    3. 本地连接时指定正确的私钥路径(-i 参数)。

3. “Operation timed out”(连接超时)

  • 原因:服务器 IP 错误,或网络不通,或云服务器安全组未放行端口。
  • 解决:
    1. ping 服务器 IP,确认网络可达:ping 服务器IP
    2. 检查云服务器安全组规则,确保 22 端口(或自定义端口)对本地 IP 开放。

七、总结

Linux 远程连接并不复杂,核心是SSH 协议的应用:

  • 入门用密码登录,快速上手;
  • 进阶用密钥登录,提升安全;
  • 优化用端口修改、别名配置,提高效率。

掌握这些技能后,你就能轻松管理远程服务器,无论是部署网站、调试代码还是维护系统,都能得心应手。记住:安全是第一位的——永远使用密钥登录,禁用密码,定期更换密钥,让服务器远离攻击风险。

现在,打开你的终端或 PuTTY,开始尝试连接你的服务器吧!

0 11266

留言0

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
验证码