Linux免密登陆

1 在2台服务器之间设置免密码ssh登陆

假设目前有2台服务器:

1台Master(test7972)
1台Slave(test25572)

现在要设置它们之间免密码ssh登陆。

2.1 配置Master(test7972)免密码登陆Slave(test25572)

免密码ssh登录的原理是这样的:

1.Master(NameNode | JobTracker)如果作为客户端,实现无密码公钥认证,来连接到服务器Salve(DataNode | Tasktracker)上,需要在Master上生成一个密钥对,包括1个公钥和1个私钥,然后需要将公钥复制到所有的Slave上。

2.当Master通过SSH连接Salve时,Salve就会生成一个随机数,并且用Master的公钥对随机数进行加密,并且发送给Master。

3.Master收到加密数之后,会使用自己的私钥解密,并将解密数回传给Slave。

4.Slave确认解密数无误之后就允许Master进行连接了。

这就是一个公钥认证过程,这个过程中不需要用户手动输入密码。而具体到实现这个无密码登录的准备过程,重要的是将客户端Master的公钥复制到Slave上。

2.1.1 创建“.ssh”目录

若“.ssh目录”不存在,创建”.ssh目录”:

mkdir ~/.ssh
1
2.1.2 修改“.ssh 目录”权限。

chmod 700 ~/.ssh
1
2.1.3 创建Master(test7972)服务器的公钥和私钥

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
1
这个过程会在目录:

~/.ssh/
下生成公钥:

id_rsa
和私钥:

id_rsa.pub
2.1.4 配置Master(test7972)本机ssh免密登录做测试

同第1步类似,在Master(test7972)上配置一下本机的ssh免密登录,将公钥“id_rsa.pub”追加到授权的key里面:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
1
授权:

chmod 0600 ~/.ssh/authorized_keys
1
然后使用命令:

ssh localhost
1
做测试,没问题就可以了。

注意: 登陆之后,记得执行:

exit
1
推出!

2.1.5 修改SSH配置文件"/etc/ssh/sshd_config"

修改SSH配置文件:

/etc/ssh/sshd_config
确保以下内容信息:

RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

由于笔者使用的服务器均为:

Ubuntu 16.04.4 LTS
前2项均已设置为“yes”,而第3项背注释了,但是不影响使用ssh免密登录的效果,故这里酌情处理。

2.1.6 拷贝Master(test7972)的公钥到Slave(test25572)上去

执行命令:

scp ~/.ssh/id_rsa.pub hadoop@test25572:~/

2.1.7 配置Slave(test25572)节点

登录Slave(test25572)节点,执行以下操作:

1.修改.ssh权限:
chmod 700 ~/.ssh

2.把Master(test7972)的公钥追加到Slave(test25572)的授权文件"authorized_keys"中去:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

3.修改该授权文件的权限:
chmod 600 ~/.ssh/authorized_keys

2.1.8 测试免密码登录

在Master(test7972)上执行:

ssh test25572

其中“test25572”已经在Master(test7972)的“/etc/hosts”文件中配置过了,如果这个登录不需要输入密码,那么免密码ssh登录就设置成功了!

2.2 配置Slave(test25572)免密码登陆Master(test7972)

猜你喜欢

转载自www.cnblogs.com/grow1016/p/10747524.html