如何实现两台服务器间无密码的传输数据和操作

admin3年前云服务器19

  我们知道如果要向远程服务器传输数据和操作必须输入用户名和密码远程登录服务器,或用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节点上执行以下命令:

sshkeygen–trsa–P'

  这条命是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/he/hadoop/.ssh"目录下(每台服务器看各自的生成路径信息因为hadoop为用户名,所以生成在当前用户名下)。

  查看"/he/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"的"/he/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服务器,查看"/he/hadoop/"下是否存在这个文件。

  从上面得知我们已经成功把公钥复制过去了。
2)在"/he/hadoop/"下创建".ssh"文件夹
这一步并不是必须的,如果在Slave1.Hadoop的"/he/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配置",具体分为两步:第1是修改配置文件;第2是重启SSH服务。
5)用Master.Hadoop使用SSH无密码登录Slave1.Hadoop
当前面的步骤设置完毕,就可以使用下面命令格式进行SSH无密码登录了。

ssh远程服务器IP

  从上图我们主要3个地方,第1个就是SSH无密码登录命令,第2、3个就是登录前后"@"后面的机器名变了,由"Master"变为了"Slave1",这就说明我们已经成功实现了SSH无密码登录了。
最后记得把"/he/hadoop/"目录下的"id_rsa.pub"文件删除掉。

rm–r~/id_rsa.pub

  到此为止,我们经过前5步已经实现了从"Master.Hadoop"到"Slave1.Hadoop"SSH无密码登录,下面就是重复上面的步骤把剩余的Slave服务器进行配置。这样,我们就完成了"配置Master无密码登录所有的Slave服务器"。

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

美国服务器租用需要注意哪些问题

美国服务器租用需要注意的问题有:1、注意美国服务器的稳定性,选择品牌口碑好的服务商更可靠;2、注意美国服务器的网络是否可选,以保证选择合适的网络线路;3、注意美国服务器的硬件是否支持升级,以保证后期业...

租用香港轻量云服务器安全吗

租用香港轻量云服务器安全:1、香港轻量云服务器有预防控制功能,可以防止未经授权的访问;2、香港轻量云服务器提供警告标志和通知功能,能实施控制访问计划;3、香港轻量云服务器有安全侦查控制功能,包括入侵检...

怎么提高香港服务器的安全性

提高香港服务器安全性的方法:1、及时更新香港服务器系统以及安全软件补丁;2、给香港服务器安装配置软、硬件防火墙;3、采用为DDoS防护设计的香港高防服务器搭建网站;4、定期对香港服务器进行安全审计,排...

无法连接到服务器的原因是什么

无法连接到服务器的原因:1、本地网络质量差,且服务器不是在同一个运营商之间,则可能无法连接到服务器;2、服务器网络质量差,出现问题没有及时处理,导致无法连接到服务器;3、国内运营商之间的网络互不相通,...

美国服务器常见的故障情况有哪些

美国服务器常见的故障情况有:1、美国服务器正在遭受恶意攻击;2、美国服务器租用期限过期,忘记续费;3、美国服务器流量异常,导致国服务器网站瘫痪;4、美国服务器加载网站数量过多,引起资源超标导致出现系统...

新加坡服务器在海外服务器中的地位如何

对于海外服务器的需求,诸如美国服务器、新加坡服务器、香港服务器等,往往是根据客户群体所在地点来就近选择的,比如说,客户群体在新加坡,那么多数情况下会选择新加坡服务器。但是,如果客户群体不止一处,而是新...