SSH密钥登录教程

从此再也不怕忘记密码了;)

Step 1:检查密钥

查看本机~/.ssh/目录下是否有ssh公钥(id_rsa.pub)和私钥(id_rsa),如果没有或者干脆连.ssh目录都不存在,那么请使用ssh-keygen -t rsa -C "[email protected]"来创建ssh密钥。

生成SSH密钥

它先要求你确认保存公钥的位置(.ssh/id_rsa),然后它会让你重复一个密码两次,如果不想在使用公钥的时候输入密码,可以留空。

Step 2:将公钥放置到远程服务器

将本机的公钥.ssh/id_rsa.pub放置在远程服务器对应用户名目录(如/root/.ssh)下的/.ssh/authorized_keys中,一行一个,并且将.ssh和authorized_keys权限设置为700和600。
一个便捷的命令:ssh-copy-id -i ~/.ssh/id_rsa.pub  [email protected] [-pport]

  • 该命令会自动将本地的ssh公钥复制到远程主机的authorized_keys文件中,同时会自动设置相关权限。
  • 若不支持该命令请手动复制id_rsa.pub内容到远程主机的authorized_keys(不存在请创建),或者使用ftp或sftp拷贝后重命名。

Step 3:设置本地ssh

设置~/.ssh目录下的config文件

配置SSH

Step 4:使用ssh密钥登录

使用ssh+别名登录

使用SSH密钥登录

PS:如果你配置ssh免密钥登录失败时,检查一下

  1. 你的authorized_keys文件是否放置在对应用户的文件夹下
  2. 你的.ssh和authorized_keys的权限设置是否正确

附:ssh原理

ssh密钥登录的原理:当我们使用普通方式登录时,远程主机通过/etc/shadow验证用户名和密码。而当我们配置好了ssh密钥登录时,我们每次发送登录请求时都会携带本机的私钥前往远程主机,远程主机收到登录请求后,不再去/etc/shadow校验,而转去authorized_keys查看是否已经存在对应的公钥(因为ssh的密钥是成对生成的,所以fingerprint是一样的),校验成功则登录成功,否则拒绝登录请求。

ssh工作原理

因为热爱,所以执着。