Linux(CentOS)SSH无密码验证登陆

最近在搭建Hadoop集群,为了操作方便,需要Master用无密码验证的方式的SSH登陆Slave。

1.原理:

Master作为客户端,要实现无密码公钥认证,连接到服务器Salve上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Salve上。当Master通过SSH链接到Salve上时,Salve会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Salve,Salve确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,期间不需要手工输入密码,重要的过程是将Master上产生的公钥复制到Salve上。

2.在Master上登陆Hadoop用户,执行以下命令,生成密钥对,并把公钥文件写入授权文件中,并赋值权限

[[email protected] bin]$ ssh-keygen -t rsa -P ‘‘
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
93:21:fb:20:01:c9:13:a3:28:01:6c:57:3b:a0:e0:e2 [email protected]
The key‘s randomart image is:
+--[ RSA 2048]----+
|*.++..           |
|+==+. .          |
|*o...o. .        |
|+    ..o o       |
| E  . o S        |
|     . o .       |
|        .        |
|                 |
|                 |
+-----------------+
[[email protected] bin]$  cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[[email protected] bin]$ chmod 600 ~/.ssh/authorized_keys

3 切换root用户,配置sshd,取消被注释的公钥字段,

RSAAuthentication yes # 启用 RSA 认证

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

AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同) 并保存设置,然后重启sshd,即可测试本机的SSH

[hadoop@master bin]$ su root
密码:
bash-4.1# vim /etc/ssh/sshd_config
bash-4.1# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

4.本机测试:这里我用了localhost,IP地址,hostname来进行测试,可以发现均不需要输入密码。

[[email protected] bin]$ ssh localhost
The authenticity of host ‘localhost (::1)‘ can‘t be established.
RSA key fingerprint is 3a:99:7f:41:68:bd:3b:80:43:bb:8a:5c:62:73:1f:45.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘localhost‘ (RSA) to the list of known hosts.
[[email protected] ~]$ ssh 172.16.1.17
The authenticity of host ‘172.16.1.17 (172.16.1.17)‘ can‘t be established.
RSA key fingerprint is 3a:99:7f:41:68:bd:3b:80:43:bb:8a:5c:62:73:1f:45.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘172.16.1.17‘ (RSA) to the list of known hosts.
Last login: Wed Jun 10 12:37:23 2015 from ::1
[[email protected] ~]$ ssh master
sysconfig/       system-release
The authenticity of host ‘master (172.16.1.17)‘ can‘t be established.
RSA key fingerprint is 3a:99:7f:41:68:bd:3b:80:43:bb:8a:5c:62:73:1f:45.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘master‘ (RSA) to the list of known hosts.
Last login: Wed Jun 10 12:38:37 2015 from 172.16.1.17

下面介绍Master用无密码验证的方式的SSH登陆Slave

1.首先在Slave上创建用户hadoop,并设置密码

-bash-4.1# useradd hadoop
-bash-4.1# ls -l /home
总用量 8
drwx------ 2 hadoop hadoop 4096 6月  10 12:58 hadoop
drwx------ 2 xc     xc     4096 7月   9 2013 xc
-bash-4.1# passwd hadoop
更改用户 hadoop 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。

2.切换到Master,并将Master上的公钥scp到Slave节点的Hadoop用户上

[hadoop@master ~]$ scp ~/.ssh/id_rsa.pub hadoop@slave2:~/
The authenticity of host ‘slave2 (172.16.1.20)‘ can‘t be established.
RSA key fingerprint is 67:22:ba:43:ad:fe:a2:d4:ad:43:26:4b:71:d0:54:af.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘slave2,172.16.1.20‘ (RSA) to the list of known hosts.
[email protected]‘s password:
id_rsa.pub                                                         100%  395     0.4KB/s   00:00
[hadoop@master ~]$

3.拷贝完后到Slave节点上,公钥追加授权文件,并修改权限

[hadoop@master ~]$ ssh [email protected]
hadoop@slave2‘s password:
[hadoop@slave2 ~]$ ls
id_rsa.pub
[hadoop@slave2 ~]$ mkdir ~/.ssh
[hadoop@slave2 ~]$ chmod 700 ~/.ssh/
[hadoop@slave2 ~]$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
[hadoop@slave2 ~]$ chmod 600 ~/.ssh/authorized_keys
[hadoop@slave2 ~]$

4.然后切换至root用,修改sshd配置,并重启sshd服务。

1)在/etc/sys下添加下面两行代码

