`

CentOS 配置SSH免密码登陆

阅读更多

原文地址: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免密码登录实现原理

 

SSH无密码登陆的几种关系

通常情况下,一个集群服务下至少有一个Master和若干个Slave,那么无密码登陆通常指的是由Master到任意一个Slave的无验证的单向登陆,意思就是只能从Master登陆到Slave是不需要密码的,但是如果你想从Slave无验证登陆到Master,或者你想在Slave与Slave之间进行无验证登陆,这些都是不可行的,除非,你进行了密钥对的双向验证,才可以双向登陆。

 

我们考虑双向登录,下图是Master到Slave机器的单向登陆配置流程,如下:

SSH无密码登录流程图

 

 

配置详细流程

第一步、配置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

直接登陆了,不用输入密码.

 

到这里就讲解完了,如有不正确地方,望指正。谢谢支持!!!!

 

 

 

分享到:
评论

相关推荐

    虚拟机VMware下centos配置SSH免密码登陆

    以下将详细介绍如何在两个CentOS系统之间配置SSH免密码登陆。 首先,我们需要了解SSH的基本原理。SSH通过加密网络通信,提供了一种安全的远程登录方式。在实现免密码登陆时,它依赖于公钥和私钥这对密钥对。公钥...

    centos配置ssh免密码登录后仍要输入密码的解决方法

    当管理多台服务器时,配置SSH免密码登录可以极大提高工作效率,特别是在构建集群服务时。然而,有时按照常规步骤配置后,仍然需要输入密码才能登录,这可能会导致不便。以下是一个详细的解决方法,专门针对CentOS...

    CentOS 6.5 SSH免密码登录

    CentOS 6.5 SSH 免密码登录配置 本文将详细介绍 CentOS 6.5 之 SSH 免密码登录配置的相关知识点。 一、环境设置 在 CentOS 6.5 中,需要关闭防火墙和 SELinux,以便进行后续的配置。关闭防火墙可以使用以下命令:...

    Linux配置ssh免密码登录

    ### Linux配置SSH免密码登录详解 #### 一、引言 在进行分布式系统如Hadoop集群的搭建过程中,为了提高效率并确保数据的安全性,通常需要实现节点间的免密码登录。这种方式通过使用SSH (Secure Shell) 的公钥/私钥...

    Centos通过SSH远程桌面登录

    Centos 通过 SSH 远程桌面登录 Centos 通过 SSH 远程桌面登录是指使用 Secure Shell(SSH)协议连接到 Centos 服务器,并使用远程桌面协议(Remote Desktop Protocol,RDP)访问 Centos 服务器桌面的一种方法。这种...

    centos7 ssh免密登录自动化配置脚本(ps:已测试过)

    3. **配置SSH**:确保SSH配置文件`/etc/ssh/sshd_config`允许公钥认证,并且没有禁用`PasswordAuthentication`,重启`sshd`服务以应用更改。 4. **使用expect模拟登录**:使用expect脚本模拟SSH登录过程,当SSH服务...

    centos下ssh配置文档

    要配置SSH服务,首先需要在CentOS上安装SSH服务。在CentOS 5.3版本中,可以通过`yum install ssh`命令来安装SSH。安装完成后,可以使用`service sshd start`启动SSH服务,并使用`chkconfig sshd on`将其设置为开机...

    centos7 ssh8.6 rpm安装包

    在IT领域,特别是服务器管理,CentOS 7操作系统是一个广泛使用的Linux发行版。...同时,配置防火墙规则以允许必要的SSH端口访问(默认为22),并考虑使用更安全的身份验证方法,如公钥认证,以提高系统的安全性。

    Windows7配置PuTTY+Xming连接CentOS7 SSH服务器图形化界面

    在Windows 7操作系统中,通过SSH(Secure Shell)连接到远程Linux系统,如CentOS 7,进行图形化界面操作,通常需要借助第三方工具。在这个场景下,我们使用PuTTY作为SSH客户端,而Xming作为X Window System的本地...

    CentOS 6.5中SSH免密码登录配置教程

    在CentOS 6.5中配置SSH免密码登录涉及到几个关键步骤,主要包括环境设置、生成密钥对、导入公钥以及修改文件权限。 **环境设置** 1. **关闭SELinux**:SELinux是CentOS 6.5中的安全增强层,但为了实现SSH免密码...

    centos之SSH安装

    ### CentOS之SSH安装详解 ...通过以上步骤,你可以在CentOS系统上成功安装并配置SSH服务,从而实现安全的远程登录和其他网络服务。SSH不仅是远程管理Linux服务器的必备工具,也是保护网络安全的重要手段之一。

    CentOS下SSH无密码登录的配置文件

    #### 二、配置SSH无密码登录的必要性 在日常运维工作中,频繁地通过SSH登录不同的服务器进行管理和操作是必不可少的。传统的SSH登录方式需要用户每次输入密码,这不仅降低了工作效率,而且在多台服务器间切换时也...

    CentOS系统安装及SSH配置.rar

    这两份文档——"CentOS安装文档.doc"和"CentOs配置SSH.doc"将提供更详尽的步骤和注意事项,帮助你顺利完成CentOS系统的安装和SSH配置。对于初学者,理解并实践这些步骤是迈向Linux系统管理的重要一步。同时,熟悉SSH...

    CentOS6.4 SSH Telnet服务器配置

    3. **配置SSH服务** - 编辑`/etc/ssh/sshd_config`文件来调整SSH服务的配置选项,例如禁用root登录、更改监听端口等。 4. **测试SSH连接** - 在另一台机器上使用`ssh username@server_ip`命令进行测试连接。 5. **...

    centos7SSH免密登录.docx

    配置SSH免密登录的过程分为以下几个步骤: 1. **生成密钥对**:在所有需要免密登录的机器(如master和slave)上运行`ssh-keygen`命令,它会在用户的主目录下创建一个隐藏的`.ssh`目录,并生成`id_rsa`(私钥)和`id...

    CentOS SSH无密码登录的配置

    配置SSH无密码登录是提高运维效率的重要手段,尤其在管理大量服务器时。然而,这也需要谨慎操作,确保遵循最佳实践,以防止未经授权的访问。务必保持良好的权限设置和安全上下文,同时定期检查和更新SSH配置,以抵御...

    两个SSH2间免密码登录

    ### 两个SSH2间免密码登录配置详解 #### 背景介绍 SSH(Secure Shell)是一种网络协议,用于计算机之间的加密登录。SSH2作为SSH的一个版本,提供了更安全的数据传输方式。本文主要讨论SSH2环境下实现两台机器之间免...

    第1集-Hadoop环境搭建 - linux(centos7) - ssh免登陆.pdf

    接下来,我们配置SSH以实现免密码登录。首先,生成SSH密钥对,使用`ssh-keygen -t rsa`命令。默认情况下,密钥对会被保存在`~/.ssh`目录下。然后,将公钥(`id_rsa.pub`)追加到`authorized_keys`文件中,以允许免密码...

Global site tag (gtag.js) - Google Analytics