当前位置:   article > 正文

Linux实现ssh基于key验证的免密登录_/usr/bin/ssh-copy-id: info: source of key(s) to be

/usr/bin/ssh-copy-id: info: source of key(s) to be installed: "/root/.ssh/id

ssh基于key验证机制

连接自己必须先在本地生成自己的公钥和私钥
要连接谁就要把自己的公钥放到谁的服务器上

实现免密的逻辑

  • 服务器端拿客户端公钥加密随机字符传给客户端
  • 客户端解密后再拿服务器公钥加密传给服务器端

实现免密的意义

  • 公钥放在目录里
  • 一行一个,多个公钥
  • 比用户名和密码更安全
  • 每次服务器互相连接的时候不再需要输入密码了

实现ssh免密登录

  1. 客户端生成公钥私钥对
ssh-keygen
  • 1
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:ZoNMD/ueg9Tp+gYoQNY7EClt6z1ZX7BuZxm4vXcAXJE root@c7-1-54
The key's randomart image is:
+---[RSA 2048]----+
| o+         .o   |
|.=o.    .   E    |
|+.... o  = .     |
|. .o o.=o =      |
| o ..+++S= +     |
|  o = o+B.= .    |
|   . o =.o . .   |
|      ..+.. . .  |
|      .++. . .   |
+----[SHA256]-----+
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

按提示默认生成公钥私钥对在/root/.ssh/目录下

ll -a .ssh/
总用量 24
drwx------.  2 root root   57 8月  11 2020 .
dr-xr-x---. 15 root root 8192 4月  28 22:15 ..
-rw-------.  1 root root 2602 8月  11 2020 id_rsa ## 私钥
-rw-r--r--.  1 root root  570 8月  11 2020 id_rsa.pub ## 公钥
-rw-r--r--.  1 root root  527 3月  29 02:14 known_hosts ## 可识别的主机
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 把公钥拷贝给服务器

ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上

ssh-copy-id -i /root/.ssh/id_rsa.pub 服务器对端IP
  • 1
私钥一定是自己留好,公钥可以发布出去!
  • 1
ssh-copy-id -i /root/.ssh/id_rsa.pub 10.0.0.56
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '10.0.0.56 (10.0.0.56)' can't be established.
RSA key fingerprint is SHA256:xiviIpop6NgLGgUH/KasDBNHiO9cKXSZ80wOYrv1PZo.
RSA key fingerprint is MD5:88:b9:65:83:8f:d2:8a:6b:ca:21:07:81:a0:03:04:49.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@10.0.0.56's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '10.0.0.56'"
and check to make sure that only the key(s) you wanted were added.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
ssh 10.0.0.56
Last login: Sun Apr 25 23:54:46 2021 from 10.0.0.1
  • 1
  • 2

实现sshpass通讯

sshpass用于非交互SSH的密码验证,一般用在sh脚本中,无须再次输入密码(本机known_hosts文件中有的主机才能生效)。

  • 它首选需要加到 .ssh/know_hosts中
  • 实现不需要回答yes/no登录远程服务器
sshpass -p 密码 ssh -o StrictHostKeyChecking=no root@10.0.0.1 hostname -I 
  • 1

sshpass -f可以读取文件内的密码

sshpass -f <密码文件> ssh -o StrictHostKeyChecking=no root@10.0.0.1 hostname -I 
  • 1
  • sshpass

-p password #后跟密码它允许你用 -p 参数指定明文密码,然后直接登录远程服务器
-f filename #后跟保存密码的文件名,密码是文件内容的第一行
-e #将环境变量SSHPASS作为密码

批量实现免密登录

  • 首先生成key ssh-keygen
  • 先拷贝给自己,在复制整个目录到对方主机
  • 所有人共用一份公钥私钥对
rsync -av /root/.ssh IP:/root
  • 1
  • 给私钥加口令
ssh-keygen -p 
  • 1
  • 只需要输入私钥密码
  • 把密码托管给ssh-agent进行代理
ssh-agent bash
ssh-add
  • 1
  • 2
  • 输入私钥密码,临时性的密码

  • 这时候私钥文件被偷走了,也没关系

  • 禁用原来的用户名密码策略,仅支持私钥验证

  • 基于key验证与密码无关,修改密码后不影响key验证

编写脚本实现批量免密

  • 用expect实现基于key的免密登陆验证

sshpass -e #将环境变量SSHPASS作为密码

IPLIST="
10.0.0.8
10.0.0.18
10.0.0.7
10.0.0.6
10.0.0.200"

rpm -q sshpass &> /dev/null || yum -y install sshpass  
[ -f /root/.ssh/id_rsa ] || ssh-keygen -f /root/.ssh/id_rsa  -P ''
export SSHPASS=centos ##设置系统变量,也就是密码
for IP in $IPLIST;do
    sshpass -e ssh-copy-id -o StrictHostKeyChecking=no $IP 
done 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

想访问那台机器,就把自己的公钥拷贝到对方的/root/.ssh/中就行了
部署的100台服务器都想互相访问
只需要每台服务器的/root/.ssh/目录中有一套同样的公私钥对就可以了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/187742
推荐阅读
相关标签
  

闽ICP备14008679号