详解如何 SSH 远程登录自己的 Linux 服务器

本文最后更新于 2026年6月27日 晚上

Linux 服务器远程登录

买了云服务器,第一件事通常不是装网站、跑 Docker、配 Nginx,而是:先登录进去

Linux 服务器大多数时候没有图形界面,我们不会像 Windows 远程桌面那样点来点去,而是通过 SSH 进入服务器的命令行。只要 SSH 连上了,后面的软件安装、网站部署、日志查看、文件编辑、权限配置,才真正开始。

这篇文章会从小白视角(主要是为我其他文章当作基建,避免频繁一遍一遍回答基础 SSH 问题),把 SSH 登录 Linux 服务器这件事完整讲一遍:

  • SSH 是什么,客户端和服务端分别在哪。
  • Windows、macOS、Linux 分别用什么工具连接。
  • 如何用账号密码登录。
  • 如何用密钥登录,为什么更推荐密钥登录。
  • 如何使用 ssh-copy-idauthorized_keys 和云厂商控制台部署公钥。
  • 如何写 ~/.ssh/config,把很长的 SSH 命令变短。
  • 登录失败时怎么排查。
  • 登录成功后,应该做哪些基础安全加固。

为什么用 SSH

现在个人服务器、轻量应用服务器、VPS、树莓派、NAS、Linux 虚拟机,绝大多数都通过 SSH 远程管理。

SSH 的全称是 Secure Shell。简单理解,它是一个安全的远程命令行协议:本地电脑作为 SSH 客户端,连接远程 Linux 服务器上的 SSH 服务端,然后在加密通道里执行命令。

flowchart LR
    A[本地电脑<br>SSH 客户端] -->|发起连接| B[公网或局域网]
    B --> C[Linux 服务器<br>SSH 服务端]
    C -->|身份验证通过| D[进入远程 Shell]
    D --> E[执行命令<br>安装软件 / 查看日志 / 部署服务]

需要先纠正一个旧说法:SSH 不是“基于 SSL 的远程登录”。SSH 和 TLS/SSL 都会使用加密算法,但它们是不同的协议体系。我们日常使用的 sshsshdssh-keygen,通常来自 OpenSSH。

SSH 登录服务器,可以粗略分成两类:

登录方式 适合谁 优点 注意点
密码登录 第一次入门、临时登录 理解成本低,只需要用户名、服务器 IP、密码 容易被暴力破解,正式使用不建议长期开放
密钥登录 长期管理服务器 安全性更高,也更方便自动化 需要保管好私钥,公钥要放到服务器

我个人建议:新手可以先学密码登录,把流程跑通;真正长期使用时,尽快切换到密钥登录,并关闭密码登录。

有一定能力以后,可以上密码管理器来托管密钥,比如:

视频教程

和以前一样,我们觉得有用、有必要录个视频的内容,我们还是会花时间做个视频。不过考虑到文章是 21 年的,旧版视频仍可作为参考,具体命令和安全建议以本文更新后的内容为准:

