1、登陆到服务器修改sshd_config

登录服务器,输入命令vi /etc/ssh/sshd_config修改配置文件

找到RSAAuthentication、PubkeyAuthentication、AuthorizedKeyFiles、StrictModes所在的行,如果被#注释了,就取消#号,改为如下配置:

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeyFiles .ssh/authorized_keys

StrictModes no

这里解释一下:

RSAAuthentication设置为yes,意思是设置开启使用RSA算法的基于rhosts的安全验证;

PubkeyAuthentication设置为yes,意思是设置开启公钥验证;

AuthorizedKeyFiles后面的目录,是你上传的公钥所保存的文件;

StrictModes设置为no,意思是设置关闭ssh在接收登录请求之前先检查用户家目录和rhosts文件的权限和所有权。

修改好ssh的配置文件后保存并退出,使用systemctl restart sshd.service重启SSH服务

 

2、客户端生成公钥

首先我们要在我们的mac上电脑上生成公钥和私钥,在终端中输入以下命令:

cd ~/.ssh

首先进入~/.ssh目录,之后:

ssh-keygen -t rsa

或给你的key取个名字  ssh-keygen -t rsa -C \"your_email@example.com\"

之后就可以一路回车,一般都不设置密码,即可在~/.ssh目录中生成私钥文件(id_rsa)和公钥文件(id_rsa.pub)

 

3、服务端加入客户端公钥

     Copy 客户端生成好的公钥文件  id_rsa.pub  到服务器的。~/.ssh/  目录下,并且改名  authorized_keys

     如果已经存在authorized_keys 文件  那么需要将你的新公钥追加到后面

     cat id_rsa.pub >> authorized_keys

     然后删除id_rsa.pub

     然后修改权限,这部很重要

      .ssh目录权限一般为755或者700。

      authorized_keys权限一般为644

现在,我们就可以正常的在mac 终端中使用ssh来登录服务器了,无需输入密码。

 

4、客户端设置别名

       进入客户端  ~/.ssh    创建config文件

        Host hostName1(暂时叫它1号服务器)

HostName xxx.xxx.xxx.xxx

User username

Port 端口号

Host hostName2(暂时叫它2号服务器)

HostName xxx.xxx.xxx.xxx

User root

然后  ssh hostName1 直接登陆

 

总结:

如果自动登录失败可以查询服务器的日志  /var/log/secure

             一般会出现错误:  Authentication refused: bad ownership or modes for directory /home/用户

              

        第一反复检查目录和文件的权限是否正确,这也是网上流传的最多的解决方案,但是我第一次就出现了这个问题,这个方案没有解决

 

        第二检查服务的sshd_config配置,

RSAAuthentication设置为yes,意思是设置开启使用RSA算法的基于rhosts的安全验证;

PubkeyAuthentication设置为yes,意思是设置开启公钥验证;

AuthorizedKeyFiles后面的目录,是你上传的公钥所保存的文件;

StrictModes设置为no,  (我就是掉到这个坑里的)

收藏 打印