流程:
本地主机生成公钥文件,将公钥内容复制到要连接的服务器的authorized_keys文件中。
原理:
主机A发送ssh请求连接主机B,主机B验证authorized_keys中的公钥信息,加密成一段字符串返还给A,A利用私钥解密发送给B,B拿到后与之前的字符串比对,一致则实现免密登录。
公钥:认证
私钥:解密
操作步骤:
1. 生成私钥和公钥文件(默认是rsa算法):
ssh-keygen
更多参数运行:
man ssh-keygen
2. 将A的id_rsa.pub文件(即公钥文件)的内容复制到B的authorized_keys文件中。
3. 更改B的authorized_keys文件权限为600(仅root用户可读写):
chmod 600 ~/.ssh/authorized_keys
不设置权限为600或以下,连接会失败。
补充:
authorized_keys:其他电脑预免密登录本机,本机该文件存放其他电脑的公钥。windows的该文件存放在:C:\ProgramData\ssh。linux存放在:~/.ssh ,即当前用户的.ssh文件夹下。
known_hosts: 本机连接服务器,该文件存放的是服务器的机器信息。如果服务器的公钥发生改变,和known_hosts中先前存放的不一致,则会发生错误。windows的该文件存放在:C:\Users\用户名\.ssh 文件夹下。linux存放在:~/.ssh ,即当前用户的.ssh文件夹下。