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请看我的下一篇博文.

  • 相关阅读:
    USACO Milk2 区间合并
    Codeforces 490B Queue【模拟】
    HDU 3974 Assign the task 简单搜索
    HDU 5119 Happy Matt Friends(2014北京区域赛现场赛H题 裸背包DP)
    Cin、Cout 加快效率方法
    POJ 1159 回文LCS滚动数组优化
    POJ 2479 不相交最大子段和
    POJ 1458 最长公共子序列 LCS
    在阿里最深刻的,还是职场之道给我的震撼
    精细化
  • 原文地址:https://www.cnblogs.com/eeexu123/p/8267531.html
Copyright © 2011-2022 走看看