在数字化时代,服务器管理早已告别“物理机房蹲守”的模式——无论是运维工程师维护云端服务器,还是开发者调试远程代码,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 端口,如果服务器开启了防火墙(如 ufw 或 firewalld),必须放行 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(功能强大,付费但有免费版)。
- Windows 10/11 已自带
- 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.100或47.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 生成
- 下载 PuTTYgen(和 PuTTY 同官网,或在 PuTTY 安装包中找到);
- 打开 PuTTYgen,默认选择
RSA算法(密钥长度选 2048 或 4096,越长越安全); - 点击“Generate”,然后在空白处随机移动鼠标(生成随机熵),直到进度条完成;
- 生成后,设置一个密钥密码(可选,但建议设置,防止私钥被盗用);
- 点击“Save public key”保存公钥(如
id_rsa.pub); - 点击“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:手动上传(通用)
-
先查看本地公钥内容:
- Windows:打开
id_rsa.pub文件,复制所有内容; - macOS/Linux:执行
cat ~/.ssh/id_rsa.pub,复制输出的字符串。
- Windows:打开
-
登录服务器(用密码登录),执行以下命令:
# 创建 .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):
- 打开 PuTTY,在“Session”界面填写服务器 IP 和端口;
- 点击左侧“Connection → SSH → Auth”;
- 点击“Browse”,选择之前保存的私钥文件(
id_rsa.ppk); - 回到“Session”界面,点击“Open”;
- 输入服务器用户名,按回车(如果设置了密钥密码,会提示输入,否则直接登录)。
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):
-
登录服务器,编辑 SSH 配置文件:
sudo vi /etc/ssh/sshd_config -
找到
Port 22这一行,把 22 改成新端口(如 2222):Port 2222 -
保存并退出(vi 中按
Esc,输入:wq回车)。 -
重启 SSH 服务:
- Ubuntu/Debian:
sudo systemctl restart sshd - CentOS/RHEL:
sudo systemctl restart sshd
- Ubuntu/Debian:
-
防火墙放行新端口(以 ufw 为例):
sudo ufw allow 2222/tcp sudo ufw reload
之后连接时,需要指定新端口:
- PuTTY:在“Port”栏填 2222;
- 终端:
ssh -p 2222 用户名@服务器IP。
2. 禁用密码登录(强制密钥登录)
如果已经配置了密钥登录,建议禁用密码登录,彻底杜绝暴力破解风险:
-
编辑 SSH 配置文件:
sudo vi /etc/ssh/sshd_config -
找到以下两行,修改为:
PasswordAuthentication no # 禁用密码登录 PubkeyAuthentication yes # 启用密钥登录 -
重启 SSH 服务:
sudo systemctl restart sshd
注意:修改前必须确保密钥登录可用,否则会被锁在服务器外!
3. 配置别名(不用每次输 IP)
如果经常连接某台服务器,可在本地配置别名,简化命令:
-
本地打开
~/.ssh/config文件(如果不存在,创建一个):vi ~/.ssh/config -
添加以下内容:
Host myserver # 别名,随便取(如 myserver) HostName 47.xxx.xxx.xxx # 服务器 IP User ubuntu # 登录用户名 Port 2222 # SSH 端口(如果修改过) IdentityFile ~/.ssh/id_rsa # 私钥路径 -
保存后,直接用别名连接:
ssh myserver
六、常见问题排查
连接失败是新手常遇到的问题,以下是高频原因及解决方法:
1. “Connection refused”(连接被拒绝)
- 原因:服务器未启动 SSH 服务,或端口错误,或防火墙未放行端口。
- 解决:
- 检查服务器 SSH 服务状态:
systemctl status sshd; - 确认本地输入的端口和服务器一致;
- 检查防火墙规则,确保端口放行。
- 检查服务器 SSH 服务状态:
2. “Permission denied (publickey)”(公钥验证失败)
- 原因:公钥未正确上传到服务器,或权限设置错误,或私钥路径不对。
- 解决:
- 检查服务器
~/.ssh/authorized_keys是否有本地公钥; - 确保服务器
~/.ssh权限为700,authorized_keys权限为600; - 本地连接时指定正确的私钥路径(
-i参数)。
- 检查服务器
3. “Operation timed out”(连接超时)
- 原因:服务器 IP 错误,或网络不通,或云服务器安全组未放行端口。
- 解决:
- ping 服务器 IP,确认网络可达:
ping 服务器IP; - 检查云服务器安全组规则,确保 22 端口(或自定义端口)对本地 IP 开放。
- ping 服务器 IP,确认网络可达:
七、总结
Linux 远程连接并不复杂,核心是SSH 协议的应用:
- 入门用密码登录,快速上手;
- 进阶用密钥登录,提升安全;
- 优化用端口修改、别名配置,提高效率。
掌握这些技能后,你就能轻松管理远程服务器,无论是部署网站、调试代码还是维护系统,都能得心应手。记住:安全是第一位的——永远使用密钥登录,禁用密码,定期更换密钥,让服务器远离攻击风险。
现在,打开你的终端或 PuTTY,开始尝试连接你的服务器吧!









留言0