原文地址:http://www.hxstrive.com/article/487.htm
配置SSH无登陆验证,在很多场景下是非常方便的,尤其是在管理大型集群服务时,避免了繁琐的密码验证,在安全级别越高的服务器上,通常密码的设置更复杂,配置SSH,不仅可以用密钥保证节点间通信的安全性,同时也降低了频繁输入密码登陆的耗时,大大提高了管理效率。
SSH无密码验证的原理
Master作为客户端,要实现无密码公钥认证,连接到服务器Slave上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH链接到Slave上时,Slave会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,期间不需要手工输入密码,重要的过程是将Master上产生的公钥复制到Slave上。 原理如下图:
SSH无密码登陆的几种关系
通常情况下,一个集群服务下至少有一个Master和若干个Slave,那么无密码登陆通常指的是由Master到任意一个Slave的无验证的单向登陆,意思就是只能从Master登陆到Slave是不需要密码的,但是如果你想从Slave无验证登陆到Master,或者你想在Slave与Slave之间进行无验证登陆,这些都是不可行的,除非,你进行了密钥对的双向验证,才可以双向登陆。
我们考虑双向登录,下图是Master到Slave机器的单向登陆配置流程,如下:
配置详细流程
第一步、配置Master和Slave主机名和host文件
假如主机名和IP地址的对应关系如下表:
主机名 | IP地址 |
Master | 192.168.1.100 |
Slave | 192.168.1.101 |
使用root用户分别对192.168.1.100和192.168.1.101的主机名分别设置为Master和Slave,如下:
1
2
3
|
[root@localhost] $ vi /etc/sysconfig/network
NETWORKING= yes
HOSTNAME=Master |
同理,设置Slave主机。
修改host文件,设置ip和主机名称的映射关系。如下:
1
2
3
4
5
6
|
[root@localhost /] # vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 # 下面是我们添加的 192.168.1.100 Master 192.168.1.101 Slave |
同理,在另一台机器上面进行设置。
第二步、创建Hadoop用户
在Master和Slave机器上面创建hadoop用户,密码为hadoop,如下:
1
2
3
4
5
6
7
8
|
[root@Master ~] # adduser hadoop
[root@Master ~] # passwd hadoop
Changing password for user hadoop.
New password: BAD PASSWORD: it is based on a dictionary word BAD PASSWORD: is too simple Retype new password: passwd : all authentication tokens updated successfully.
|
同理,在Slave上面创建hadoop用户。
注意:下面步骤的操作都是在hadoop用户下面进行,除非需要修改配置文件。
第三步、配置客户端(Master)
首先,检测当前用户在.ssh目录下面是否存在,如下:
1
2
3
4
|
[hadoop@Master ~]$ ll -a . ssh
total 20 drwx------. 2 hadoop hadoop 4096 Jul 2 04:53 . drwx------. 5 hadoop hadoop 4096 Jul 2 01:06 .. |
从上面可知,当前用户下面的.ssh目录下面不存在id_rsa和id_rsa.pub文件。(注意:如果不存在.ssh文件,则手动创建.ssh文件即可)
其次,使用ssh-keygen生成密钥对文件,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
[hadoop@Master ~]$ 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: 18:f8:3a:c5:74:2d:90:ba:d6:ea:28:e1:82:f6:d1:7f hadoop@centos201 The key's randomart image is: +--[ RSA 2048]----+ | .. | | ... . | | ..o o . | | .+ + . | | o= S | |. +o. | |o. ooo | |+o .o.. E | |o.oo. .. | +-----------------+ |
如果在.ssh下面存在id_rsa和id_rsa.pub文件,则直接跳过上面生成密钥对的步骤。
然后,将id_rsa.pub文件拷贝到Slave服务器上面,如下:
1
2
3
4
5
6
7
8
|
[hadoop@Master ~]$ scp ~/. ssh /id_rsa .pub Slave: /home/hadoop/ . ssh
The authenticity of host 'Slave (192.168.31.101)' can't be established.
RSA key fingerprint is 57:b0:d0:bf:17:92:9a:1d:0a:ac:75:55:5e:83:4c:c1. Are you sure you want to continue connecting ( yes /no )? yew^Hs^[[3~
Please type 'yes' or 'no' : yes
Warning: Permanently added 'Slave, 192.168.31.101' (RSA) to the list of known hosts.
hadoop@Slave's password: id_rsa.pub 100% 398 0.4KB /s 00:00
|
第四步、配置服务端(Slave)
首先,查看当前(hadoop)用户下面是否存在.ssh目录,如下:
1
2
3
4
5
|
[hadoop@Slave . ssh ]$ ll -a
total 16 drwx------. 2 hadoop hadoop 4096 Jul 12 16:32 . drwx------. 5 hadoop hadoop 4096 Jul 12 15:49 .. -rw-r--r--. 1 hadoop hadoop 398 Jul 12 16:31 id_rsa.pub |
如果存在,则将id_rsa.pub文件拷贝到authorized_keys中,否则执行第三步,将id_rsa.pub拷贝到当前目录下面,如下:
1
2
3
4
5
6
7
|
[hadoop@Slave . ssh ]$ cat id_rsa.pub >> authorized_keys
[hadoop@Slave . ssh ]$ ll -a
total 16 drwx------. 2 hadoop hadoop 4096 Jul 12 16:32 . drwx------. 5 hadoop hadoop 4096 Jul 12 15:49 .. -rw-rw-r--. 1 hadoop hadoop 398 Jul 12 16:32 authorized_keys -rw-r--r--. 1 hadoop hadoop 398 Jul 12 16:31 id_rsa.pub |
其次,修改/etc/ssh/sshd_config配置文件,启用RSA公钥验证,如下:
1
2
3
4
5
|
[root@Slave /] $ vi /etc/ssh/sshd_config
# 将下面三行的注释去掉 RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile . ssh /authorized_keys
|
最后,重启SSHD服务,如下:
1
2
3
|
[root@Slave /] $ service sshd restart Stopping sshd: [ OK ] Starting sshd: [ OK ] |
注意:
.ssh 文件的权限为700
authorized_keys 文件的权限为600
第五步、测试配置
客户机执行如下代码:
1
2
|
# -v 调试模式 [hadoop@Master /] $ ssh - v Slave
|
使用调试模式登录Slave会显示一些详细的登陆日志信息。若登陆失败,或者仍然要输入密码,可以在服务器查看日志文件:/var/log/secure。若登陆成功,则以后就可以直接使用如下命令登录,如下:
1
|
[hadoop@Master /] $ ssh Slave
|
直接登陆了,不用输入密码.
到这里就讲解完了,如有不正确地方,望指正。谢谢支持!!!!
相关推荐
以下将详细介绍如何在两个CentOS系统之间配置SSH免密码登陆。 首先,我们需要了解SSH的基本原理。SSH通过加密网络通信,提供了一种安全的远程登录方式。在实现免密码登陆时,它依赖于公钥和私钥这对密钥对。公钥...
当管理多台服务器时,配置SSH免密码登录可以极大提高工作效率,特别是在构建集群服务时。然而,有时按照常规步骤配置后,仍然需要输入密码才能登录,这可能会导致不便。以下是一个详细的解决方法,专门针对CentOS...
CentOS 6.5 SSH 免密码登录配置 本文将详细介绍 CentOS 6.5 之 SSH 免密码登录配置的相关知识点。 一、环境设置 在 CentOS 6.5 中,需要关闭防火墙和 SELinux,以便进行后续的配置。关闭防火墙可以使用以下命令:...
### Linux配置SSH免密码登录详解 #### 一、引言 在进行分布式系统如Hadoop集群的搭建过程中,为了提高效率并确保数据的安全性,通常需要实现节点间的免密码登录。这种方式通过使用SSH (Secure Shell) 的公钥/私钥...
Centos 通过 SSH 远程桌面登录 Centos 通过 SSH 远程桌面登录是指使用 Secure Shell(SSH)协议连接到 Centos 服务器,并使用远程桌面协议(Remote Desktop Protocol,RDP)访问 Centos 服务器桌面的一种方法。这种...
3. **配置SSH**:确保SSH配置文件`/etc/ssh/sshd_config`允许公钥认证,并且没有禁用`PasswordAuthentication`,重启`sshd`服务以应用更改。 4. **使用expect模拟登录**:使用expect脚本模拟SSH登录过程,当SSH服务...
要配置SSH服务,首先需要在CentOS上安装SSH服务。在CentOS 5.3版本中,可以通过`yum install ssh`命令来安装SSH。安装完成后,可以使用`service sshd start`启动SSH服务,并使用`chkconfig sshd on`将其设置为开机...
在IT领域,特别是服务器管理,CentOS 7操作系统是一个广泛使用的Linux发行版。...同时,配置防火墙规则以允许必要的SSH端口访问(默认为22),并考虑使用更安全的身份验证方法,如公钥认证,以提高系统的安全性。
在Windows 7操作系统中,通过SSH(Secure Shell)连接到远程Linux系统,如CentOS 7,进行图形化界面操作,通常需要借助第三方工具。在这个场景下,我们使用PuTTY作为SSH客户端,而Xming作为X Window System的本地...
在CentOS 6.5中配置SSH免密码登录涉及到几个关键步骤,主要包括环境设置、生成密钥对、导入公钥以及修改文件权限。 **环境设置** 1. **关闭SELinux**:SELinux是CentOS 6.5中的安全增强层,但为了实现SSH免密码...
### CentOS之SSH安装详解 ...通过以上步骤,你可以在CentOS系统上成功安装并配置SSH服务,从而实现安全的远程登录和其他网络服务。SSH不仅是远程管理Linux服务器的必备工具,也是保护网络安全的重要手段之一。
#### 二、配置SSH无密码登录的必要性 在日常运维工作中,频繁地通过SSH登录不同的服务器进行管理和操作是必不可少的。传统的SSH登录方式需要用户每次输入密码,这不仅降低了工作效率,而且在多台服务器间切换时也...
这两份文档——"CentOS安装文档.doc"和"CentOs配置SSH.doc"将提供更详尽的步骤和注意事项,帮助你顺利完成CentOS系统的安装和SSH配置。对于初学者,理解并实践这些步骤是迈向Linux系统管理的重要一步。同时,熟悉SSH...
3. **配置SSH服务** - 编辑`/etc/ssh/sshd_config`文件来调整SSH服务的配置选项,例如禁用root登录、更改监听端口等。 4. **测试SSH连接** - 在另一台机器上使用`ssh username@server_ip`命令进行测试连接。 5. **...
配置SSH免密登录的过程分为以下几个步骤: 1. **生成密钥对**:在所有需要免密登录的机器(如master和slave)上运行`ssh-keygen`命令,它会在用户的主目录下创建一个隐藏的`.ssh`目录,并生成`id_rsa`(私钥)和`id...
配置SSH无密码登录是提高运维效率的重要手段,尤其在管理大量服务器时。然而,这也需要谨慎操作,确保遵循最佳实践,以防止未经授权的访问。务必保持良好的权限设置和安全上下文,同时定期检查和更新SSH配置,以抵御...
### 两个SSH2间免密码登录配置详解 #### 背景介绍 SSH(Secure Shell)是一种网络协议,用于计算机之间的加密登录。SSH2作为SSH的一个版本,提供了更安全的数据传输方式。本文主要讨论SSH2环境下实现两台机器之间免...
接下来,我们配置SSH以实现免密码登录。首先,生成SSH密钥对,使用`ssh-keygen -t rsa`命令。默认情况下,密钥对会被保存在`~/.ssh`目录下。然后,将公钥(`id_rsa.pub`)追加到`authorized_keys`文件中,以允许免密码...