通过ssh-keygen
命令在本地~/.ssh
目录生成公钥和私钥,然后把公钥内容发送到服务器指定目录内即可。
常规免密配置
若没有~/.ssh
目录,可自行创建,注意目录权限700
;
在~/.ssh
目录使用ssh-keygen -t rsa
命令生成密钥,含后缀名pub
的文件是公钥;
将公钥内容发送到目标主机的~/.ssh/authorized_keys
文件中,即可实现本机到目标主机的免密登陆,注意文件权限600
或者644
;~/.ssh/know_hosts
文件中记录本机登陆过的其他主机公钥;
关于参数,-t
表示密钥类型;-b
表示密钥长度,默认2048位
;-C
表示密钥注释,需用双引号标注。
配置本地config文件
打开~/.ssh/config
,若无可手动touch
,然后按照如下配置,即可实现ssh aliases
免密,无需记录繁琐的IP
地址。
Host aliases //化名,方便区别目标机器
HostName xx.xx.xx.xx //目标主机IP
User username //ssh登陆用户名
Port 22 //ssh登陆端口,默认22
IdentityFile /Users/.ssh/id_rsa //本地私钥文件路径
免密登陆失败原因
排除权限问题外,有两种常见可能:
第一种,模式问题
处理方法:sed -i "s/StrictModes yes/StrictModes no/g /etc/ssh/sshd_config"
第二种,未开启公钥校对
处理方法:sed -i "s/PubkeyAuthentication no/PubkeyAuthentication yes/g /etc/ssh/sshd_config"