thumbnail
SSH 免密登录是一种安全且便捷的方式,可以让你在不输入密码的情况下远程登录到服务器。在 Mac 终端上配置 SSH 免密登录可以提高工作效率并增强系统安全性。本文将介绍如何在 Mac 终端上设置 SSH 免密登录,以及一些常见问题的解决方法。
来自AI生成

生成公私密钥对

首先,我们需要在 Mac 终端中生成  SSH密钥对 ,当然你可以先检查是否已经生成过密钥对。

检查是否已存在公私钥对

在mac上打开terminal。更改目录到~/.ssh目录。list当前目录可以看到所有公私钥文件。拥有.pub结尾的文件是公钥文件,无.pub的是私钥文件

# 更换目录到 ~/.ssh
cd ~/.ssh
# 查看当前目录公私钥文件
ls 

生成公私钥对

这步适用于上一步list观察之后当前文件夹不存在公私钥对的情况

ssh-keygen  

出现如下图所示,这时候请不要一直回车,输入相应的文件名称,因为不输入的话是默认生成 id_rsaid_rsa.pub 两个文件

你可以输入任意你自己喜欢的文件名,然后回车,接下来是 passphrase ,直接回车设置为空即可。这样就生成了一对公私钥

➜ ssh-keygen    
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/scott/.ssh/id_ed25519):

上传公钥到服务器

接下来,将生成的公钥添加到你想要连接的远程服务器上。使用 ssh-copy-id 命令可以方便地将公钥复制到远程服务器上:

ssh-copy-id -i [公钥文件] user@host 
# user是你的ssh的用户,host是服务器地址,这时候还要输入密码。
# 例子:ssh-copy-id -i id_rsa.pub root@111.111.111.111

ssh-add(mac的坑点)

一般别的系统到第三步就可以免密登陆了,但是mac并不这样。还要调用ssh-add

ssh-add -K [你的私钥文件,就是那个不加.pub结尾的文件] 
# 例如,ssh-add -K id_rsa

使用配置文件连接

截止到上面已经可以实现免密登陆了,虽然不用每次都输入密码,但还是要输入服务器的用户名和 IP 地址,还是挺麻烦的。

这时候可以给 IP 配置一个别名,进而简化连接操作。

# 同样在~/.ssh/目录下,添加一个配置文件
cd ~/.ssh/ 
vim config

然后在打开的vim编辑界面增加以下配置

# 可以设置多个
Host blog  # 远程主机别名
  HostName 192.168.63.8  # 远程主机ip
  User root  # 你在远程主机的用户名
  Port 22
  IdentityFile ~/.ssh/id_ssh  # 你的ssh秘钥文件

这样直接通过别名就可以访问了

ssh blog

如果一切设置正确,你应该能够直接登录到远程服务器,而无需输入密码。

常见问题与解决方法

  • SSH 连接失败:检查服务器上 SSH 服务是否启动,以及防火墙是否允许 SSH 连接。
  • 权限问题:确保 ~/.ssh 文件夹权限为 700authorized_keys 文件权限为 600
  • SSH 密钥不匹配:如果生成的密钥与服务器上的不匹配,SSH 将拒绝连接。请重新生成密钥并重新添加到服务器。