从此再也不怕忘记密码了;)
Step 1:检查密钥
查看本机~/.ssh/目录下是否有ssh公钥(id_rsa.pub)和私钥(id_rsa),如果没有或者干脆连.ssh目录都不存在,那么请使用ssh-keygen -t rsa -C "[email protected]"
来创建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文件
Step 4:使用ssh密钥登录
使用ssh+别名登录
PS:如果你配置ssh免密钥登录失败时,检查一下
- 你的authorized_keys文件是否放置在对应用户的文件夹下
- 你的.ssh和authorized_keys的权限设置是否正确
附:ssh原理
ssh密钥登录的原理:当我们使用普通方式登录时,远程主机通过/etc/shadow验证用户名和密码。而当我们配置好了ssh密钥登录时,我们每次发送登录请求时都会携带本机的私钥前往远程主机,远程主机收到登录请求后,不再去/etc/shadow校验,而转去authorized_keys查看是否已经存在对应的公钥(因为ssh的密钥是成对生成的,所以fingerprint是一样的),校验成功则登录成功,否则拒绝登录请求。