又很久没写博客了,今天写一篇很有用的。嘿嘿,刚解决了问题,搞得我三天没睡好觉。
现在一身轻松,希望同样问题的小伙伴能解决同样的问题,睡个好觉,也是给自己留个笔记。
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(如果没有)
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连接我没有讲的太清楚,那些网上到处都是,就不说了 ~。~