• SSH免密码登陆详解


    为了更好的理解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. 配置实现

    服务器:192.168.0.10 用户:server

    客户端:192.168.0.11 用户:client

     

    # 客户端配置
    
    # 使用client用户登陆并进入家目录
    
    # cd /home/client
    
    # 建立认证公钥和私钥
    
    # ssh-keygen -t rsa (会有提示输入密码,直接回车即可)
    
    # 之后会在家目录下建立 .ssh 文件夹,内有id_rsa(私钥)和id_rsa.pub(公钥)两个文件
    
    # 将公钥文件上传到服务器上server的家目录
    
    # scp ~/.ssh/id_rsa.pub server@192.168.0.10:~

     

    # 服务器端配置
    
    # 使用server用户登陆并进入家目录
    
    # cd /home/server
    
    # 建立 .ssh 文件夹
    
    # mkdir .ssh;
    
    # 修改文件夹权限
    
    # chmod 700 .ssh
    
    # 将客户端传过来的id_rsa.pub文件中的内容加入到authorized_keys中
    
    # cat id_rsa.pub >> .ssh/authorized_keys
    
    # chmod 644 .ssh/authorized_keys

     之后你从客户端使用 client 用户登陆服务器的server用户时就不需要再输入密码了,但是第一次连接时还是会提示你进行远程主机公钥指纹核对并将其存入 ~/.ssh/known_hosts 文件。

     

  • 相关阅读:
    华硕ASUS A3V 拆解图 http://m.linktone.com/report/pdjj/14001781862.shtml
    华硕A3V 迅驰 配置详情
    Dvbbs 更换论坛置顶图片
    Flash 图片轮换效果
    动网官方最新dvbbs7.1sp1商业版下载,附存储过程解密代码!
    在VC中为应用程序添加图形超链接功能
    VC常见数据类型转换详解
    查询Access逻辑字段遇到的问题 武胜
    几个不错的开源的.net界面控件 转自http://zchuang2004.spaces.live.com/blog/cns!8C4AEEE059DED8B1!157.entry 武胜
    C#正则表达式整理备忘 转载(http://www.cnblogs.com/KissKnife/archive/2008/03/23/1118423.html) 武胜
  • 原文地址:https://www.cnblogs.com/hackboy/p/3691154.html
Copyright © 2020-2023  润新知