服务器管理
FinalShell 在 macOS 上用密钥登录?手把手教你安全又便捷
嗨,macOS 用户们,FinalShell 是个挺不错的 SSH 工具,但每次连接服务器都要输密码是不是有点烦?而且密码登录安全性也确实不如密钥。今天咱们就来聊聊,怎么在 macOS 上优雅地用 FinalShell 配置密钥登录,一次设置,终身受益!
最近 FinalShell 更新到了 v4.7.1,界面和功能都越来越完善。我发现很多 Mac 用户在配置密钥登录时会遇到一些小麻烦,尤其是对命令行操作不熟悉的朋友。别担心,我来教你一步步搞定。
一、生成你的专属 SSH 密钥对
密钥登录的第一步,当然是先在你的 macOS 本地生成一对 SSH 密钥。这就像给你服务器的“门”配一把特殊的“钥匙”(私钥)和一个“锁眼”(公钥)。
-
打开终端应用: 在 macOS 上,按下
Command + Space搜索“终端”并打开。 -
输入生成命令: 在终端中输入以下命令并回车:
ssh-keygen -t rsa -b 4096 -C "你的邮箱或其他标识"-t rsa:指定密钥类型为 RSA。-b 4096:设置密钥长度为 4096 位,更安全。-C "你的邮箱或其他标识":为密钥添加注释,方便你识别。
-
按提示操作:
- 系统会询问你密钥保存路径 (
Enter file in which to save the key (/Users/你的用户名/.ssh/id_rsa):)。如果你没有特殊需求,直接按回车使用默认路径即可。这样会生成id_rsa(私钥) 和id_rsa.pub(公钥) 两个文件在~/.ssh/目录下。 - 接着会让你输入一个密码(
Enter passphrase (empty for no passphrase):)。这个密码是用来保护你的私钥的,强烈建议设置一个!每次使用私钥登录时都需要输入这个密码,但 FinalShell 可以帮你记住。如果你不想每次都输,也可以留空,但安全性会降低。
- 系统会询问你密钥保存路径 (
至此,你的密钥对就已经生成好了。私钥 id_rsa 留在本地,绝对不能泄露;公钥 id_rsa.pub 则需要上传到服务器上。
二、将公钥部署到远程服务器
有了公钥,下一步就是把它放到你要连接的服务器上。服务器通过这个公钥来识别你的私钥,允许你登录。
-
复制公钥内容: 在终端中,使用
cat命令查看你的公钥内容,并复制到剪贴板:cat ~/.ssh/id_rsa.pub把显示出来的以
ssh-rsa开头的一长串内容全部复制下来。 -
登录服务器创建文件: 使用你目前的密码登录方式或者其他方式(例如网页控制台)先登录到目标服务器。
- 如果服务器上还没有
.ssh目录,需要先创建:mkdir -p ~/.ssh chmod 700 ~/.ssh - 然后创建一个
authorized_keys文件(如果已存在则追加):
我踩过一个坑,就是touch ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys~/.ssh目录和~/.ssh/authorized_keys文件的权限设置不对,导致密钥登录一直失败,系统会提示权限过于开放。一定要记得chmod 700 ~/.ssh和chmod 600 ~/.ssh/authorized_keys!
- 如果服务器上还没有
-
将公钥粘贴到
authorized_keys文件:echo "刚刚复制的公钥内容" >> ~/.ssh/authorized_keys请将
"刚刚复制的公钥内容"替换为你之前复制的id_rsa.pub内容。注意是双>>,表示追加,以免覆盖原有内容。
现在,服务器已经有了你的“锁眼”,可以识别你的“钥匙”了。
三、配置 FinalShell 使用密钥登录
重头戏来了!在 macOS 上的 FinalShell 客户端中配置使用我们刚刚生成的密钥。
-
打开 FinalShell 并创建新连接: 启动 FinalShell,在左侧会话树上右键点击“新增会话”->“SSH会话”,或者点击上方工具栏的“文件”->“新增会话”->“SSH会话”。
-
填写连接信息:
- 名称: 给你的连接起个好听的名字,比如“我的云服务器-密钥”。
- 主机: 填写你的服务器 IP 地址或域名。
- 端口: 默认是 22,如果你的服务器修改过 SSH 端口,请填写对应端口。
- 用户: 填写你在服务器上的用户名,通常是
root或你创建的其他用户。
-
配置身份验证:
- 在连接弹窗中,找到“身份验证”区域。
- 将“方式”下拉菜单从“密码”切换到“RSA/DSA(SSH密钥)”。
- 点击“私钥文件”右侧的文件夹图标,在弹出的文件选择器中,导航到你之前生成私钥的路径(默认在
~/.ssh/下),选择id_rsa文件。 - 如果你的私钥设置了密码,在“私钥密码”字段中输入。FinalShell 会提示你是否保存密码,建议保存,这样下次连接就不用再次输入了。
-
保存并连接:
- 确认所有信息无误后,点击右下角“确定”按钮保存会话。
- 在左侧会话树中双击你新建的会话,FinalShell 就会尝试使用私钥进行连接了。
- 如果一切顺利,你应该就能成功进入服务器的命令行界面了!
恭喜你,现在你可以通过 FinalShell 在 macOS 上,使用更安全的密钥方式登录服务器了!你还可以利用 FinalShell 的文件传输功能
轻松管理服务器文件,参考 /blog/finalshell-sftp-file-transfer/,或者设置更高级的端口转发功能 /blog/finalshell-port-forwarding-guide/ 来做更多事情。
常见问题
即使按照步骤操作,也可能会遇到一些小麻烦。这里列出几个常见问题及其解决办法。
-
问题:FinalShell 连接时提示“认证失败”或“Permission denied (publickey).”
- 原因分析: 最常见的是服务器上的公钥文件
~/.ssh/authorized_keys权限不对,或者公钥内容有误。也可能是私钥密码输入错误。 - 解决办法:
- 登录服务器,检查
~/.ssh目录权限是否为700(drwx------),~/.ssh/authorized_keys文件权限是否为600(-rw-------)。如果不正确,使用chmod 700 ~/.ssh和chmod 600 ~/.ssh/authorized_keys进行修正。 - 再次
cat ~/.ssh/id_rsa.pub检查本地公钥内容,然后cat ~/.ssh/authorized_keys检查服务器上的公钥内容是否完全一致,是否有额外的空格或换行。 - 确认在 FinalShell 中输入的私钥密码是否正确。
- 登录服务器,检查
- 原因分析: 最常见的是服务器上的公钥文件
-
问题:FinalShell 提示“连接超时”或“Connection refused”。
- 原因分析: 这通常不是密钥配置的问题,而是服务器 SSH 服务没有运行、防火墙阻挡了连接、或者 IP 地址/端口输入错误。
- 解决办法:
- 首先检查服务器的 IP 地址和端口号是否正确。
- 确认服务器 SSH 服务是否正常运行(例如,对于 Ubuntu/Debian 系统,
sudo systemctl status ssh)。 - 检查服务器防火墙(如
ufw或云服务商的安全组)是否允许你的 IP 地址访问 SSH 端口(默认 22)。
-
问题:FinalShell 私钥文件选择器中找不到我生成的
id_rsa文件。- 原因分析: macOS 默认隐藏了
~/.ssh这样的点开头文件,在文件选择器中可能不容易找到。 - 解决办法:
- 在 FinalShell 的文件选择器中,当你打开“选择私钥文件”的窗口时,可以尝试按下
Command + Shift + .(句号键),这会显示隐藏文件和文件夹。然后你就能看到.ssh文件夹了。 - 或者,你可以在路径栏中手动输入
~/.ssh/id_rsa来选择。
- 在 FinalShell 的文件选择器中,当你打开“选择私钥文件”的窗口时,可以尝试按下
- 原因分析: macOS 默认隐藏了
-
问题:我想在 Windows 上也使用这个密钥怎么办?
- 原因分析: 你可能需要在不同操作系统之间迁移你的私钥文件。
- 解决办法: 将你的
id_rsa私钥文件(切记!是私钥,不是公钥)通过安全的方式(如 U盘加密传输、SFTP)复制到你的 Windows 电脑上,然后在 Windows 版 FinalShell 中同样选择这个私钥文件进行配置。如果你是 FinalShell 的老用户,可以参考/blog/finalshell-windows-install-guide/这篇文章,里面有 Windows 客户端安装和基础使用的介绍。
延伸阅读
若需进一步查阅,可先看本站以下教程: