如果你经常需要与服务器建立 SSH 连接,那么每次输入密码就很麻烦。而且,有时候还会有无法启动的问题。例如,在我要展示的例子中,我每次构建脚本时都使用 ssh 连接,那么手动输入密码在这里就是不可选的。
因此,将服务器和客户端配置为接受安全的 ssh 连接而且还无需输入密码会是一件很有用的事。那么如果要配置的话,必须要做的一件事就是要生成一个公钥/私钥对,并将公共部分复制到服务器端的适当位置。
所以,需要在用户的主目录中,在客户端机器上,键入:
1 |
local> ssh-keygen -t rsa -f ~/.ssh/id_rsa |
-t 告知加密类型
-f 告知在哪里存储公钥/私钥对。在上述例子中,正在使用的是主目录中的 .ssh 目录
接着你会被要求输入密码,这个时候什么密码都不要输入,你只需按 <enter>键即可。
现在,转到 .ssh 目录,你会发现两个新文件: id_rsa 和id_rsa.pub。后一个是公共部分。现在,将公钥复制到服务器的机器中:
1 2 |
local> cd ~/.ssh local> scp id_rsa.pub user@remote:~/.ssh/id_rsa.pub |
当然,这次你就需要输入密码。现在,登录到服务器机器并转到服务器端的 .ssh 目录:
1 2 |
local> ssh user@remote remote> cd ~/.ssh |
然后将客户端的公钥添加到服务器上的已知公钥中:
1 2 3 4 |
remote> cat id_rsa.pub >> authorized_keys2 remote> chmod 640 authorized_keys2 remote> rm id_rsa.pub remote> exit |
这样操作完成之后,下次登录远程服务器时,你就不需要再输入密码了。如果这样还是不起作用,那么你可以尝试使用authorized_keys 而不是authorized_keys2,因为它可能是由你所使用的Linux 版本决定的。
请注意,使用上述方法之后,你的系统中不会有任何机器的IP 地址和特定用户变动,它仍然是安全的。
不过,去年 9 月的时候他们将 DSA 替换为 RSA了,因为 DSA 密钥已被 OpenSSH 弃用了。
备注:本篇文章最早撰写于 2010 年 2 月,更新修改于2020年9月。部分内容并非最新,仅供大家参考。

文章翻译者:Nicholas,技术支持工程师、瑞科慧联(RAK)高级工程师,深耕嵌入式开发技术、物联网行业多年,拥有丰富的行业经验和新颖独到的眼光!