李成笔记网

专注域名、站长SEO知识分享与实战技巧

Mac M1 用户使用 SSH 密钥登录远端 Linux 服务器笔记

目标:在你的 MacBook(M1 芯片) 上生成 SSH 密钥,并用它免密码登录远端服务器(如 root@129.28.153.89)

前提条件

  • 你的电脑:Apple Silicon M1/M2/M3 Mac(系统 macOS Sonoma/Ventura 等)
  • 终端工具:TerminaliTerm2
  • 远端服务器:Linux(如 CentOS、Ubuntu、TencentOS),公网 IP 为 129.28.153.89
  • 你目前可以通过密码登录服务器(用于上传公钥)
  • SSH 端口是 22(或你知道非标准端口)

第一步:在 Mac 上生成 SSH 密钥对(推荐 ed25519)

1. 打开终端

  • 打开 应用程序 → 实用工具 → 终端,或使用 iTerm2

2. 运行命令生成密钥

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

ed25519 是现代、更安全、更快的算法,M1 完美支持 -C "..." 是注释,可写邮箱或描述(如 mac-m1@company.com)


3. 按提示操作

Enter file in which to save the key (/Users/你的用户名/.ssh/id_ed25519):

直接按回车,使用默认路径:~/.ssh/id_ed25519

Enter passphrase (empty for no passphrase):

建议设置一个密码(passphrase),用于保护私钥(防止 Mac 丢失后被滥用) 输入后回车,再重复一次

成功后你会看到:

Your identification has been saved in /Users/你的用户名/.ssh/id_ed25519
Your public key has been saved in /Users/你的用户名/.ssh/id_ed25519.pub
The key fingerprint is: ...

生成的文件说明

文件

路径

作用

能否分享

id_ed25519

~/.ssh/id_ed25519

私钥 —— 只能本地保存,绝不外传

绝对不能泄露!

id_ed25519.pub

~/.ssh/id_ed25519.pub

公钥 —— 要上传到服务器

可以安全上传

.pub 结尾的是公钥,可以复制;没有 .pub 的是私钥,必须保护!


第二步:将公钥上传到远端服务器

方法一:使用 ssh-copy-id(推荐,最简单)
Mac 默认可能没有 ssh-copy-id,先安装:

# 安装(如果提示 command not found)
brew install ssh-copy-id

如果没装 Homebrew,先安装: 打开终端运行:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

上传公钥

ssh-copy-id root@129.28.153.89

如果 SSH 端口不是 22(比如是 2222),加 -p 参数:

ssh-copy-id -p 2222 root@129.28.153.89

系统会提示你输入服务器密码:

root@129.28.153.89's password:

输入 服务器 root 用户的密码(不是你 Mac 的密码,也不是私钥的 passphrase)

成功后你会看到:

Number of key(s) added: 1
Now try logging into the machine...

方法二:手动复制公钥(适用于无法使用 ssh-copy-id)

1. 查看并复制公钥内容

cat ~/.ssh/id_ed25519.pub

你会看到一长串内容,类似:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG4... mac-m1@company.com

全选并复制这一整行(从 ssh-ed25519 开始,到邮箱结束)

2. 登录服务器(用密码)

ssh root@129.28.153.89

输入密码登录

3. 在服务器上创建 .ssh目录(如不存在)

mkdir -p ~/.ssh

4. 将公钥写入 authorized_keys

echo "你复制的公钥内容" >> ~/.ssh/authorized_keys

"你复制的公钥内容" 替换成你从 Mac 复制的完整字符串

5. 设置权限(非常重要!)

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

SSH 安全机制要求严格权限,否则会拒绝密钥登录

第三步:测试密钥登录

退出当前会话:

exit

然后重新连接:

ssh root@129.28.153.89

你会看到:

  • 如果设置了 passphrase:提示你输入一次
  • 如果没设:直接登录成功,无需输入服务器密码

恭喜!你已经实现 免密码安全登录

第四步:(可选)禁用密码登录,提升安全性

请确保你已能用密钥登录,否则可能把自己锁在外面!

1. 登录服务器

ssh root@129.28.153.89

2. 编辑 SSH 配置

sudo vim /etc/ssh/sshd_config

找到并修改:

PasswordAuthentication no
ChallengeResponseAuthentication no

确保没有被 # 注释

3. 重启 SSH 服务

systemctl restart sshd

现在服务器只接受密钥登录,彻底防止暴力破解。

第五步:(可选)简化登录命令(设置别名)

不想每次都输 ssh root@129.28.153.89

编辑本地 SSH 配置:

vim ~/.ssh/config

添加:

Host myserver
    HostName 129.28.153.89
    User root
    IdentityFile ~/.ssh/id_ed25519
    Port 22
    AddKeysToAgent yes
    UseKeychain yes  # macOS 特有:把 passphrase 保存到钥匙串

UseKeychain yes:让你的 passphrase 自动保存在 macOS 钥匙串中,只需输入一次

保存后,以后只需输入:

ssh myserver

即可登录!

常见问题(Mac M1 专属)

问题

解决方法

ssh-copy-id: command not found

运行 brew install ssh-copy-id

登录时提示 Permission denied (publickey)

检查服务器 ~/.ssh/authorized_keys 权限为 600

每次都要输 passphrase?

添加 UseKeychain yes~/.ssh/config,下次输入后会自动记住

如何查看已保存的密钥?

ssh-add -L 查看已加载的私钥

如何清除已加载的密钥?

ssh-add -D 删除所有

总结:Mac M1 用户完整流程

步骤

命令

1. 生成密钥

ssh-keygen -t ed25519 -C "your@email.com"

2. 安装工具

brew install ssh-copy-id

3. 上传公钥

ssh-copy-id root@129.28.153.89

4. 测试登录

ssh root@129.28.153.89

5. (可选)设置别名

编辑 ~/.ssh/config

6. (可选)禁用密码登录

修改 /etc/ssh/sshd_configPasswordAuthentication no

安全提醒(Mac 用户特别注意)

  • 私钥文件(id_ed25519不要备份到 iCloud、iMessage、邮件
  • 启用 FileVault 全盘加密,保护私钥
  • 如果 Mac 丢失,立即在服务器上删除 ~/.ssh/authorized_keys 中的公钥
  • 建议将私钥备份到加密 U 盘(如使用 VeraCrypt

现在你已经完成所有配置!

只需运行:

ssh root@129.28.153.89

或(如果你设置了别名):

ssh myserver

即可安全、快速、免密登录远端服务器。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言