写一个shell脚本,当我们执行时,提示要输入对方的ip和root密码,然后可以自动把本机的公钥增加到对方机器上,从而实现密钥认证。
核心要点
ssh-copy-id 用户名@IP
把本地公钥发送到目标机器的用户家目录的authorized_keysssh-keygen
生成公钥id_ras.pub和秘钥id_rsa -N/-P
指定新密码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/kun1/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/kun1/.ssh/id_rsa.
Your public key has been saved in /home/kun1/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:gU0ILMs12i7UlRuDySJfImyZDVlwTlfZ+ua5HlPbGSI kun1@kun01
The key's randomart image is:
+---[RSA 2048]----+
|.oO*.=.++ |
|o*B.X *= . |
|.= % o.++ |
| * o .. . |
| . . SE o . |
| . . oo + o |
| . oo.. o |
| oo |
| .o. |
+----[SHA256]-----+
# 流程 1.公钥私钥存放路径 2.确认密码 3.再确认密码
#自动生成公钥秘钥 \n用来指定默认存放路径 -N/-P '' 指定新密码为空
$ echo -e "\n" |ssh-keygen -N ''
# known_hosts 第一次连接服务器提示是否连接服务器 并在本地机器的known_hosts文件存放服务器验证公钥
# authorized_keys 用于存放公钥 本机把公钥发送到服务器的authorized_keys上 当登录服务器时 服务器会发送字符串给用户,用户通过本机的密钥对字符串执行加密再发送给服务器,服务器使用公钥对其执行解密 解密成功即可登录
代码内容
1 |
|
还可以使用另一种方式
核心要点
sshpass
命令行指定密码 不适用交互形式 -p
指定密码 -e
使用环境变量中的SSHPASS作为密码-o StrictHostKeyChecking=no
忽略提示公钥确认1
2sshpass -p 密码 ssh -o StrictHostKeyChecking=no -p端口 ip地址
sshpass -p 密码 ssh-copy-id -i 公钥地址 -o StrictHostKeyChecking=no -p端口 ip地址
代码内容
1 |
|