
A机:192.168.1.1
B机:192.168.1.2
二、双机建立信任
1、在A机生成秘钥证书
在root下执行ssh-keygen命令,一路回车,生成秘钥证书
# ssh-keygen -t rsa
2、查看生成秘钥文件
# cd ~/.ssh
# ll
文件:私钥证书id_rsa、公钥证书id_rsa.pub
3、A对B建立信任关系
3.1 将公钥证书id_rsa.pub复制到机器B的root家目录的.ssh子目录中,同时将文件名更换为authorized_keys
# scp -r id_rsa.pub root@192.168.1.2:/root/.ssh/authorized_keys
3.2 若3.1报错:No such file or directory
使用:# ssh-copy-id -i id_rsa.pub root@192.168.1.2
ssh-copy-id命令会自动将id_rsa.pub文件的内容追加到远程主机root用户下.ssh/authorized_keys文件中
3.3 查看B机器是否接收
# ssh 192.168.1.2
# cd .ssh/
# ls
# cat authorized_keys
# exit
3.4 B对A建立信任,同上3的 *** 作步骤
在 linux 系统管理中,设置免密码登录,进行机器的批量管理是最常用的一个方法。比如针对几十甚至上百台线上机器,通常我们会设置一台“发布机”作为中央控制机对其它线上机器免密码登录,然后进行软件、配置文件的分发、更新、部署。当然了,针对上面的问题,解决方案并非最优且唯一,比如你也可以用 expect 模拟自动输入来完成自动登录验证这一过程,或者用现在一些开源的软件自动化配置和部署工具,比如 Puppet,但这都不在本文的讨论范畴,今天咱们要说的就是这种最原始、最有效、最直接的方式:免密码登录。
(1)问题:
假设:现有2台机器
1、个人机192.168.1.110
2、服务器192.168.1.112
要使110无需密码通过ssh登入112
(2)步骤
1、创建密钥
2、复制公密到服务器
3、添加公密到192.168.112的信任区域
注: 2,3两步可由命令ssh-copy-id一步到位
4、测试
此时整个步骤已经完成,你可以尝试 ssh ip 或者 /etc/hosts 中的主机名试试。
(3)可能遇到的问题
1、在使用 ssh-copy-id 错误提示
表现:
公钥,私钥已经生成,执行上述命令完毕出现如下错误:
$ ssh-copy-id remote-machine
/usr/bin/ssh-copy-id: ERROR: No identities found
解决方法:
g 之发现缺少公钥路径,通过 -i 加上即可:
2、ssh ip 可以成功登录,ssh hostname 却失败
表现:
ssh hostname
ssh: connect to host localhost port 22: Connection refused
解决方法:
看下对方的主机名是不是在 /etc/hosts 文件中和 ip 做了映射,没有就加上即可。
3、ssh 的配置目录权限问题
由于 ssh 的权限直接关系到服务器的安全问题,因此 ssh 每次读取配置都会校验相关文件夹和文件的权限,以防止权限过大对外暴露。
表现:
设置了.ssh目录,在authorized_keys设置了key后登录还提示需要输入密码。
解决方法:
注意权限,.ssh权限700,authorized_keys权限600,就KO啦!
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys
4、ssh localhost:publickey 授权失败
注:ssh可同时支持publickey和password两种授权方式,publickey默认不开启,需要配置为yes。
如果客户端不存在.ssh/id_rsa,则使用password授权;存在则使用publickey授权;
如果publickey授权失败,依然会继续使用password授权。
不要设置 PasswordAuthentication no ,它的意思是禁止密码登录,这样就只能本机登录了!
5、ssh localhost:Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
最后重启你的 linux 执行 ssh localhost
6、ssh localhost:需要密码
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
7、ssh ip 或 hostname 均提示:connection refused
目标主机的ssh server端程序是否安装、服务是否启动,是否在侦听22端口;
是否允许该用户登录;
本机是否设置了iptables规则,禁止了ssh的连入/连出;
具体请参考: http://hi.baidu.com/leejun_2005/item/bfc0ded296cb8ebf32db907e
(4)最后的问题
本文介绍的建立基于免密码登录,双机互信的管理方式简单、直接,但是安全就是个问题了,稍有不慎容易被一锅端,建议加上防火墙的端口、ip 策略,有条件的话试试动态口令,这样会更稳妥些。再有就是当机器规模达到上百、上千台的时候,如果对文件数据、机器状态的实时同步、一致性的要求很高的时候,这种管理方式的弊端就出来了。
(5)Refer:
http://blogread.cn/it/article/6103?f=wb ssh-copy-id帮你建立信任
http://www.lvtao.net/server/54.html ssh无密码登入设置 ssh-keygen ssh-copy-id
http://hi.baidu.com/leejun_2005/item/bfc0ded296cb8ebf32db907e SSH的安装及登录提示:connection refused的解决办法
http://www.cnblogs.com/qcly/archive/2013/07/27/3219535.html 一次由SELinux引起的ssh公钥认证失败问题
两个Hadoop集群开启Kerberos验证后,集群间不能够相互访问,需要实现Kerberos之间的互信,使用Hadoop集群A的客户端访问Hadoop集群B的服务(实质上是使用Kerberos Realm A上的Ticket实现访问Realm B的服务)。先决条件:
1)两个集群(XDF.COM和HADOOP.COM)均开启Kerberos认证
2)Kerberos的REALM分别设置为XDF.COM和HADOOP.COM
步骤如下:
实现 DXDF.COM 和 HADOOP.COM 之间的跨域互信,例如使用 XDF.COM 的客户端访问 HADOOP.COM 中的服务,两个REALM需要共同拥有名为krbtgt/ HADOOP.COM@XDF.COM 的principal,两个Keys需要保证密码,version number和加密方式一致。默认情况下互信是单向的, HADOOP.COM 的客户端访问 XDF.COM 的服务,两个REALM需要有krbtgt/ XDF.COM@HADOOP.COM 的principal。
向两个集群中添加krbtgt principal
要验证两个entries具有匹配的kvno和加密type,查看命令使用getprinc <principal_name>
使用hadoop org.apache.hadoop.security.HadoopKerberosName <principal-name>来实现验证,例如:
第一种方式是配置shared hierarchy of names,这个是默认及比较简单的方式,第二种方式是在krb5.conf文件中改变capaths,复杂但是比较灵活,这里采用第二种方式。
在两个集群的节点的/etc/krb5.conf文件配置domain和realm的映射关系,例如:在XDF cluster中配置:
在HADOOP Cluster中配置:
配置成'.'是表示没有intermediate realms
为了是XDF 可以访问HADOOP的KDC,需要将HADOOP的KDC Server配置到XDF cluster中,如下,反之相同:
在domain_realm中,一般配置成'.XDF.COM'和'XDF.COM'的格式,'.'前缀保证kerberos将所有的XDF.COM的主机均映射到XDF.COM realm。但是如果集群中的主机名不是以XDF.COM为后缀的格式,那么需要在domain_realm中配置主机与realm的映射关系,例XDF.nn.local映射为XDF.COM,需要增加XDF.nn.local = XDF.COM。
重启kerberos服务
在hdfs-site.xml,设置允许的realms
在hdfs-site.xml中设置dfs.namenode.kerberos.principal.pattern为"*"
这个是客户端的匹配规则用于控制允许的认证realms,如果该参数不配置,会有下面的异常:
1)使用hdfs命令测试XDF 和HADOOP 集群间的数据访问,例如在XDF Cluster中kinit admin@XDF.CON,然后运行hdfs命令:
在HADOOP.COM中进行相同的 *** 作
2)运行distcp程序将XDF的数据复制到HADOOP集群,命令如下:
两集群的/etc/krb5.conf完整文件内容如下:
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)