zoukankan      html  css  js  c++  java
  • Linux之SSH密钥认证

    1、SSH协议的认识

    SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UXLinuxAIXSolarisDigital UNIXIrix,以及其他平台,都可运行SSH。

    2、通过SSH管理远程服务器

    通过SSH协议,用户可以通过终端机访问和使用远程linux服务器,ssh的端口为22。但每次进行连接都要输入密码。如果管理几台到十几台集群,那可以应付的的过来。如果集群增加了几百,上千台。那么使用SSH管理起来就不方便了。所以SSH有没有更简便的方法呢?有的,在linux集群中,由一台管理机通过SSH管理其它的远程linux服务器,这种方法被称为SSH密钥认证管理服务器。原理如下图:

     

    3、服务器的布署和划分

    管理机:172.16.1.61 m01

    NFS服务器: 172.16.1.31 nfs01

    WEB服务器: 172.16.1.8 web01

    4、首先检查管理机和被管理机上的SSH是否已经安装和启用

    管理机m01:

    NFS服务器nfs01:

    WEB服务器web01:

     

     

    4、首先在m01服务器上,创建密钥对:公钥和私钥

     

    [root@m01 ~]# ssh-keygen -t dsa

    如下图所示:提示输入是否确认,所有的提示按Enter键.

    查看是否密钥创建成功,密钥生成后,保存在/root/.ssh/下,这是一个隐藏目录。

    其中:id_dsa是私钥,id_dsa.pub是公钥

    由上图所见我们已经创建密钥成功

    5、把公钥拷贝到所有被管理机中

    将公钥拷贝到nfs01服务器中,使用命令ssh-copy-id 。因为我更改过nfs01的ssh端口,由端口22变为端口52113.所以要添加"-p 52113"。拷贝到web01也是同理

    [root@m01 ~]# ssh-copy-id -i ./.ssh/id_dsa.pub "-p 52113 oldboy@172.16.1.31"

    如下图提示,第一次拷贝要输入确认yes和oldboy帐号的密码。

    查看nfs01上面是否拷贝成功,拷贝的文件在oldboy家目录下的隐藏目录.ssh下

    6、测试

    a.在m01上远程执行nfs01上的命令

    [root@m01 ~]# ssh -p 52113 oldboy@172.16.1.31 "/sbin/ifconfig eth0"

    b.从m01上拷贝文件到nfs01上

    查看nfs01上是否拷贝过去

    7、总结

    a.SSH创建密钥后,公钥发送给各个被管理的服务器中。

    b.除了第一次发送公钥后,需要密码,其他远程操作不再需要密码。

    另外:每次连接一个新的服务器都要手动确认和输入密码,也是不一般的麻烦。那有没有一种方法不需要手动确认和输入密码?有的,那就是expect程序。

    关于expect请看我的下一篇博文.

  • 相关阅读:
    Application.Current的使用
    .NET中资源文件的使用
    PMP模拟试题与解析(七)
    PMP模拟试题与解析(四)
    RMAN命令简介
    数据库备份和恢复概述
    ORA-14402: updating partition key column would cause a partition change
    RMAN概述
    PLS-00642: local collection types not allowed in SQL statements
    SFTP(Secure File Transfer Protocol)安全的文件传输协议的使用
  • 原文地址:https://www.cnblogs.com/eeexu123/p/8267531.html
Copyright © 2011-2022 走看看