普通用户ssh免密登陆完美解决(Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password))

时间:2024-11-13 07:04:50

又很久没写博客了,今天写一篇很有用的。嘿嘿,刚解决了问题,搞得我三天没睡好觉。

现在一身轻松,希望同样问题的小伙伴能解决同样的问题,睡个好觉,也是给自己留个笔记。


ssh免密登陆(我是使用hadoop集群时需要配置),从一台虚拟机ssh到另一台虚拟机,包括普通用户和root用户皆行。

接下来看我的骚操作(当然我大部分讲解的是主要的配置)

↓ 

首先你应该能ping通你的另一台机器。我使用的是虚拟机下的主机模式,不能上网,但是虚拟机间相互能通。(方法不同但相信大家应该都可以了)


ssh能连接的基本原理我废话说一句,你也应该知道,不然都不知道自己搞的什么:服务器生成一把密钥(id_rsa),一把公钥(id_rsa.pub)。将公钥拷贝到客户端的~/.ssh文件中再cat./id_rsa.pub >> ./authorized_keys,此时你便可以连接客户端了,具体的我们接着看下面。


在实现虚拟机之间ssh之前,我完成了本机对自己的ssh(ssh localhost、ssh username)这里是免密登陆的哦!!

拷贝你的公钥到另一台电脑:

scp ~/.ssh/id_rsa.pub root@名字:/home/hadoop/(当然更简单的方式就是直接将id_rsa.pub里面的东西复制到另一台的authorized_keys)


此时可以ssh一下了:


我是用root登陆的,显示不行,那是因为我关闭了root的登陆权限,如果你要使用root登陆可以执行

vi /etc/ssh/sshd_config


修改为PubkeyAuthentication yes(如果前面有#,就去掉#)


service sshd restart重启sshd服务后再次连接就行了


后面我们重点讲一下普通用户ssh到另一台电脑上(因为我在这里遇到了一个很大的坑!!!!!)

首先你可以试试 

ssh username@hostname

这里username是你要连接的电脑的用户名,hostname是它的地址。


如果可以的话,还是恭喜你。一次搞定。

如果失败

Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

应该是你的配置文件出现了问题 /etc/ssh/sshd_config


这里我们使用简单的连接方式,很多同学可能也会使用另一种连接方式,那就是

ssh 名字

但是你会发现这样会出现

Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

那是因为你没有指定连接的用户名,它会默认使用当前的用户名所以会错误。


如果你不嫌麻烦可以使用

ssh username@hostname

当然也可以使用以下简单的方式:映射关系

在.ssh文件下创建一个文本config(如果没有)

编辑文档:

Host hostname

user username

添加的是对你连接关系的映射。

从hadoop2使用ssh hadoop3时默认改为ssh hadoop3@hadoop3,而不是原来的ssh hadoop2@hadoop3了

最后修改的最重要的一点记住权限问题config文档的权限同组用户严格为不能写权限

修改:

chmod 644 config 或 chmod 600 config

再次使用 ssh 用户名 就ok了!!!



这篇文章我主要想说的就是config文件,不嫌麻烦你可以使用 ssh hadoop3@hadoop3,嫌麻烦你可以添加config文件的映射,直接ssh hadoop2。

至于前面的ssh连接我没有讲的太清楚,那些网上到处都是,就不说了 ~。~