感觉有用,可以给视频投个币么?( ´▽`):视频原链接:https://www.bilibili.com/video/BV1cL411w7RB

另外,接受打赏和捐赠嗷:爱发电:Mintimate

支持创作

制作教程不易,如果热心的小伙伴,想支持创作,可以加入我们的电圈(还可以解锁远程协助、好友位😃):

WebChart Recognise

志同道合的小伙伴也是知音难觅。

  • 开发者爱好群: 👉 如果你对云服务器、CDN、云数据库和Linux等云计算感兴趣,亦或者喜欢编程、设计、产品、运营等领域,欢迎加入我们的开发者爱好群,一起交流学习(目前可能就我一个人?🤔,毕竟才刚刚创建~)。
QQ_Group Recognise

当然,也欢迎在B站、YouTube或微信公众号上关注我们:

MintimateBlog Recognise

更多:

如果你也想使用腾讯云的轻量应用服务器 Linux 云服务器;那么你可以使用博客的专属链接购买体验:

准备信息

开始之前,你至少要知道这几样东西:

  • 服务器公网 IP,或者已经解析到服务器的域名。
  • 登录用户名,比如 rootubuntuadmindebianlighthouse
  • 登录方式,是密码登录,还是密钥登录。
  • SSH 端口,默认是 22
  • 云服务器安全组或防火墙是否放行了 SSH 端口。

不同系统和云厂商的默认用户可能不同:

系统或镜像 常见默认用户
Debian rootadmin,看云厂商镜像
Ubuntu 常见为 ubuntu,很多云镜像默认不允许 root 直接登录
CentOS / Rocky / AlmaLinux 常见为 rootcentosrockyalmalinux
Amazon Linux 常见为 ec2-user
腾讯云 Lighthouse 部分镜像 可能是 lighthouse
树莓派旧版系统 旧版常见 pi,新版通常需要初始化时自行创建用户

如果你不确定用户名,优先看云厂商控制台的“登录说明”“重置密码”“密钥对”“远程登录”页面。不要急着乱试,SSH 连续失败太多次,有些服务器会被安全软件临时封禁 IP。

客户端推荐

现在 SSH 客户端已经很普及,不一定要下载第三方工具。

Windows

Windows 10 和 Windows 11 通常已经内置 OpenSSH 客户端,可以直接打开:

  • Windows Terminal
  • PowerShell
  • 命令提示符

检查本机是否有 SSH:

1
ssh -V

如果系统提示找不到 ssh,可以在 Windows 设置里安装“OpenSSH 客户端”,或者使用 Windows Terminal、PuTTY、Termius 等工具。

Windows 上使用 Windows Terminal

macOS

macOS 自带 Terminal 和 OpenSSH,打开“终端”即可:

1
ssh -V

macOS 上的 Terminal

如果你喜欢更强的终端体验,也可以使用 iTerm2。

Linux

Linux 桌面发行版一般自带 SSH 客户端:

1
ssh -V

如果没有,可以使用软件包管理器安装:

1
2
3
4
5
6
7
8
9
# Debian / Ubuntu
sudo apt update
sudo apt install openssh-client

# Fedora
sudo dnf install openssh-clients

# Arch Linux
sudo pacman -S openssh

手机和平板

移动端也可以 SSH,但我更建议把它当作临时救急工具:

  • Android:Termius、JuiceSSH
  • iOS / iPadOS:Termius、ServerCat、Blink Shell

如果你要长期管理服务器,还是建议在电脑上配置好密钥、SSH Config 和备份。

SSH 登录流程

从新手角度看,SSH 登录其实就是四步:

sequenceDiagram
    actor U as 用户
    participant C as 本地 SSH 客户端
    participant S as 服务器 SSH 服务端
    participant Shell as 远程 Shell

    U->>C: 输入 ssh 用户名@服务器IP
    C->>S: 连接服务器的 22 端口
    S-->>C: 返回服务器主机指纹
    U->>C: 首次连接输入 yes 信任指纹
    C->>S: 提交密码或密钥签名
    S-->>C: 验证身份
    S->>Shell: 创建登录会话
    Shell-->>U: 进入服务器命令行

第一次连接一台新服务器时,通常会看到类似提示:

1
Are you sure you want to continue connecting (yes/no/[fingerprint])?

这是 SSH 在询问:你是否信任这台服务器的主机指纹。第一次连接自己的新服务器,确认 IP 没填错后,输入:

1
yes

之后本机会把这台服务器的主机指纹记录到 known_hosts 文件里。下次再连同一台服务器,如果指纹突然变化,SSH 就会提醒你可能连错服务器,或者服务器被重装了。

密码登录

密码登录最直观,格式是:

1
ssh 用户名@服务器IP

比如服务器 IP 是 192.168.3.241,登录用户是 root

1
ssh root@192.168.3.241

如果服务器 SSH 端口不是默认的 22,比如改成了 2222

1
ssh -p 2222 root@192.168.3.241

注意:-p 是小写,表示 port。

云服务器重置密码

如果你买的是云服务器,第一次登录前通常需要在控制台设置或重置密码。

重置密码

云厂商控制台重置密码后,服务器可能会自动重启。等服务器状态恢复“运行中”以后,再尝试 SSH 登录。

登录时输入密码不会显示星号,也不会显示光标变化,这是正常的。你只需要盲输密码,然后回车。

输入密码后成功连接

服务器允许密码登录

如果你确定密码正确,但 SSH 一直拒绝密码登录,可能是服务器禁用了密码登录。

SSH 服务端配置文件通常是:

1
/etc/ssh/sshd_config

编辑它:

1
sudo vim /etc/ssh/sshd_config

找到或添加:

1
PasswordAuthentication yes

注意,OpenSSH 配置一般使用空格分隔,推荐写成 PasswordAuthentication yes,不要写成 PasswordAuthentication=yes

改完后先检查配置语法:

1
sudo sshd -t

如果没有输出,说明配置语法基本没问题。然后重启 SSH 服务:

1
2
3
4
5
# Debian / Ubuntu 常见服务名
sudo systemctl restart ssh

# CentOS / Rocky / AlmaLinux / Fedora 常见服务名
sudo systemctl restart sshd

如果你不确定服务名,可以查看:

1
2
systemctl status ssh
systemctl status sshd

如果你正在通过 SSH 修改 SSH 配置,建议保留当前已登录的窗口不要关。另开一个新终端测试新连接,确认能登录后,再退出旧窗口。

否则配置写错、服务重启失败,可能会把自己锁在服务器外面。

Ubuntu 允许 root 登录

很多 Ubuntu 云镜像默认不允许 root 直接 SSH 登录,而是让你使用 ubuntu 用户,再通过 sudo 提权:

1
2
ssh ubuntu@服务器IP
sudo -i

如果你确实要允许 root 远程登录,可以编辑:

1
sudo vim /etc/ssh/sshd_config

设置:

1
PermitRootLogin yes

然后检查并重启:

1
2
sudo sshd -t
sudo systemctl restart ssh

不过更推荐的方式是:不要开放 root 密码登录。可以使用普通用户登录,再用 sudo 执行管理员命令。

密钥登录

长期使用服务器,更推荐密钥登录。

密钥登录不是把密码换成一个更长的密码,而是使用一对密钥:

  • 私钥:放在你自己的电脑上,绝对不要发给别人。
  • 公钥:放在服务器上,可以理解为“允许这把私钥登录”的登记信息。

登录时,本地 SSH 客户端会用私钥完成签名,服务器用公钥验证。私钥不会被发送到服务器。

flowchart TB
    A[本地电脑生成密钥对] --> B[私钥保存在本地<br>id_ed25519]
    A --> C[公钥复制到服务器<br>id_ed25519.pub]
    C --> D[写入 ~/.ssh/authorized_keys]
    B --> E[ssh -i 私钥 用户名@服务器IP]
    D --> F[服务器验证签名]
    E --> F
    F --> G{验证通过?}
    G -->|是| H[登录成功]
    G -->|否| I[Permission denied]

生成密钥

现在我更推荐使用 Ed25519 密钥:

1
ssh-keygen -t ed25519 -C "your_email@example.com"

如果你的服务器系统非常旧,不支持 Ed25519,可以退回 RSA:

1
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

生成过程中会问几个问题:

1
2
3
Enter file in which to save the key
Enter passphrase
Enter same passphrase again

含义如下:

提示 建议
Enter file in which to save the key 密钥保存位置。默认是 ~/.ssh/id_ed25519,直接回车即可
Enter passphrase 私钥保护密码。个人电脑建议设置,自动化脚本可以留空
Enter same passphrase again 再输入一次私钥保护密码

生成后一般会有两个文件:

1
2
~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub

其中:

  • id_ed25519 是私钥,不能泄露。
  • id_ed25519.pub 是公钥,可以放到服务器。

查看公钥内容:

1
cat ~/.ssh/id_ed25519.pub

公钥通常长这样:

1
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... your_email@example.com

你要复制的是整行,从 ssh-ed25519 开始,到最后的备注结束。

生成密钥

方法一:使用 ssh-copy-id

如果服务器当前还能用密码登录,最简单的方法是 ssh-copy-id

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

比如:

1
ssh-copy-id root@192.168.3.241

如果 SSH 端口不是 22:

1
ssh-copy-id -p 2222 root@192.168.3.241

如果你要指定某个公钥文件:

1
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@192.168.3.241

它会自动把你的公钥追加到服务器对应用户的:

1
~/.ssh/authorized_keys

然后测试登录:

1
ssh root@192.168.3.241

如果不再要求输入服务器用户密码,就说明密钥登录成功了。

Windows 自带 OpenSSH 有时没有 ssh-copy-id,可以用下面的手动方法。

方法二:手动写入 authorized_keys

先用密码登录服务器:

1
ssh root@192.168.3.241

在服务器上创建 .ssh 目录,并设置权限:

1
2
mkdir -p ~/.ssh
chmod 700 ~/.ssh

编辑 authorized_keys

1
vim ~/.ssh/authorized_keys

把你本地 id_ed25519.pub 的整行公钥粘贴进去,一行一个公钥。

保存后设置权限:

1
chmod 600 ~/.ssh/authorized_keys

如果你是用 root 帮普通用户配置,还要确认文件属于目标用户:

1
sudo chown -R 用户名:用户名 /home/用户名/.ssh

比如用户叫 demo

1
sudo chown -R demo:demo /home/demo/.ssh

然后在本地测试:

1
ssh demo@服务器IP

部署公钥

方法三:云厂商控制台绑定密钥

云服务器一般也支持在控制台绑定 SSH 密钥。大致流程是:

  1. 本地生成密钥对,复制公钥。
  2. 在云厂商控制台创建“SSH 密钥”或“密钥对”。
  3. 把公钥粘贴到控制台。
  4. 将密钥绑定到服务器实例。
  5. 使用本地私钥登录。

腾讯云绑定密钥

这种方法适合新建服务器时就配置密钥。不同云厂商的“绑定后是否需要重启服务器”不完全一样,以控制台提示为准。

指定私钥登录

如果你使用的不是默认私钥名,就需要用 -i 指定私钥:

1
ssh -i ~/.ssh/my_server_key root@192.168.3.241

如果端口也不是默认 22:

1
ssh -i ~/.ssh/my_server_key -p 2222 root@192.168.3.241

私钥权限太宽时,OpenSSH 可能拒绝使用它。macOS 和 Linux 可以这样修复:

1
chmod 600 ~/.ssh/my_server_key

写 SSH Config

当服务器多了以后,每次都输入:

1
ssh -i ~/.ssh/my_server_key -p 2222 root@192.168.3.241

确实很烦。可以把配置写到本机的:

1
~/.ssh/config

示例:

1
2
3
4
5
6
Host myserver
HostName 192.168.3.241
User root
Port 2222
IdentityFile ~/.ssh/my_server_key
IdentitiesOnly yes

以后登录只需要:

1
ssh myserver

还可以直接复制文件:

1
scp ./test.txt myserver:/root/

或者使用 VS Code Remote SSH 连接 myserver

常用字段含义:

字段 含义
Host 本地别名,可以随便起
HostName 真实服务器 IP 或域名
User 登录用户名
Port SSH 端口
IdentityFile 私钥路径
IdentitiesOnly yes 只使用这里指定的私钥,避免客户端乱试其他钥匙

创建普通用户

如果你一直用 root 登录,操作确实方便,但也更危险。更推荐创建一个普通用户,通过 sudo 管理服务器。

以 Debian / Ubuntu 为例:

1
2
sudo adduser mint
sudo usermod -aG sudo mint

以 CentOS / Rocky / AlmaLinux 为例:

1
2
3
sudo adduser mint
sudo passwd mint
sudo usermod -aG wheel mint

然后给这个用户配置 SSH 公钥:

1
2
3
4
5
sudo mkdir -p /home/mint/.ssh
sudo vim /home/mint/.ssh/authorized_keys
sudo chmod 700 /home/mint/.ssh
sudo chmod 600 /home/mint/.ssh/authorized_keys
sudo chown -R mint:mint /home/mint/.ssh

本地测试:

1
ssh mint@服务器IP

登录后验证 sudo:

1
sudo whoami

如果输出:

1
root

说明这个普通用户可以通过 sudo 执行管理员命令。

关闭密码登录

确认密钥登录和 sudo 都没问题以后,可以考虑关闭密码登录。

编辑:

1
sudo vim /etc/ssh/sshd_config

推荐配置:

1
2
3
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin prohibit-password

含义:

  • PubkeyAuthentication yes:允许密钥登录。
  • PasswordAuthentication no:禁止密码登录。
  • PermitRootLogin prohibit-password:root 不能用密码登录,但可以在配置了公钥时用密钥登录。

如果你想更严格,可以完全禁止 root 远程登录:

1
PermitRootLogin no

改完后检查配置:

1
sudo sshd -t

重启服务:

1
2
3
sudo systemctl restart ssh
# 或
sudo systemctl restart sshd

然后开一个新终端测试:

1
ssh mint@服务器IP

确认新连接能登录,再关闭旧窗口。

端口和安全组

很多新手 SSH 连不上,其实不是用户名密码错,而是网络层没通。

SSH 默认端口是 TCP 22。你至少要确认三处:

flowchart LR
    A[本地电脑] --> B[本地网络<br>运营商 / 路由器]
    B --> C[云厂商安全组<br>放行 TCP 22]
    C --> D[服务器防火墙<br>ufw / firewalld / iptables]
    D --> E[sshd 服务<br>监听 22 端口]

云服务器安全组

云服务器一般有“安全组”或“防火墙”功能。你需要放行:

1
2
3
协议: TCP
端口: 22
来源: 你的公网 IP 或 0.0.0.0/0

如果只是临时测试,可以先放行 0.0.0.0/0。长期使用更建议只放行自己的公网 IP,或者使用云厂商的 Web SSH / 堡垒机 / VPN。

服务器防火墙

Ubuntu 常见 ufw

1
2
sudo ufw status
sudo ufw allow 22/tcp

CentOS / Rocky / AlmaLinux 常见 firewalld

1
2
3
sudo firewall-cmd --state
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

如果你改了 SSH 端口,比如 2222,也要放行新端口:

1
sudo ufw allow 2222/tcp

或者:

1
2
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload

查看 sshd 是否监听

在服务器上执行:

1
ss -tlnp | grep ssh

可能看到:

1
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))

说明 SSH 服务端正在监听 22 端口。

文件传输

SSH 不只可以登录,还可以传文件。

scp

把本地文件上传到服务器:

1
scp ./index.html root@服务器IP:/var/www/html/

从服务器下载文件到本地:

1
scp root@服务器IP:/var/log/nginx/access.log ./

指定端口:

1
scp -P 2222 ./index.html root@服务器IP:/var/www/html/

注意:ssh 用小写 -p 指定端口,scp 用大写 -P

sftp

进入交互式文件传输:

1
sftp root@服务器IP

常用命令:

1
2
3
4
5
6
put 本地文件
get 远程文件
ls
pwd
cd
exit

如果你已经写了 SSH Config:

1
sftp myserver

常见问题排查

SSH 报错信息通常很有价值。下面这些是新手最容易遇到的。

Connection timed out

典型提示:

1
ssh: connect to host 服务器IP port 22: Operation timed out

常见原因:

  • 服务器 IP 写错。
  • 服务器没开机。
  • 云安全组没放行 22 端口。
  • 服务器防火墙没放行 22 端口。
  • SSH 服务没启动。
  • 你的网络到服务器线路不通。

排查顺序:

1
2
ping 服务器IP
ssh -vvv 用户名@服务器IP

然后去云厂商控制台检查安全组,再用 Web SSH 登录服务器检查:

1
2
3
sudo systemctl status ssh
sudo systemctl status sshd
ss -tlnp | grep ssh

Connection refused

典型提示:

1
ssh: connect to host 服务器IP port 22: Connection refused

这通常说明网络能到服务器,但目标端口没有服务在监听,或者被服务器主动拒绝。

检查:

1
2
3
4
sudo systemctl status ssh
sudo systemctl status sshd
sudo sshd -t
ss -tlnp | grep ssh

如果配置写错,先修复 /etc/ssh/sshd_config,再重启服务。

Permission denied publickey

典型提示:

1
Permission denied (publickey).

意思是:服务器要求密钥登录,但你本地提供的私钥没有通过验证。

常见原因:

  • 用户名错了。
  • 服务器上没有放你的公钥。
  • 公钥放错用户了,比如放到 /root/.ssh/authorized_keys,却用 ubuntu 登录。
  • 本地没有使用正确私钥。
  • 服务器上的 .sshauthorized_keys 权限不对。
  • sshd_config 禁用了公钥登录。

本地指定私钥测试:

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

本地打开详细日志:

1
ssh -vvv -i ~/.ssh/id_ed25519 用户名@服务器IP

服务器上检查权限:

1
2
3
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ls -la ~/.ssh

如果是普通用户:

1
sudo chown -R 用户名:用户名 /home/用户名/.ssh

Permission denied password

典型提示:

1
Permission denied, please try again.

常见原因:

  • 密码错了。
  • 用户名错了。
  • 服务器禁用了密码登录。
  • root 被禁止远程登录。
  • 云厂商没有给这个镜像开启密码登录。

检查 /etc/ssh/sshd_config

1
2
PasswordAuthentication yes
PermitRootLogin yes

更推荐做法是:使用控制台或 Web SSH 登录服务器,把公钥配置好,然后改用密钥登录。

REMOTE HOST IDENTIFICATION HAS CHANGED

典型提示:

1
2
3
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

常见原因:

  • 服务器重装系统了。
  • 云服务器 IP 绑定到了另一台机器。
  • 你连接到了错误的服务器。
  • 存在中间人攻击风险。

如果你确认是自己重装了服务器,可以删除本地旧指纹:

1
ssh-keygen -R 服务器IP

如果你使用的是域名:

1
ssh-keygen -R example.com

如果有自定义端口:

1
ssh-keygen -R "[服务器IP]:2222"

然后重新连接,确认新指纹。

主机指纹变化

WARNING: UNPROTECTED PRIVATE KEY FILE

典型提示:

1
2
WARNING: UNPROTECTED PRIVATE KEY FILE!
Permissions 0644 for 'id_ed25519' are too open.

意思是私钥权限太宽,OpenSSH 拒绝使用。

修复:

1
chmod 600 ~/.ssh/id_ed25519

如果是整个 .ssh 目录权限有问题:

1
2
chmod 700 ~/.ssh
chmod 600 ~/.ssh/*

注意:如果 .ssh 里有 .pub 公钥文件,公钥权限宽一点通常没关系,但统一收紧也可以。

Too many authentication failures

典型提示:

1
Too many authentication failures

本地 SSH Agent 里可能加载了太多私钥,服务器试了几把都失败,就断开了。

指定私钥并限制只使用它:

1
ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 用户名@服务器IP

或者写入 ~/.ssh/config

1
2
3
4
5
Host myserver
HostName 服务器IP
User root
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes

no matching host key type found

典型提示:

1
no matching host key type found. Their offer: ssh-rsa

这常见于很旧的服务器。较新的 OpenSSH 默认不再接受一些旧的 ssh-rsa 算法组合。

更推荐的修复方式是升级服务器系统和 OpenSSH,重新生成现代主机密钥。如果只是临时连接旧设备,可以临时加参数:

1
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa 用户名@服务器IP

不建议长期这样使用。旧算法兼容只是救急方案,不是安全方案。

新手安全清单

SSH 能登录以后,建议至少做这些事:

flowchart TD
    A[首次登录服务器] --> B[更新系统软件包]
    B --> C[创建普通用户]
    C --> D[给普通用户配置 sudo]
    D --> E[配置 SSH 密钥登录]
    E --> F[确认新终端可用密钥登录]
    F --> G[关闭密码登录]
    G --> H[限制安全组来源 IP]
    H --> I[保留云厂商控制台救援入口]

更新系统

Debian / Ubuntu:

1
2
sudo apt update
sudo apt upgrade -y

CentOS / Rocky / AlmaLinux:

1
sudo dnf update -y

旧 CentOS 可能使用:

1
sudo yum update -y

不要把私钥发给别人

再强调一次:

  • .pub 结尾的是公钥,可以放服务器。
  • 没有 .pub 的是私钥,只能放自己电脑。

如果私钥泄露,应该立刻:

  1. 删除服务器 authorized_keys 里对应的公钥。
  2. 本地重新生成新密钥。
  3. 把新公钥部署到服务器。

保留救援入口

在你还不熟悉 SSH 配置时,建议保留至少一种救援方式:

  • 云厂商 Web SSH。
  • 云厂商 VNC 控制台。
  • 快照或备份。
  • 还没关闭的旧 SSH 会话。

SSH 配置改错并不可怕,可怕的是没有任何入口能改回来。

常用命令速查

最后把常用命令整理一下。

登录

1
2
3
ssh root@服务器IP
ssh -p 2222 root@服务器IP
ssh -i ~/.ssh/id_ed25519 root@服务器IP

生成密钥

1
2
ssh-keygen -t ed25519 -C "your_email@example.com"
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

复制公钥

1
2
ssh-copy-id root@服务器IP
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@服务器IP

服务器权限

1
2
3
mkdir -p ~/.ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

检查 SSH 服务

1
2
3
4
sudo sshd -t
sudo systemctl status ssh
sudo systemctl status sshd
ss -tlnp | grep ssh

修复 known_hosts

1
2
ssh-keygen -R 服务器IP
ssh-keygen -R "[服务器IP]:2222"

END

到这里,你已经掌握了 SSH 登录 Linux 服务器的核心方法。

如果你是第一次接触 Linux 服务器,建议先按这个顺序练习:

  1. 用密码登录一次服务器。
  2. 生成 SSH 密钥。
  3. 把公钥部署到服务器。
  4. 用密钥登录。
  5. ~/.ssh/config
  6. 创建普通用户并配置 sudo。
  7. 确认密钥登录没问题后,再关闭密码登录。

SSH 是服务器世界的入口。刚开始看起来只是一个黑色终端,但熟悉以后,你会发现它非常稳定、清晰,也很适合自动化。后续搭建网站、部署 Docker、配置 Nginx、查看日志,基本都会从这一步开始。

如果你还需要 Linux 图形桌面,可以参考:

最后,如果你觉得本篇教程对你有帮助,欢迎加入我们的开发者交流群: 812198734 ,希望开发者可以共同探索技术。



详解如何 SSH 远程登录自己的 Linux 服务器
https://www.mintimate.cn/2021/12/03/connectToLinux/
作者
Mintimate
发布于
2021年12月3日
许可协议