zoukankan      html  css  js  c++  java
  • ssh服务使用介绍二

    老司机开车了

    快上车

    Open-mouthed smile 

    Punch

    Party smile

    School bus


    上文提到当我们使用ssh远程链接主机的时候,会出现询问的提示,如果我们链接的机器多了,一遍一遍的输入是不是很麻烦?怎么解决如下

    vim /etc/ssh/ssh_config

    如图

    clipboard

    小案列

    1、远程链接图形化命令

    有两台主机,192.168.43.6与192.168.43.7我当前用的是6,去链接远方主机7,而7这台主机是运行在命令行界面的系统。当我们执行

    ssh 192.168.43.7

    #
    #
    #
    #
    

    链接上7后执行随便一个可打开的图形执行命令,这里我们用system-config-user会出现如图

    image

    这样是不行的,我们应该这样做

    ssh -X 192.168.43.7
    #
    #
    #
    #

    再执行system-config-user命令就OK了

    备注:有人会想远方主机都没开图形化,怎么能打开图形界面?

    因为我们调用的是当前主机的显卡,不是远方的。

    2、跳转链接主机,比如我们有三台机器分别是

    192.168.43.6

    192.168.43.7

    192.168.43.17

    当前用的是6这台要去链接7,而7拒绝了6的链接。

    说明:而192.168.43.17可以链接到192.168.43.7

    这时候我们只需要一条命令就OK,如下

    ssh -t 192.168.43.17 ssh 192.168.43.7
    #
    #这里如果中间间隔了2台 就这么写
    #ssh -t x.x.x.x ssh -t x.x.x.x ssh x.x.x.x
    #

    基于密钥验证登陆

    流程

    1、首先在客户端生成一对密钥(ssh-keygen)

    2、将客户端的公钥传送给服务器端(ssh-copy-id)

    3、客户端再次发送链接求情,这里面报告用户名,密码等

    4、服务端收到信息后,会去查看有没有信息,信息存放位置(ssh/authorized_keys)如果有,会生成一个随机数。

    5、然后用用户拷贝过来的公钥对这个随机数加密并发送给客户端。

    6、客户端接收到服务端发来的信息,并用私钥解密得到随机数,然后发送给服务端。

    7、服务端收到客户端发来的字符数,并于和之前的随机数对比,如果一致就建立链接,无需输入用户名密码。不一致拒绝链接。

    配上原理图如下

    image

    小案例

    比如两台主机分别是192.168.43.6和192.168.43.7

    我们当前用的是192.168.43.6用密钥认证链接192.168.43.7

    1、首先在客户端上生成一对钥匙,其中要把公钥传给对方,生成钥匙指令如下

    ssh-keygen 
    #
    #
    #
    

    clipboard

    查看下是不是生成了钥匙如图

    clipboard

    2、把刚才生成的公钥传到对方主机192.168.43.7

    ssh-copy-id -i .ssh/id_rsa.pub 192.168.43.7
    也可以这么写
    ssh-copy-id 192.168.43.7
    #因为用的是默认加密方式rsa

    备注:传过去的文件存放在 家目录的.ssh目录下的authorized_keys里

    3、下面就可在自己的192.168.43.6机器键入ssh 192.168.43.7 就可,无需输入密码了

    备注:在公司里前运维走了,你当上任,改进把root密码改了,对方还是能连,因为密钥认证还在,

    要想不让对方链接,删除这个文件authorized_keys

    备注:这样就可与批量链接主机,把自己主机公钥传到你要控制的主机就OK

    这里虽然我们不需要输入账号密码来登入,但需要你来输入密钥加密的口令登陆。

    想一想

    比如有100台机器,输入100次私钥的口令也是比价麻烦的,这时怎么办?

    有办法,设置代理就可解决。

    托管代理链接

    把密钥的口令托管给代理执行如下命令

    ssh-agent bash
    ssh-add
    #
    #
    #

    如图

    clipboar

    备注:当前用户退出再次登陆链接,还是是输入口令。

    小案例

    1、三台主机之间互相基于密钥链接,192.168.43.6、192.168.43.7、192.168.43.17三台主机,互相链接。

    思路:以综上来看,是不是6公钥发给7、17而7也要发给6、17,17也要发给6、7,对吧,这样就可互相链接了把,钥匙主机10几台是不是很麻烦,

    我们用另一种方式,所有主机用同一对钥匙来实现,基本思路一样。

    1)首先生成一对钥匙

    ssh-keygen
    #输入位置
    #输入口令
    #
    

    image

    2)在当前主机生成authorized_keys文件

    image

    3)将公钥私钥和authorized_keys文件传给目标主机

    image

    4)到此结束,测试实验结果

    image

    无需输入密码

    2、在堡垒机器上实现基于K的验证(单项链接)expect 实现批量的ssh-key

    思路:还是生成密钥对,把公钥传给目标主机,因为100台主机太多,而且还是重复性的动作,所有我们利用脚本,而我们传送公钥到目标主机的时候是需要输入账号密码的,这里我们就要利用之前的一个命令expect来实现。

    1)首先准备目标主机的IP地址,账号,密码TXT本

    image

    2)编写脚本

    #!/bin/bash
    if [ ! -f /root/.ssh/id_rsa ];then
    #生成一对钥匙,指定加密方式与存放位置,-t是指定加密的方式,-p是指定口令,-f指定存放位置
            ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa &>/dev/null && echo "ssh key 生成成功"
    else
            echo "已存在无需再次生成"
    fi
    #既然钥匙生成成功那么是不是改把公钥传到目标主机了
    #读取之前准备的目标主机地址列表,既然是逐行处理是不是想到了while read line
    while read line;do
            ip=`echo $line|awk '{print $1}'`
            user=`echo $line|awk '{print $2}'`
            password=`echo $line|awk '{print $3}'`
    
            expect <<-EOF
            set timeout 50
            spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $user@$ip
            expect {
            "yes/no" { send "yes
    ";exp_continue }
            "password" { send "$password
    " }
            }
            expect eof
            EOF
            echo "$ip is 复制成功"
    done < hostist.txt
    #####hostist.txt和我脚本在同一个目录
    

    3、完事执行脚本OK,再去ssh链接,无需密码

     

    欢迎补充

    独乐乐不如众乐乐

    Be right back


  • 相关阅读:
    2016/2/22 1、DOM的基本概念 2、Window对象操作 3、Windows.history对象 4、Window.location对象 5、Window.status对象
    2016/2/21 JavaScript简介
    2016/2/19 position: fixed absolute relative z-index float 半透明效果
    2016/2/19 css样式表 Cascading Style Sheet 叠层样式表 美化HTML网页
    2016/2/18 html 图片热点,网页划区,拼接,表单
    2016/2/18 html 标签 表格
    重载
    面向对象 Java练习
    Car 加油
    大乐透 Java随机码
  • 原文地址:https://www.cnblogs.com/xsuid/p/9289244.html
Copyright © 2011-2022 走看看