技术实操
FinalShell 在 macOS 上搞定 SSH 密钥登录,告别密码输入烦恼!
作为一名经常要维护服务器的技术人,我深知每次输入服务器密码的痛苦。尤其是在 macOS 上使用 FinalShell 这样的工具,如果能直接用密钥登录,那效率和安全性都会大大提升。今天就手把手教你在 macOS 系统上,如何利用 FinalShell 的 4.6.0 版本进行 SSH 密钥登录,彻底告别频繁输入密码的烦恼。

为什么推荐密钥登录?
传统的密码登录方式,密码越简单越容易被破解,密码越复杂又越难记忆和输入。而 SSH 密钥登录(Public Key Authentication)则完美解决了这些痛点。它通过一对加密的密钥来验证身份:一个私钥保存在本地,一个公钥上传到服务器。这种方式的优点显而易见:
- 安全性更高: 密钥对通常长度更长,加密性更强,比普通密码更难被暴力破解。
- 操作更便捷: 一旦配置完成,你无需每次手动输入密码,一键连接,省时省力。
- 自动化集成: 方便脚本进行自动化操作,无需人工干预。
第一步:在 macOS 上生成 SSH 密钥对
首先,我们需要在你的 macOS 电脑上生成一对 SSH 密钥。这个过程非常简单,只需要打开“终端”应用,然后输入以下命令:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
这条命令的含义是:
ssh-keygen: 用于生成密钥的工具。-t rsa: 指定密钥类型为 RSA。-b 4096: 指定密钥长度为 4096 位,安全性更高(默认是 2048 位)。-C "your_email@example.com": 为密钥添加一个注释,通常是你的邮箱,方便识别。
执行命令后,它会询问你密钥的保存位置,默认是在 ~/.ssh/id_rsa,直接按回车即可。然后会让你输入一个密码(passphrase),这是用于保护私钥的密码。如果你不希望每次使用私钥时都输入密码,可以直接按回车留空,但我个人建议为了安全还是设置一个。当你执行完命令后,终端会提示你密钥文件保存的路径,通常是 ~/.ssh/id_rsa (私钥) 和 ~/.ssh/id_rsa.pub (公钥),一定要记下这个路径。
第二步:将公钥上传到你的服务器
生成了密钥对之后,我们需要把公钥 id_rsa.pub 上传到你想要连接的服务器上。这里有两种常见的方法:
方法一:使用 ssh-copy-id 命令(推荐)
如果你的 macOS 系统和服务器都安装了 ssh-copy-id 工具(通常是默认安装),这是最方便的方法:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@your_server_ip
-i ~/.ssh/id_rsa.pub: 指定要上传的公钥文件。user@your_server_ip: 服务器的用户名和 IP 地址。
执行后会让你输入一次服务器的密码,成功后,公钥就会自动添加到服务器用户家目录下的 ~/.ssh/authorized_keys 文件中。想了解更多关于 SSH 密钥的配置细节,可以参考 FinalShell SSH 密钥配置指南。
方法二:手动上传公钥
如果 ssh-copy-id 不可用,你也可以手动完成:
- 获取公钥内容: 在本地 macOS 终端中输入
cat ~/.ssh/id_rsa.pub,然后复制显示出来的全部内容。 - 连接服务器: 使用密码方式首次连接到服务器:
ssh user@your_server_ip。 - 创建或编辑
authorized_keys文件:- 首先,确保
~/.ssh目录存在并且权限正确:mkdir -p ~/.ssh chmod 700 ~/.ssh - 然后,将你复制的公钥内容添加到
~/.ssh/authorized_keys文件中。注意是>>而不是>,以避免覆盖已有内容。echo "你的公钥内容(从本地复制的)" >> ~/.ssh/authorized_keys - 最后,设置
authorized_keys文件的权限:chmod 600 ~/.ssh/authorized_keys
- 首先,确保
完成以上步骤后,你的服务器就配置好了,可以接受你本地的密钥登录请求了。
第三步:在 FinalShell (macOS 4.6.0) 中配置 SSH 会话
现在,我们回到 FinalShell 客户端,配置一个新的会话来实现密钥登录:
- 打开 FinalShell: 启动你的 FinalShell (macOS 4.6.0) 客户端。
- 新建会话: 点击左上角的 “文件” -> “新建” -> “SSH会话”,或者直接点击界面上的“新建会话”按钮。
- 填写连接信息:
- 名称: 给你的会话起一个好记的名字,比如“我的生产服务器”。
- 主机: 填写你的服务器 IP 地址或域名。
- 端口: SSH 默认端口是 22,如果你的服务器修改了,记得填写正确的端口号。
- 用户名: 填写你在服务器上的用户名,比如
root或ubuntu。
- 配置认证方式:
- 在弹出的连接配置窗口中,你会看到一个 “认证方式” 的下拉菜单,务必选择
'publickey'。 - 接着,在下方出现的 “私钥文件” 文本框里,填入你本地私钥文件的完整路径,比如
/Users/你的用户名/.ssh/id_rsa。可以直接点击右侧的文件夹图标进行选择。 - 如果你的私钥在生成时设置了密码(passphrase),别忘了在 “私钥密码” 栏位里也填上。
- 在弹出的连接配置窗口中,你会看到一个 “认证方式” 的下拉菜单,务必选择
- 保存并连接: 确认所有信息无误后,点击右下角的 “保存” 按钮。然后在左侧会话树中找到你刚创建的会话,双击即可连接。如果一切顺利,你应该就能无需密码直接连接到服务器了。
如果你是 FinalShell 新用户,也可以看看 FinalShell Windows 安装指南,了解一些基础操作。
常见问题和解决方法
在配置 SSH 密钥登录过程中,你可能会遇到一些问题,别担心,这里有一些常见的解决方法。
1. FinalShell 提示 '认证失败' 或 'Permission denied (publickey)'?
这是最常见的错误。通常是以下原因造成的:
- 服务器
~/.ssh/authorized_keys文件权限不正确: 确保该文件权限是600(-rw-------),所属用户和用户组正确。chmod 600 ~/.ssh/authorized_keys可以解决。 - 服务器
~/.ssh目录权限不正确: 确保目录权限是700(drwx------)。chmod 700 ~/.ssh可以解决。 - 公钥内容复制错误: 检查
authorized_keys文件中的公钥内容是否完整、正确,没有多余的空格或换行符。我之前就踩过一个坑,粗心大意地把公钥内容复制错了,或者文件权限没给对,结果连着好几次都报这个错,排查半天才发现是自己的小失误。 - FinalShell 私钥路径错误: 再次检查你在 FinalShell 中填写的私钥文件路径是否正确,且本地私钥文件存在。
- 服务器 SSH 服务配置: 确认服务器的
/etc/ssh/sshd_config文件中PubkeyAuthentication设置为yes,修改后需要重启 SSH 服务sudo systemctl restart sshd。
2. 每次连接都要输入私钥密码,太麻烦了?
如果你为私钥设置了密码,FinalShell 会在每次连接时要求你输入。在 macOS 上,你可以利用 ssh-agent 和钥匙串(Keychain)来记住这个密码:
在终端中运行:
ssh-add -K ~/.ssh/id_rsa
这会将你的私钥添加到 ssh-agent,并存储在 macOS 的钥匙串中。下次连接时,FinalShell 就无需再次询问密码了。
3. 连接速度慢或者文件传输有问题?
这通常与网络环境有关,可能是你本地网络不稳定,或者是服务器的带宽有限。你可以尝试更换一个网络环境再试,或者检查服务器负载。FinalShell 也提供了 SFTP 功能进行文件传输,如果你传输大文件遇到问题,可以参考 FinalShell SFTP 文件传输攻略 看看是否有空间。
4. macOS 系统更新后,FinalShell 突然连不上了?
macOS 系统更新有时会影响 SSH 代理或权限设置。这可能会导致 ssh-agent 无法正常工作,从而影响 FinalShell 的密钥认证。你可以尝试以下步骤:
- 重启 FinalShell 客户端。
- 在终端中运行
ssh-add -D清除所有已加载的密钥。 - 然后重新运行
ssh-add -K ~/.ssh/id_rsa将你的私钥重新添加到钥匙串和ssh-agent中。
了解更多 FinalShell 的高级功能,比如 FinalShell 端口转发指南,也能帮助你解决一些连接和访问的特殊需求。希望这篇教程能帮助你在 macOS 上顺利使用 FinalShell 密钥登录,提升你的工作效率!
延伸阅读
若需进一步查阅,可先看本站以下教程: