SSH免密登陆
原文地址 zhuanlan.zhihu.com
0. 抱怨(可跳过)
每次新建一个服务器,需要使用 ssh 远程连接的服务器的时候我就会回忆起每次恶心的配置 ssh 公私钥免密登陆过程。每次配置都会折腾很多次,一开始不懂公私钥的概念,所以配置上思路出了点问题。如今已经很理解公私钥了,还是被坑。近来认真一看网上的文章,我发现大部分教程对于 mac 用户是有问题的。那就是少了一步 ssh-add。本文给出 mac 设置公私钥免密登录的正确步骤。
1. 步骤 (本文重点)
1)检查是否已存在公私钥对
在 mac 上打开 terminal。更改目录到~/.ssh 目录。list 当前目录可以看到所有公私钥文件。拥有. pub 结尾的文件是公钥文件,无. pub 的是私钥文件。
> cd ~/.ssh
# 更换目录到 ~/.ssh
> ls
# 查看当前目录公私钥文件
2)生成公私钥对 (可选步骤)
这部适用于上一步 list 观察之后当前文件夹不存在公私钥对的情况。
> ssh-keygen
# 根据交互,输入你想要的名字(默认id_rsa)
# 然后是passphrase,设置为空即可。这样就生成了一对公私钥
> ls
# 这时候当前目录下会多了一对公私钥对。
3)上传公钥到服务器
这一步从本地将公钥文件上传到服务器指定目录。
> ssh-copy-id -i [公钥文件] user@host
# user是你的ssh的用户,host是服务器地址,这时候还要输入密码。
# 例子:ssh-copy-id -i id_rsa.pub root@111.111.111.111
4)ssh-add (mac 的坑点)
好一般别的系统到第三步就可以免密登陆了,但是 mac 并不这样。还要调用 ssh-add。
> ssh-add -K [你的私钥文件,就是那个不加.pub结尾的文件]
# 例如,ssh-add -K id_rsa
按照这四个步骤执行就可以免秘登陆远程的 linux 服务器了。注意以上所有命令都是在本地机子执行。第三步用到了上传工具 ssh-copy-id,这个工具直接讲公钥上传到了服务器,所以简化了使用 ssh 连接服务器,再在服务器上注册公钥这个步骤。
2. 搞了这么久,到底在干嘛?
ssh 是一个远程连接服务器的工具。普通的情况下,用户远程连接的时候需要给出用户的密码。所以每次使用 ssh 连接都要输入密码。如果你是一个运维,或者一个喜欢在服务器上直接写代码的程序员你可能经常要重复输入密码。这样子的结果就是很烦。
公私钥是一个加密学的技术。原理我们跳过,只要知道这歌技术很安全,很难破解。我们可以在服务器上丢一个公钥,然后本地只要有与之对应的私钥。就可以不需要密码验证就能登录服务器。这样就免去了每次输入密码的痛苦。而且这样登录相对使用密码登录更加安全