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

- 上图配置连接主机lucky和lucky2时使用lucky用户
- config还有一些的其他的可用配置项,如:指定密钥对实现分组密钥
windows和linux相互免密登录
-
首先windows得安装openSSH client和openSSH server分别用来连接和被连接
-

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

-
其余步骤和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++)); doecho ---------------- c$host ----------------rsync -rvl $pdir/$fname $user@c$host:$pdir
done
相关内容