通过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地址。

  1. Host aliases //化名,方便区别目标机器
  2. HostName xx.xx.xx.xx //目标主机IP
  3. User username //ssh登陆用户名
  4. Port 22 //ssh登陆端口,默认22
  5. 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"