SSH key是一对公钥和私钥。
大部分情况下,都是在客户端生成这对key,然后将public key放到服务端。然后客户端就可以免密登录服务器了。(大多数情况都是使用的这种方法)
但是,其实也是可以在服务端生成这对key的,然后将private key放到客户端。这样客户端也可以直接连接服务端。
其实这两种方法没什么区别。在进行验证的时候,客户端拿着的都是私钥,服务端拿着的是公钥。
ssh key只不过是两个文件而已,在哪生成没什么区别。只要保证客户端拿着的都是私钥,服务端拿着的是公钥就行。
public key相当于是一扇门,private key相当于是开门的钥匙。当一台机器A想要登录另一台机器B的时候,就得拿着钥匙去开门。首先被登录的B必须要有门,所以你得给B装上门,也就是将A的公钥放到B的~/.ssh/authorized_keys中。
最近遇到了一个坑:将public key放到想要登录的机器之后,发现登录还是需要密码,不能免密登录。
经过调查发现,自己的机器的.ssh目录下,同时存在多对sshkey,id_ed25519/id_ed25519_pub, id_rsa/ id_rsa_pub这两对key,
ssh连接的时候默认会使用id_ed25519。cat ~/.ssh/config 可以看见。
而我是将id_rsa_pub放到了服务器的authorized_keys中,所以一直连接不上。需要将id_ed25519_pub放到服务器上。