Web Development

/ 换个头像心好累 / 0评 / 1/ 最后更新:2022-04-12
ssh免密码登录

需求场景

每次登录服务器都使用密码登录是很烦人的,很容易忘记密码,还有个出于安全考虑的原因,一般推荐使用ssh密钥登录。

解决方案

在客户端`~./.ssh/`目录下执行命令,生成密钥对

ssh-keygen -t rsa

在服务端`~./.ssh/`目录下新建 authorized_keys 文件,并把客户端生成的pub公钥的内容写入。

进阶思考

很多文章都是采用上面的方式在本地执行`ssh-keygen -t rsa`生成密钥对,然后将本地生成的pub公钥写入服务器端的authorized_keys的文件中。这样做并没有什么问题,并且一直以来博主也是这么做的,直到有次用到了腾讯云自带的密钥登录功能,发现一个很有意思的事情,他是在服务端执行` ssh-keygen -t rsa`生成密钥,然后将服务端的pub密钥写入自己的 authorized_keys 文件中,然后将私钥提供给用户下载,用户每次登录需要携带服务端的私钥。然后就发现新世界了,在本地或者服务端生成密钥其实都可以,只需要保持私钥和公钥的匹配即可。

腾讯云这样做的原因是作为服务商他只有服务器的权限,没有用户电脑的权限,当然在服务端生成比较合适。博主之前一直使用本地生成密钥对的方式,在使用过程中发现有一个缺点,就是客户端往往不止一台,就需要生成多个密钥加入服务端,此外客户端生成的密钥不稳定,有时候会被不小心清理掉。然后又需要重新生成。也就会出现密钥对很多且不稳定。而采用服务端生成密钥对的方式就解决了这两个问题。密钥只需要生成一次,客户端使用用一个私钥登录,此外服务端的密钥一般不会轻易改动,稳定性也大。

1

Leave a Reply

Your email address will not be published. Required fields are marked *