linux 免密码登录详解

为了更好的理解SSH免密码登录原理,我们先来说说SSH的安全验证,SSH采用的是”非对称密钥系统”,即耳熟能详的公钥私钥加密系统,其安全验证又分为两种级别。

1. 基于口令的安全验证

这种方式使用用户名密码进行联机登录,一般情况下我们使用的都是这种方式。整个过程大致如下:

(1)客户端发起连接请求。

(2)远程主机收到用户的登录请求,把自己的公钥发给客户端。

(3)客户端接收远程主机的公钥,然后使用远程主机的公钥加密登录密码,紧接着将加密后的登录密码连同自己的公钥一并发送给远程主机。

(4)远程主机接收客户端的公钥及加密后的登录密码,用自己的私钥解密收到的登录密码,如果密码正确则允许登录,到此为止双方彼此拥有了对方的公钥,开始双向加密解密。

PS:当网络中有另一台冒牌服务器冒充远程主机时,客户端的连接请求被服务器B拦截,服务器B将自己的公钥发送给客户端,客户端就会将密码加密后发送给冒牌服务器,冒牌服务器就可以拿自己的私钥获取到密码,然后为所欲为。因此当第一次链接远程主机时,在上述步骤的第(3)步中,会提示您当前远程主机的”公钥指纹”,以确认远程主机是否是正版的远程主机,如果选择继续后就可以输入密码进行登录了,当远程的主机接受以后,该台服务器的公钥就会保存到 ~/.ssh/known_hosts文件中。

2. 基于密匙的安全验证

这种方式你需要在当前用户家目录下为自己创建一对密匙,并把公匙放在需要登录的服务器上。当你要连接到服务器上时,客户端就会向服务器请求使用密匙进行安全验证。服务器收到请求之后,会在该服务器上你所请求登录的用户的家目录下寻找你的公匙,然后与你发送过来的公匙进行比较。如果两个密匙一致,服务器就用该公匙加密“质询”并把它发送给客户端。客户端收到“质询”之后用自己的私匙解密再把它发送给服务器。与第一种级别相比,第二种级别不需要在网络上传送口令。

PS:简单来说,就是将客户端的公钥放到服务器上,那么客户端就可以免密码登录服务器了,那么客户端的公钥应该放到服务器上哪个地方呢?默认为你要登录的用户的家目录下的 .ssh 目录下的 authorized_keys 文件中(即:~/.ssh/authorized_keys)。

3. 使用场景

rsync自动备份时免密码登录,集群环境中需要主机间互相通信如:Hadoop,目前小编只涉及到这两处,日后有其它地方用到再来补充~

3. 相关配置项

SSHD服务的配置文件位于/etc/ssh/sshd_config

配置项一:PubkeyAuthentication 是否允许使用密钥验证方式登录

配置项二:AuthorizedKeysFile允许登录主机的公钥存放文件,默认为用户家目录下的 .ssh/authorized_keys

4. 权限问题

.ssh文件夹 700 chmod 700 .ssh

authorized_keys文件 644 chmod 644 .ssh/authorized_keys

5. 配置实现

ssh 无密码登录要使用公钥与私钥。linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例。

有机器A(192.168.1.155),B(192.168.1.181)。现想A通过ssh免密码登录到B。

1.在A机下生成公钥/私钥对。

[[email protected] ~]$ ssh-keygen -t rsa -P ‘‘

-P表示密码,-P ‘‘ 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。
它在/home/chenlb下生成.ssh目录,.ssh下有id_rsa和id_rsa.pub。

2.把A机下的id_rsa.pub复制到B机下,在B机的.ssh/authorized_keys文件里,我用scp复制。

[[email protected] ~]$ scp .ssh/id_rsa.pub [email protected]:/home/chenlb/id_rsa.pub 
[email protected]‘s password:

id_rsa.pub                                    100%  223     0.2KB/s   00:00

由于还没有免密码登录的,所以要输入密码。

3.B机把从A机复制的id_rsa.pub添加到.ssh/authorzied_keys文件里。

[[email protected] ~]$ cat id_rsa.pub >> .ssh/authorized_keys
[[email protected] ~]$ chmod 600 .ssh/authorized_keys

authorized_keys的权限要是600

4.A机登录B机。

[[email protected] ~]$ ssh 192.168.1.181
The authenticity of host ‘192.168.1.181 (192.168.1.181)‘ can‘t be established.
RSA key fingerprint is 00:a6:a8:87:eb:c7:40:10:39:cc:a0:eb:50:d9:6a:5b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.1.181‘ (RSA) to the list of known hosts.
Last login: Thu Jul  3 09:53:18 2008 from chenlb
[[email protected] ~]$

