这一篇咱们聚焦两个硬核实操场景:如何用 SSH 密钥彻底告别密码登录的风险,以及如何通过跳板机(堡垒机)安全访问深藏内网的服务器。这两个技能,是区分“会用”和“用好”的分水岭。

为什么密钥认证比输密码安全得多?

很多运维事故的发生,源头就是密码泄露——无论是被暴力破解、撞库,还是不小心把密码传到了公开仓库。SSH 密钥认证的核心思路很简单:你不需要把任何“密码”通过网络传出去,只需要用一把“私钥”来证明你的身份

这个机制的原理是:在客户端生成一对密钥——公钥(可以公开,放在服务器上)和私钥(必须保密,只留在自己的电脑里)。连接时,服务器用公钥发一个“挑战”,客户端用私钥签名响应,匹配上了就放行。整个过程中,没有任何密码在网络上传输,从根本上杜绝了密码泄露的风险。

第一步:生成密钥对

有两种方式可以在 FinalShell 中完成密钥登录的配置,推荐在服务器上直接生成。

用 FinalShell 先用密码登录上服务器,在终端执行以下命令

bash
# 进入 .ssh 目录
cd ~/.ssh

# 生成 RSA 密钥对(-m PEM 确保兼容 FinalShell)
ssh-keygen -m PEM -t rsa -b 4096 -C "finalshell-key"

执行后会提示你设置私钥密码(可以留空直接回车,日常使用更省事;如果设了密码,每次连接时需要额外输入一次私钥密码)。完成后会在 ~/.ssh 目录下生成两个文件:

  • id_rsa:私钥文件(绝不能泄露)

  • id_rsa.pub:公钥文件(要放到服务器上)

第二步:把公钥写入服务器的授权列表

继续在服务器上执行:

bash
# 将公钥追加到 authorized_keys 文件中(注意是 >>,不要用 > 覆盖)
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

# 设置正确的权限(权限过松会被 sshd 拒绝)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

权限这里有两个关键点:~/.ssh 目录权限必须是 700(仅所有者可读写执行),authorized_keys 和私钥文件权限必须是 600(仅所有者可读写)。权限设错了,SSH 服务会直接拒绝密钥认证

第三步:把私钥下载到本地并配置 FinalShell

生成并配置好公钥后,需要把私钥文件从服务器下载到你的本地电脑。推荐用 FinalShell 自带的文件管理功能:在连接的 SFTP 面板里,进入 /root/.ssh/(或对应用户的 ~/.ssh/),找到 id_rsa 文件,右键下载到本地,比如保存在 C:\Users\你的用户名\.ssh\ 目录下

然后在 FinalShell 中新建或编辑连接:

  1. 在“方法”一栏,选择“公钥”(而不是“密码”)

  2. 点击“浏览”,找到并导入你刚才下载到本地的私钥文件(.pem 或 id_rsa 格式)

  3. 保存配置,双击连接。如果一切正常,应该直接进入终端,不再需要输密码。

绝对安全底线:私钥文件一旦泄露,和密码泄露是一样的后果。一定要妥善保管,不要上传到任何公开代码仓库。

场景四:通过跳板机访问内网服务器

在真实的企业环境中,核心服务器往往不直接暴露在公网上,你需要先登录一台“跳板机”(也称堡垒机),再通过它访问内网的目标服务器。

FinalShell 配置跳板机连接非常简单,核心就是在连接目标服务器的设置里,指定跳板机信息。具体操作有两种方式

方式一:在连接设置中指定跳板机

  1. 先配置好跳板机的连接:按照正常流程,新建一个 SSH 连接,填好跳板机的公网 IP、端口、用户名和认证方式(推荐用密钥),并确保能连成功。

  2. 配置目标服务器的连接:再新建一个 SSH 连接,填好目标服务器的内网 IP 和用户名。

  3. 指定跳板机:在目标服务器的连接设置中,找到“高级”或“代理”选项,将“跳板机”或“代理服务器”设置为刚才配置好的跳板机连接

保存后,双击目标服务器的连接,FinalShell 会自动先连跳板机,再通过跳板机连到内网目标服务器,整个过程对用户来说是一步到位的。

方式二:通过隧道转发

如果需要访问的是内网某个特定端口(比如内网 MySQL 的 3306),也可以通过配置 SSH 隧道来实现

  1. 连接上跳板机。

  2. 在跳板机连接的“隧道”选项卡中,添加一条“本地”类型隧道:

    • 监听端口:本地一个空闲端口(比如 3307)

    • 目标地址:内网目标服务器的 IP

    • 目标端口:内网服务的端口(比如 3306)

  3. 保存并重连跳板机,隧道就建立了。

  4. 在本地电脑上连接 127.0.0.1:3307,就相当于直接连接内网目标服务器的 3306 端口。

最后提一个“新手杀手”

千万别把自己锁在门外! 这是配置密钥和跳板机时最容易被忽视的风险。任何时候修改认证配置(比如关闭密码登录、修改 SSH 端口),一定要先保留一条已经成功登录的会话窗口,然后用新配置新建一个连接来验证,确认能连上之后,再关掉旧会话

FinalShell声明:FinalShell站所有内容,资源,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。