SSH无密码登陆配置

摘录一

在192.168.42.142机器上

1)运行:ssh-keygen -t rsa

2)然后拍两下回车(均选择默认)

3)运行:

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

或普通用户:

ssh-copy-id [email protected]

4)再输入163机器上的root密码

此时,再ssh 到163机器,则不需要密码了。相互之间scp,也不需要密码

摘录二

配置 ssh 实现 MPI 节点间用户的无密码访问,由于 MPI 并行程序需要在各节点间进行信息传递,所以必须实现所有节点两两之间能无密码访问。

节点间的无密码访问是通过配置ssh 公钥认证来实现的。例如,对新用户 user 配置 ssh 公钥认证,先在 c1 上做以下操作。

(1)生成了私钥 id_dsa 和公钥 id_dsa.pub,具体操作方法如下。

ssh-keygen -t rsa

系统显示一些信息,遇到系统询问直接回车即可。

(2)将该密钥用作认证,进行访问授权。按如下命令在 c1 执行。

cp ~/.ssh/id_dsa.pub ~/.ssh/authorized_keys

由于我们使用的是 root 用户,所以~代表/root,

(3)将~/.ssh 目录下的文件复制到所有节点。

scp -r ~/.ssh/* c2:/root/.ssh

(4)检查是否可以直接(不需要密码)登录其他节点。

ssh c2

如能两两之间不需要密码登录其他节点,则表明配置成功。

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html

2、SSH无密码验证配置

  Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode。

2.1 安装和启动SSH协议

  在"Hadoop集群(第1期)"安装CentOS6.0时,我们选择了一些基本安装包,所以我们需要两个服务:ssh和rsync已经安装了。可以通过下面命令查看结果显示如下:

rpm –qa | grep openssh

rpm –qa | grep rsync

  假设没有安装ssh和rsync,可以通过下面命令进行安装。

yum install ssh 安装SSH协议

yum install rsync (rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件)

service sshd restart 启动服务

  确保所有的服务器都安装,上面命令执行完毕,各台机器之间可以通过密码验证相互登。

2.2 配置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 –t rsa –P ‘‘

  这条命是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/hadoop/.ssh"目录下。

  查看"/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"

chmod 600 ~/.ssh/authorized_keys

   备注:如果不进行设置,在验证时,扔提示你输入密码,在这里花费了将近半天时间来查找原因。在网上查到了几篇不错的文章,把作为"Hadoop集群_第5期副刊_JDK和SSH无密码配置"来帮助额外学习之用。

2)设置SSH配置

  用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容。

RSAAuthentication yes # 启用 RSA 认证

PubkeyAuthentication yes # 启用公钥私钥配对认证方式

AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

  设置完之后记得重启SSH服务,才能使刚才设置有效。

service sshd restart

  退出root登录,使用hadoop普通用户验证是否成功。

ssh localhost

  从上图中得知无密码登录本级已经设置完毕,接下来的事儿是把公钥复制所有的Slave机器上。使用下面的命令格式进行复制公钥:

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

  例如:

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

  上面的命令是复制文件"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",用下面命令执行:

chmod 700 ~/.ssh

  备注:如果不进行,即使你按照前面的操作设置了"authorized_keys"权限,并配置了"/etc/ssh/sshd_config",还重启了sshd服务,在Master能用"ssh localhost"进行无密码登录,但是对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_keys

chmod 600 ~/.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无密码登录了。

  最后记得把"/home/hadoop/"目录下的"id_rsa.pub"文件删除掉。

rm –r ~/id_rsa.pub

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

2.3 配置所有Slave无密码登录Master

  和Master无密码登录所有Slave原理一样,就是把Slave的公钥追加到Master的".ssh"文件夹下的"authorized_keys"中,记得是追加(>>)。

  为了说明情况,我们现在就以"Slave1.Hadoop"无密码登录"Master.Hadoop"为例,进行一遍操作,也算是巩固一下前面所学知识,剩余的"Slave2.Hadoop"和"Slave3.Hadoop"就按照这个示例进行就可以了。

  首先创建"Slave1.Hadoop"自己的公钥和私钥,并把自己的公钥追加到"authorized_keys"文件中。用到的命令如下:

ssh-keygen –t rsa –P ‘‘

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

  接着是用命令"scp"复制"Slave1.Hadoop"的公钥"id_rsa.pub"到"Master.Hadoop"的"/home/hadoop/"目录下,并追加到"Master.Hadoop"的"authorized_keys"中。

  1)在"Slave1.Hadoop"服务器的操作

  用到的命令如下:

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

  2)在"Master.Hadoop"服务器的操作

  用到的命令如下:

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

  然后删除掉刚才复制过来的"id_rsa.pub"文件。

  最后是测试从"Slave1.Hadoop"到"Master.Hadoop"无密码登录。

  从上面结果中可以看到已经成功实现了,再试下从"Master.Hadoop"到"Slave1.Hadoop"无密码登录。

  至此"Master.Hadoop"与"Slave1.Hadoop"之间可以互相无密码登录了,剩下的就是按照上面的步骤把剩余的"Slave2.Hadoop"和"Slave3.Hadoop"与"Master.Hadoop"之间建立起无密码登录。这样,Master能无密码验证登录每个Slave,每个Slave也能无密码验证登录到Master。

时间: 2024-10-15 18:33:51

SSH无密码登陆配置的相关文章

配置 ssh无密码登陆

首先确保 linux系统中已经安装了ssh,否则先安装 ssh,ubuntu 系统可以执行 sudo apt-get install ssh 接下来开始配置 ssh无密码登陆 确保在 /home/user用户目录下存在.ssh目录,可以使用一下命令进行查看 ls -a /home/user 如果不存在可以自己手动创建一个 mkdir /home/user/.ssh 接下来没输入命令: ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 解释一下: ssh-keyge

ssh无密码登陆服务器

网上该类教程很多,但还是记录下,方便以后查询的时候使用. 两台服务器,内网ip分别是: 172.16.3.91 (本地机) 172.16.3.92 (远程机) 现在想在本地机上通过ssh 172.16.3.92登陆到远程机而不需要密码. 1.在本地机上用ssh-keygen 创建公钥私钥. [[email protected] ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to

ssh无密码登陆 Authentication refused: bad ownership or modes for directory /root

利用脚本自动建立ssh无密码登陆,系统版本为centos6.5 tailf /var/log/secure Mar 18 15:35:05 a2 sshd[6521]: Authentication refused: bad ownership or modes for directory /root Mar 18 15:35:05 a2 sshd[6521]: Authentication refused: bad ownership or modes for directory /root

Linux 批量建立信任关系,实现ssh无密码登陆的脚本

作用: 把当前机器的ssh公钥复制到其他机器,以实现从当前机器可以ssh无密码登陆到其他机器 使用方法: 1)把要添加的ip地址写入到一个文件中,比如host 2)把脚本保存为sh文件,如 install_ssh.sh 设置可执行权限 3)改写脚本中的密码设置,目前只支持固定几个密码. 4)  执行命令 sh install_ssh.sh <host 代码: #!/bin/sh auto_ssh_copy_id() { local HOST=$1 local PASSWD=$2 expect -

配置ssh无密码登陆

好几次都双机互配后才wanshi ,总记不住方向,记到这儿 A要链接B,A把自己的公钥给B 1 [email protected]:~$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/zxw/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase aga

[SSH服务]——一个SSH无密码登陆实验

实验拓扑图 实验描述 机房内有两台服务器: (1)B服务器10.0.10.158,充当Web服务器,有普通用户user_00 (2)C服务器10.0.10.191,充当Mysql服务器,有普通用户user_00 有服务器A 10.0.10.198,供管理员平常使用来管理机房内的机器.为方便起见,所以要求做到: (1)A服务器能SSH远程登录(以user_00的身份)到B和C,且实现无密码登陆: (2)远程登录后,user_00可以直接sudo到root而不需要密码. 在服务器B:10.0.10.

SSH无密码登陆问题解决

转载 http://my.oschina.net/hunzi/blog/10687 安装好Cygwin后,SSH需要设置为无密码登陆, 首先查看是ssh还是ssh2:ls -l `which ssh`lrwxrwxrwx 1 root root 4 2008-07-10 10:15 /usr/local/bin/ssh -> ssh2 如果“ls -l `which ssh`”得到的结果是:/usr/bin/ssh或/usr/local/bin/ssh,则可先认为为ssh2,不行再以ssh试一试

Linux设置ssh无密码登陆

最近在折腾Hadoop,要用到主机间无密码登陆,设置的时候遇到了一些问题,这里记录一下. 假设A需要无密码登陆B. 那么首先需要在A上使用ssh-keygen生成id_rsa.pub的公钥,生成时,一路回车即可,文件生成在~/.ssh目录中. 将上一步的id_rsa.pub文件内容追加复制到B机器的~/.ssh/authorized_keys文件中,并将B的authorized_keys权限设置为600. 理论上来说此时就可以在A上使用ssh B来无密码登陆B了. 遇到的问题:还是提示输入密码.

大数据环境搭建-之-ssh无密码登陆

yum search ssh :查询可安装的ssh 包 yum install -y openssh:安装ssh包 yum list installed openssh :查询是否已安装了openssh 配置无密码登陆 1.由root用户切换到hadoop 用户下 2.在根路径下(/home/hadoop)创建.ssh 文件 mkdir .ssh 3.生成密钥 ssh-keygen -t rsa -P "" 4.进入 .ssh目录下 cd .ssh 5.ls 查看 看里面有 了公钥和私