sysconfig/      system-release
sysctl.conf     system-release-cpe

2)然后修改 /etc/ssh/sshd_config文件,将下面三行注释(#)取消掉)

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

3)重启sshd服务

service sshd restart

5.回到Master下进行测试,发现可以不用输入密码,便可以ssh到Slave节点的Hadoop用户上。

[hadoop@master ~]$ ssh hadoop@slave2
Last login: Wed Jun 10 13:09:53 2015 from 172.16.1.17
[hadoop@slave2 ~]$
时间: 2024-10-20 04:42:12

Linux(CentOS)SSH无密码验证登陆的相关文章

Linux配置ssh无密码验证,rsync

1.我先声明主机 pangzhiminglinux     192.168.200.129 CentOS2           192.168.200.130 方法大概是这样:如果想从pangzhiminglinux的普通用户无验证登录到CentOS2的普通用户(单方向的),那么就要在两个主机都建立一个相同名字,相同密码的普通用户hadoop,pangzhiminglinux登录到自己创的普通用户hadoop下,生成秘钥对,私钥不要密码,把公钥内容复制到hadoop家目录的.ssh/author

配置Linux主机SSH无密码访问

通过证书签名达到Linux主机SSH无密码访问,使用ssh-keygen与ssh-copy-id来实现快速证书的生成及公钥下发,其中ssh-keygen生成一对密钥,使用ssh-copy-id来下发生成的公钥.具体操作如下: 在主机A(192.168.0.100)创建密钥,执行: ssh-keygen -t rsa ,有询问直接按回车键即可,将在/root/.ssh/下生成一对密钥,其中id_rsz为私钥,id_rsa.pub为公钥(需要下发到B主机用户.ssh目录,同时要求重名成authori

centos ssh 无密码登录

在linux系统中,ssh是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的加密算法.该工具做linux系统的远程管理是非常安全的.telnet,因为其不安全性,在linux系统中被搁置使用了. " 公私钥"认证方式简单的解释:首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub: 私钥文件:~/.ssh/id_rsa).然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥.在使用ssh登录时,ssh程序会发送私钥去

SSH无密码验证

一.安装和启动SSH协议 sudo yum install ssh sudo yum install rsync service sshd restart 启动服务 (rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件) 确保所有的服务器都安装,上面命令执行完毕,各台机器之间可以通过密码验证相互登. Last login: Mon Oct 29 14:01:11 2012 from 10.196.80.99 [email protected]:~$ ssh local

SSH无密码验证配置

一. 准备工作 首先要确保你的linux系统中已经安装了ssh,对于ubuntu系统一般默认只安装了ssh client,所以还需要我们手动安装ssh server: sudo apt-get install openssh-server 二. SSH基本原理 2.1 基本原理 SSH之所以能够保证安全,原因在于它采用了公钥加密.过程如下: 远程主机收到用户的登录请求,把自己的公钥发给用户: 用户使用这个公钥,将登录密码加密后,发送回来: 远程主机用自己的私钥,解密登录密码,如果密码正确,就同意

Linux实现SSH无密码登录(对目录权限的设置非常详细,可以参考一下)

假设服务器IP地址为192.168.1.1,机器名:cluster.hpc.org 客户端IP地址为172.16.16.1,机器名:p470-2.wangrx.sioc.ac.cn 客户端用户yzhao需要使用ssh无密码登录服务器的zhaoy帐户 实现原理 使用一种被称为"公私钥"认证的方式来进行ssh登录. "公私钥"认证方式简单的解释是 首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub: 私钥文件:~/.ssh/id_rsa) 然后

Linux之ssh无密码登录

简单方式实现,多台Linux主机之间ssh无密码登录. 1.在任意一台主机上执行如下命令.如:192.168.10.102 1 [[email protected] ~]# ssh-keygen 2 Generating public/private rsa key pair. 3 Enter file in which to save the key (/root/.ssh/id_rsa): 4 Created directory '/root/.ssh'. 5 Enter passphras

CentOS6.2ssh无密码验证登陆

背景:有A.B两台CentOS6.2系统: A:192.168.12.128: B: 192.168.12.133: 目标:实现A.B设备相互无需密码登陆: 过程: 一.登陆A设备: #cd /root/.ssh/ #ssh-keygen -t rsa  生成秘钥(id_rsa :id_rsa.pub ),过程直接空格: #cp id_rsa.pub authorized_keys #chmod 600 authorized_keys #scp authorized_keys [email pr

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了. 遇到的问题:还是提示输入密码.