第一次登录是时要你输入yes。

现在A机可以无密码登录B机了。

小结:登录的机子可有私钥,被登录的机子要有登录机子的公钥。这个公钥/私钥对一般在私钥宿主机产生。上面是用rsa算法的公钥/私钥对,当然也可以用dsa(对应的文件是id_dsa,id_dsa.pub)

想让A,B机无密码互登录,那B机以上面同样的方式配置即可。

时间: 2024-10-20 07:15:13

linux 免密码登录详解的相关文章

ssh免密码登录、secureCRT免密码登录详解

再放一张真机实现图: 接下来就详细讲述实现细节. 实现过程中吃了不少苦头,这个不对,那个不通.好在慢慢一点点摸索出来了,经验分享在这里. 希望能终结网上ssh免密码登录,以及SecureCRT免密码登录的问题.如有错误,欢迎指出!转载请注明出处,谢谢! 首先,明确一个目的:各主机之间免密码登录.CRT免密登录其他主机.直接输入ssh 主机名,就能直接登录到指定的主机上.为什么上述没有实现Master与其他主机间的免密码登录?是为了跟免密登录作一个对比.好,闲言少叙,先看第一个话题,各主机间的免密

linux免密码登录

linux系统中,免密码登陆是一个常用的功能,特别是在shell脚本中.实际生产中配过多次,也帮其他人解决过登陆失败的问题:发现这个功能虽然简单但在整个配置过程中还有一些需要注意的问题.特此记录备忘! 网上大多的参考资料都是先创建密钥,然后再手动复制公钥到远程主机上,整个过程包括创建文件夹,创建文件,复制内容几步,麻烦且易出错.以下用最简单的办法实现免密钥登录: 1.一路回车,创建一个不加密码的密钥. ssh-keygen 2.使用ssh中的一个命令直接将公钥复制到远程主机,只需要输入一次密码即

Xshell生成密钥key(用于Linux 免密码登录)

Linux上ssh免密码登录

由于工作需要,需要频繁发布系统,于是就决定在发布机上搞一套自动上传文件,远程运行脚本的自动化发布,但是每次ssh都需要输入密码,于是就需要本文提到的SSH免密码登录. 现有A服务器和B服务器,A服务器需要SSH免密码连到B服务器. 先在B服务器上以下命令,会在用户目录下创建.ssh目录并在其下创建公钥和私钥(id_rsa,id_rsa.pub): ssh-keygen -t rsa -P '' 然后为了测试方便,先将自己的公钥导入到受信的公钥列表中 cd ~/.ssh cat id_rsa.pu

Linux SSH 免密码登录

工作中经常要登录的Linux主机太多,每次输密码太麻烦,配过几次免密码登录,每次都记不住,这次记下来备忘. 首先在自己机器上使用 ssh-keygen 工具来创建密钥,如下 ssh-keygen -t rsa 使用 ssh-copy-id 命令自动在目标服务器上生成~/.ssh/authorized_keys文件 ssh-copy-id -i ~/.ssh/id_rsa.pub <目标机器> 转载请以链接形式标明本文地址 本文地址:http://blog.csdn.net/kongxx/art

Linux生成ssh公钥免密码登录远程主机和Xshell跨跳板机登录

##Linux生成ssh公钥免密码登录远程主机: 1:ssh-keygen -t rsa#生成密钥2:ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]#把本机的公钥追到远程主机172.16.205.117(登录账户hejm)的 ~/.ssh/authorized_keys 里注:如果ssh的端口不是22,可用参数p指定对应端口ssh-copy-id -i ~/.ssh/id_rsa.pub -p 23 [email protected] 或者通

Linux使用ssh公钥实现免密码登录Linux

ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 有机器A(192.168.1.155),B(192.168.1.181).现想A通过ssh免密码登录到B.首先以root账户登陆为例. 1.在A机下生成公钥/私钥对. [[email protected] ~]# ssh-keygen -t rsa -P '' -P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车.该命令将在/root

Linux下SSH免密码登录

转自:http://haitao.iteye.com/blog/1744272 ssh配置 主机A:10.0.5.199 主机B:10.0.5.198 需要配置主机A无密码登录主机A,主机B 先确保所有主机的防火墙处于关闭状态. 在主机A上执行如下: 1. $cd ~/.ssh 2. $ssh-keygen -t rsa  --------------------然后一直按回车键,就会按照默认的选项将生成的密钥保存在.ssh/id_rsa文件中. 3. $cp id_rsa.pub author

Linux之间ssh免密码登录

一.生成公私钥对 $ ssh-keygen -t rsa -P '' Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa):  Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The