Mac 免密登录Linux服务器

        由于授权了公钥到服务器上,从而想达到免密码登录服务器。之前有成功配置过一台服务器,所以这次本以为没什么问题。但是后来设置了之后,再次ssh登录的时候还是一直需要输入密码。

        很奇怪的事情。百度了很久,谷歌了很久,大部分都是这说权限的问题。权限解决不了问题只能硬着头皮去看调试信息。ssh -t root@服务器IP -p 110 -vvv 。这输出的调试信息中,我才发现一直提示我本地 .ssh/id_dsa.pub 找不到该文件或者说该目录。奇怪了,为什么需要id_dsa.pub这个类型的公钥。

        登录服务器上,去ssh目录(cd /etc/ssh/)查看sshd_config 配置信息(cat sshd_config)。HostKey:设置计算机私人密匙的文件,个人觉得也为配置服务器ssh验证方式的地方,验证方式为:

#HostKey /etc/ssh/ssh_host_key

# HostKeys for protocol version 2

HostKey /etc/ssh/ssh_host_rsa_key

HostKey /etc/ssh/ssh_host_dsa_key

#HostKey /etc/ssh/ssh_host_ecdsa_key

#HostKey /etc/ssh/ssh_host_ed25519_key

#号在前面的是注释掉的,这个表示服务器上开启了另一种验证方式:dsa加密方式的公钥。遇到这种情况,解决方式有两个:

        1、注释掉这一段(就是加个#号)这种方式,可能会影响到其他人。

        2、在本地生成dsa加密方式的公钥和私钥,然后把公钥传到服务器。

        我的解决方案是在本地生成一个dsa加密方式的公钥命令如下:

        ssh-keygen -t dsa -C "[email protected]" 默认密码默认,连按3次回车。会显示生成的公钥的图案,由于图片被删除了就不展示了。当然,可以直接用命令行查看 ls ~/.ssh/ 。

        公钥存在了,然后把公钥追加到服务器 登录用户的目录下的.ssh/authorized_keys 中,我登录服务器的用户是root,所以目录是: /root/.ssh/  下的authorized_keys。建议用命令行追加进去。

        ssh-copy-id -i .ssh/id_dsa.pub  root@服务器的IP 例如 ssh-copy-id -i .ssh/id_rsa.pub  [email protected] 根据提示输入root的登录密码。用该命令行的好处是,不会改变authorized_keys中的原有数据,不会影响其他用户的授权,会追加到后面。添加成功后,再次登录成功。

        总结下:遇到授权后,要求再次输入密码的。首先去看下ssh的配置文件,也就是sshd_config ,看一下开启了几个验证方式。只开启了一个验证方式,要看看是不是和自己本地Mac上生成的公钥的加密方式一样。如果都一样,而且之前已经有其他用户的公钥在authorized_keys中的话,那就需要检查下本地的公钥是否正确了。如果开启多个验证方式,那么就如前文所说方式处理就好。如果用户目录下的.ssh/ 和authorized_keys 都是手动创建的,需要注意权限问题。

可能这种情况很少有人遇到,也可能是个例,但发布出来给自己留个记录,同时希望能给其他人一个避免入坑的方法。可能写的也不对。。但是希望帮到更多的人。

阿里云 绑定的密钥登录的好像不行...

你可能感兴趣的:(Mac 免密登录Linux服务器)