如何实现两台服务器间无密码的传输数据和操作
来源:微云 时间:2022-06-07 11:05:55阅读:0
我们知道,如果数据和操作传输到远程服务器,必须输入用户名和密码远程登录服务器,或者使用FTP等协议,都需要权限控制。
但是,如果两个服务器之间的软件需要通信和数据传输,例如hadoop每次都要输入用户名和密码进行集群机器互访吗?这不是很麻烦吗?以下是介绍SSH解决这个问题(不JAVA中的SSH概念)
SSH用于计算机之间加密登录的网络协议。
如果用户使用本地计算机SSH当协议登录另一台远程计算机时,我们可以认为这种登录是安全的,即使中途截获,密码也不会泄露。
互联联通信最早是明文通信,一旦被截获,内容无疑会暴露出来。芬兰学者,1995年TatuYlonen设计了SSH协议加密所有登录信息,成为互联网安全的基本解决方案,并在世界各地迅速推广Linux标准配置系统。
需要指出的是,SSH只是一种协议,有多种实现,包括商业实现和开源实现。本文旨在实现它OpenSSH,它是一种应用广泛的自由软件。
此外,本文仅讨论SSH在LinuxShell用法。如果你想在Windows系统中使用SSH,将使用另一种软件PuTTY
Hadoop远端需要在运行过程中进行管理Hadoop守护过程,在Hadoop启动以后,NameNode是通过SSH(SecureShell)启动和停止每一个DataNode各种守护过程。
在节点之间执行指令时,不需要输入密码,因此需要配置SSH采用无密码公钥认证的形式NameNode使用SSH无密码登录并启动DataName过程,同样的原理,DataNode上也能使用SSH无密码登录NameNode。
以下是安装总结网民和自己的经验。
环境
CentOS7.0
安装
yuminstallssh安装SSH协议yuminstallrsync(rsync可通过的远程数据同步工具LAN/WAN多台主机间文件快速同步)servicesshdrestart启动服务
查看安装
rpm–qa|grepopensshrpm–qa|greprsync
为避免麻烦,每台服务器都要安装。
配置Master无密码登录所有Salve
1)SSH无密码原理
Master(NameNode|JobTracker)无密码公钥认证作为客户端,连接到服务器Salve(DataNode
|Tasktracker)上时,需要在Master在上面生成密钥对,包括公钥和私钥,然后将公钥复制到所有Slave上。当Master通过SSH连接Salve时,Salve会产生一个随机数并用Master公钥加密并发送给随机数Master。Master收到加密数后,用私钥解密,并将解密数传回Slave,Slave允许确认解密数无误Master连接。这是一个不需要用户手动输入密码的公钥认证过程。重要的过程是将客户端连接起来Master复制到Slave上。
2)Master在机器上生成密码对
在Master以下命令在节点上执行:
ssh-keygen–trsa–P'
这个生命是生成它的无密码密钥对,在询问它的保存路径时直接返回车辆。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/hadoop/.ssh"目录下(由于各自的生成路径信息,每成路径信息hadoop为用户名,所以生成在当前用户名下)。
查看"/home/hadoop/"下是否有".ssh"文件夹,且".ssh"文件下是否有两个新生产的无密码密钥对。
接着在Master在节点上做以下配置,把id_rsa.pub加到授权key里面去。
cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
验证前需要做两件事。第一件事是修改文件"authorized_keys"权限(权限的设置很重要,因为不安全的设置会让你无法使用RSA功能),另一件事是使用root用户设置"/etc/ssh/sshd_config"内容。使其无密码登录有效。
1)修改文件"authorized_keys"
chmod600~/.ssh/authorized_keys
注:如果不设置,在验证过程中,扔提示您输入密码,在这里花了近半天的时间找出原因。
2)设置SSH配置
用root用户登录服务器进行修改SSH配置文件"/etc/ssh/sshd_config"以下内容。
RSAAuthenticationyes#启用RSA认证PubkeyAuthenticationyes#使用公钥私钥配对认证AuthorizedKeysFile.ssh/authorized_keys#公钥文件路径(与上述生成的文件相同)
设置后记得重启SSH只有这样,才能有效地设置服务。
servicesshdrestart
退出root登录,使用hadoop验证普通用户是否成功。
sshlocalhost
从上图可以看出,无密码登录级别已经设置好,下一步就是复制所有公钥Slave机器上。使用以下命令格式复制公钥:
scp~/.ssh/id_rsa.pub远程用户名@远程服务器IP:~/
例如:
scp~/.ssh/id_rsa.pubhadoop@192.168.1.3:~/
上述命令是复制文件"id_rsa.pub"到服务器IP为"192.168.1.3"的用户为"hadoop"的"/home/hadoop/"下面。
下面就针对IP为"192.168.1.3"的Slave1.Hadoop配置节点。
1)把Master.Hadoop复制上面的公钥Slave1.Hadoop上
我们从上图中了解到,文件已经被提交"id_rsa.pub"由于没有建立无密码连接,因此在连接时仍需提示输入输入Slave1.Hadoop服务器用户hadoop密码。为了确保文件已经传输和使用SecureCRT登录Slave1.Hadoop:192.168.1.3查看服务器"/home/hadoop/"这个文件否存在。
从上面了解到,我们已经成功复制了公钥。
2)在"/home/hadoop/"下创建".ssh"文件夹
如果是的话,这一步是不必要的Slave1.Hadoop的"/home/hadoop"它已经存在,不需要创建,因为我们以前没有正确Slave机器已经进行了无密码登录配置,因此该文件并不存在。创建以下命令。(注:使用hadoop如果登录系统不涉及系统文件的修改,通常使用我们以前建立的普通用户hadoop执行命令。
mkdir~/.ssh
然后修改文件夹".ssh"将用户权限修改为"700",以下命令执行:
chmod700~/.ssh
备注:如果没有,即使按照之前的操作设置"authorized_keys"权限,并配置"/etc/ssh/sshd_config",还重启了sshd服务,在Master能用"sshlocalhost"进行无密码登录,但是对Slave1.Hadoop登录仍然需要输入密码,因为".ssh"文件夹的权限设置不正确。这个文件夹".ssh"在配置SSH当系统自动生成无密码登录时,权限自动为"700",如果是手动创建的,它的组权限和其他权限都有,这将导致RSA无密码远程登录失败。
比较上面两张图,找到文件夹".ssh"权限变了。
3)添加到授权文件中"authorized_keys"
到目前为止Master.Hadoop还有公钥,文件夹".ssh"还有,权限也修改了。这一步是把Master.Hadoop加上公钥Slave1.Hadoop的授权文件"authorized_keys"中去。使用以下命令进行附加和修改"authorized_keys"文件权限:
cat~/id_rsa.pub>>~/.ssh/authorized_keyschmod600~/.ssh/authorized_keys
4)用root用户修改"/etc/ssh/sshd_config"
具体步骤请参考前面Master.Hadoop的"设置SSH配置",分为两个步骤:一是修改配置文件;二是重启SSH服务。
5)用Master.Hadoop使用SSH无密码登录Slave1.Hadoop
设置完前面的步骤后,可以使用以下命令格式SSH无密码登录。
ssh远程服务器IP
从上图来看,我们主要有三个地方,第一个是SSH无密码登录命令,第二、三是登录前后"@"后面的机器名变了,由"Master"变为了"Slave1",这就说明我们已经成功实现了SSH无密码登录。
最后记得把"/home/hadoop/"目录下的"id_rsa.pub"删除文件。
rm–r~/id_rsa.pub
到目前为止,我们已经通过前前五步"Master.Hadoop"到"Slave1.Hadoop"SSH无密码登录,以下是重复上述步骤的剩余步骤Slave配置服务器。这样,我们就完成了"配置Master无密码登录所有Slave服务器"。
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:shawn.lee@vecloud.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
本站原创内容未经允许不得转载,或转载时需注明出处:https://news.kd010.com/fwqjs/10475.html
TAG标签: