windows,linux,ssh免密登录

文章目录

      • linux与linux相互免密登录
          • 分别在两条主机上生成密钥对
          • .ssh文件夹有哪些内容
          • 免密登录的实现
          • 相互免密登录
          • known_hosts作用
          • 主机之间用户不一致解决
      • windows和linux相互免密登录
        • 自动分发脚本

linux与linux相互免密登录

分别在两条主机上生成密钥对
  • 使用命令ssh-keygen -t rsa 生成密钥对,期间可以设置密钥对的存放位置和密钥对的密码,直接三个回车跳过即可(一定不能设置密码)
  • windows,linux,ssh免密登录_第1张图片
  • 生成完之后会在用户目录下生成生成.ssh文件夹,里面包含公钥,私钥和一些配置文件(如果你已经有了公钥和私钥,可以不用再次生成)
.ssh文件夹有哪些内容
  • id_rsa 私钥
  • id_rsa.pub 公钥
  • authorized_keys 客户端的公钥列表
  • known_hosts 信任列表
  • config
免密登录的实现
  1. 假设A需要免密登录B
  2. 将A的公钥拷贝到B的authorized_keys中即可(一行一个)
相互免密登录
  1. 将公钥拷贝到对方的authorized_keys中和本机的authorized_keys中即可
  2. 为什么要拷贝到本机,ssh是可以连自己的,如果不拷到本机,当连本机的时候就需要输入密码
  3. 三台或多台,把所有的公钥收集到一个authorized_keys,然后拷贝到所有主机即可(主机过多可以使用自动分发脚本)
known_hosts作用
  • 此文件一般不做修改,每当 当前主机第一次其他主机(陌生主机)时,就会提示要求输入yes,就会在此文件写一条记录,之后再次连接就不再陌生
主机之间用户不一致解决
  • ssh默认使用当前用户去连接远程主机,当然,可以使用ssh user@host的方式指定用户
  • 可在config文件中配置
    • windows,linux,ssh免密登录_第2张图片
    • 上图配置连接主机lucky和lucky2时使用lucky用户
    • config还有一些的其他的可用配置项,如:指定密钥对实现分组密钥

windows和linux相互免密登录

  • 首先windows得安装openSSH client和openSSH server分别用来连接和被连接

  • windows,linux,ssh免密登录_第3张图片

  • 接着在[服务]中把以下两个服务启动,并且设置启动方式为自动

  • 在这里插入图片描述

  • 其余步骤和linux一致,需要注意的是,windows默认authorized_keys不放在用户目录的.ssh文件夹下,而是放在ProgramData的ssh文件夹下,名为administrators_authorized_keys文件,因为其在ProgramData/ssh/sshd_config中配置了

  • 在这里插入图片描述

  • 所以需要将公钥信息写到此文件中,也可以将这两行注释掉(注释掉之后就和linux一致了),或者改成其他地方

自动分发脚本
  • 主机过多时可以使用此脚本进行文件同步,循环处根据需要更改

  • #!/bin/bash
    #1获取输入参数个数,如果没有参数,直接退出
    pcount=$#
    if((pcount==0)); then
    echo no args;
    exit;
    fi
    
    #2获取文件名称
    p1=$1
    fname=`basename $p1`
    echo fname=$fname
    
    #3获取上级目录到绝对路径
    pdir=`cd -P $(dirname $p1); pwd`
    echo pdir=$pdir
    
    #4获取当前名称
    user=`whoami`
    
    #5循环 此处分发到 c1,c2,c3主机
    for((host=1; host<4 ; host++)); do
            echo ---------------- c$host ----------------
            rsync -rvl $pdir/$fname $user@c$host:$pdir
    done
    

你可能感兴趣的:(linux,ssh)