生成公私密钥对
首先,我们需要在 Mac 终端中生成 SSH密钥对 ,当然你可以先检查是否已经生成过密钥对。
检查是否已存在公私钥对
在mac上打开terminal。更改目录到~/.ssh目录。list当前目录可以看到所有公私钥文件。拥有.pub结尾的文件是公钥文件,无.pub的是私钥文件
# 更换目录到 ~/.ssh
cd ~/.ssh
# 查看当前目录公私钥文件
ls
生成公私钥对
这步适用于上一步list观察之后当前文件夹不存在公私钥对的情况
ssh-keygen
出现如下图所示,这时候请不要一直回车,输入相应的文件名称,因为不输入的话是默认生成 id_rsa 和 id_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 文件夹权限为 700,authorized_keys 文件权限为 600。
- SSH 密钥不匹配:如果生成的密钥与服务器上的不匹配,SSH 将拒绝连接。请重新生成密钥并重新添加到服务器。