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

如何实现两台服务器间无密码的传输数据和 *** 作,第1张

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

我们知道,如果要向远程服务器传输数据和 *** 作,必须输入用户名和密码才能远程登录服务器,或者使用FTP等协议,这些都需要权限控制。

但是如果两台服务器之间的软件需要通信和数据传输,比如hadoop集群中机器之间的相互访问,是不是每次都要输入用户名和密码?那不是很麻烦吗?让我们引入SSH来解决这个问题(不是JAVA中SSH的概念)

SSH是用于计算机之间加密登录的网络协议。

如果用户使用SSH协议从本地计算机登录到另一台远程计算机,我们可以认为这次登录是安全的,即使中途被截获,密码也不会泄露。

最早的时候,互联网通信都是明文通信。一旦被截获,内容无疑就暴露了。1995年,芬兰学者塔图·伊洛宁设计了SSH协议,对所有登录信息进行加密,成为互联网安全的基本解决方案。很快在全球推广开来,现在已经成为Linux系统的标准配置。

需要指出的是,SSH只是一个协议,有很多实现,商业的和开源的都有。本文的实现是OpenSSH,它是一个免费的软件,应用非常广泛。

另外,本文只讨论SSH在LinuxShell中的用法。如果你想在Windows系统中使用SSH,你会使用另一种软件PuTTY。

在Hadoop运行的过程中,需要对远程Hadoop守护进程进行管理。Hadoop启动后,NameNode通过SSH(安全Shell)启动和停止每个DataNode上的各种守护进程。
需要以无密码公钥认证的形式在节点间执行指令。因此,我们需要配置SSH,以便NameNode可以在没有密码的情况下登录并启动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)作为客户端,在连接服务器Slave(DataNode|Tasktracker)时,需要生成一个密钥对,包括一个公钥和一个私钥。当主设备通过SSH连接到从设备时,从设备会生成一个随机数,用主设备的公钥加密,并发送给主设备。收到加密的数字后,主设备用私钥解密,并将解密的数字发送回从设备。从机在确认解密号码正确后,允许主机连接。这是一个公钥认证过程,在此过程中,用户不需要手动输入密码。重要的过程是将客户端主设备复制到从设备。
2)在主计算机上生成的密码对
在主节点上执行以下命令:

ssh-keygen–trsa–P'

这个顺序是生成其无密码密钥对,在询问其保存路径时,直接输入并采用默认路径。生成的密钥对:id_rsa和id_rsa.pub存储在“/home/hadoop/中。ssh”目录(每个服务器查看自己的生成路径信息,该信息是在当前用户名下生成的,因为hadoop是用户名)。

检查是否有”。ssh“/home/hadoop/”下的文件夹,以及“/home/Hadoop/”下是否有两个新产生的无密码密钥对。ssh”文件。

然后在主节点上进行以下配置,并将id_rsa.pub附加到授权密钥上。

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

由上图可知,已经设置了无密码登录级别,接下来的事情就是将公钥复制到所有从机。使用以下命令格式复制公钥:

scp~/.ssh/id_rsa.pub远程用户名@远程服务器IP:~/

例如:

scp~/.ssh/[email protected]:~/

上面的命令是将文件“id_rsa.pub”复制到“/home/hadoop/”中,其中服务器IP为“192.168.1.3”,用户为“hadoop”。

下面是Slave1的节点配置方法。IP为“192.168.1.3”的Hadoop。
1)在主服务器上复制公钥。HadooptoSlave1。Hadoop

从上图我们知道文件“id_rsa.pub”已经被传递了。因为没有建立口令连接,所以仍然需要提示您输入从属服务器1的口令。连接时hadoop服务器用户Hadoop。为了确保文件确实已被传递,请登录到从属服务器1。Hadoop:192.168.1.3serverwithsecureCRT查看“/home/hadoop/”下是否存在该文件。

从上面可以知道,我们已经成功地复制了公钥。
2)创建“.ssh"folderunder"/home/Hadoop/"
这一步不是必须的。如果Slave1中的“/home/hadoop”。Hadoop已经存在,没有必要创建它。使用以下命令创建。(备注:如果使用hadoop登录系统,如果不涉及系统文件的修改,我们通常使用之前建立的普通用户hadoop来执行命令。)

mkdir~/.ssh

然后,修改文件夹的用户权限”。ssh”并将他的权限更改为“700”,这将通过以下命令执行:

chmod700~/.ssh

注意:如果没有,即使你按照前面的 *** 作设置了“authorized_keys”权限,配置了“/etc/ssh/sshd_config”,重新启动了sshd服务,也可以在Master中使用“sshlocalhost”登录,无需密码,但是登录Slave1仍然需要输入密码。Hadoop,因为“的权限。ssh"文件夹设置不正确。当这个文件夹”。ssh”是在配置了SSH免密码登录时由系统自动生成的,其权限自动为“700”。如果是自己手动创建的,其组权限和其他权限都是可用的,会导致RSA无密码远程登录失败。

对比上面两个图,发现文件夹的权限”。宋承宪”都变了。
3)追加到授权文件“authorized_keys”
到目前为止,Master的公钥。Hadoop已经获得,文件夹”。ssh”已被获取,权限已被修改。这一步是添加Master的公钥。Hadoop到Slave1的授权文件“authorized_keys”。Hadoop使用以下命令追加和修改“authorized_keys”文件权限:

cat~/id_rsa.pub>>~/.ssh/authorized_keyschmod600~/.ssh/authorized_keys

4)使用root修改“/etc/SSH/sshd_config”
具体步骤请参考Master的“设置SSH配置”。Hadoop,这分两步:第一步,修改配置文件;第二是重启SSH服务。
5)用SSH登录slave1.hadoop,不用Master的密码。Hadoop
设置好前面的步骤后,您可以使用下面的命令格式使用SSH登录,无需密码。

ssh远程服务器IP

从上图来看,我们主要有三个地方,第一个是SSH免密码登录命令,第二个和第三个是“@”后面的机器名在登录前后从“Master”变成了“Slave1”,也就是说我们成功实现了SSH免密码登录。
最后,记得删除“/home/hadoop/”目录下的“id_rsa.pub”文件。

rm–r~/id_rsa.pub

到目前为止,我们已经实现了从“Master”的SSH免密码登录。Hadoop”到“Slave1.hadoop”。以下是重复上述步骤来配置其余的从服务器。这样,我们就完成了“配置主服务器无需密码登录所有从服务器”。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/746693.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-29
下一篇 2022-04-29

发表评论

登录后才能评论

评论列表(0条)

保存