SSH
免密登录—原理ssh-keygen
生成一对密钥:公钥+私钥authorized_key
文件中,完成公钥认证操作authorized_key
文件,确认该公钥是否存在R
,并用公钥来进行加密,生成公钥加密字符串pubKey(R)
R
ID(sessionKey)
,用MD5
对R和SessionKey
进行加密,生成摘要(即MD5
加密字符串)MD5
加密字符串传给服务端MD5(R,SessionKey)
加密字符串shell
命令了在~/.ssh/
目录下,我们会看到这些文件:
id_rsa // 私钥文件
id_rsa.pub // 公钥文件
authorized_keys // 存放客户端公钥的文件
known_hosts // 确认过公钥指纹的可信服务器列表的文件
config // 指定不同域名使用哪个密钥的配置文件
因为一台机器即能是客户端,又能是服务端,因此同时存在authorized_keys
(在该机器为服务端时使用)和Known_hosts
(在该机器为客户端时使用)。
authorized_keys 别人来找我
Known_hosts 我去找别人的 authorized_keys
SSH
免密登录—实现A、当前克隆节点的信息:
两个用户:
root jiaxuan
jiaxuan jiaxuan
B、查看当前版本
lsb_release -c
现在克隆节点虚拟机里边安装了
克隆虚拟机节点1、2、3
2、SSH免密登录
现在 节点1是登录节点 节点1添加一张局域网的网卡Network2
在节点1的虚拟机中网卡2的配置
Ip:192.168.1.1
掩码:255.255.255.0
克隆节点2和节点3,设置网卡为Network2
节点2
Ip:192.168.1.10 掩码:255.255.255.0 网关:192.168.1.1
节点3
Ip:192.168.1.11 掩码:255.255.255.0 网关:192.168.1.1
vi /etc/hostname
vi /etc/hosts
重启虚拟机。
(1)ssh-keygen –t rsa是指定加密的算法是rsa
(2)(/root/.ssh/id_rsa)是保存秘钥的路径
(3)/root/.ssh/id_rsa.pub是生成的公钥
解决方法在3个节点修改ssh配置文件:
1、vi /etc/ssh/sshd_config
2、将PermitRootLogin no的注释去掉,改为yes
补:AddressFamily any #允许任何地方登录
PermitRootLogin yes # 允许root账号登录
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
3、重启:service sshd restart
ssh-copy-id [email protected] 或
ssh-copy-id ubuntu3
root用户可以不加,默认是当前用户。
Ip地址可以换成机器名。
直接可以 ssh ubuntu2免密登录到节点2
1、使用脚本实现SSH免密登录
Ubuntu下面安装expect: sudo apt-get install tcl tk expect
本机通过ssh-keygen -t rsa指令生成秘钥。
执行脚本
#!/bin/sh
SERVERS="ubuntu1 ubuntu2 ubuntu3"
PASSWORD=jiaxuan
auto_ssh_copy_id() {
expect -c "set timeout -1;
spawn ssh-copy-id $1;
expect {
*(yes/no)* {send -- yes\r;exp_continue;}
*assword* {send -- $2\r;exp_continue;}
eof {exit 0;}
}";
}
ssh_copy_id_to_all() {
for SERVER in $SERVERS
do
auto_ssh_copy_id $SERVER $PASSWORD
done
}
ssh_copy_id_to_all
建立硬盘2
服务端配置
sudo apt install nfs-kernel-server
用到的命令贴到下边:
root@ubuntu1:~# lsblk
root@ubuntu1:~# fdisk /dev/sdb
Command (m for help): g
Command (m for help): n
Command (m for help): w
root@ubuntu1:~# lsblk
root@ubuntu1:~# mkfs.ext4 /dev/sdb1
root@ubuntu1:~# fdisk -l
root@ubuntu1:~# cd /
root@ubuntu1:/# mkdir share
root@ubuntu1:/# mount /dev/sdb1 /share
root@ubuntu1:/# lsblk
修改配置文件:
root@ubuntu1:/# vi /etc/fstab
root@ubuntu1:/# umount /share
root@ubuntu1:/# mount -a
root@ubuntu1:/# lsblk
服务端:/etc/fstab配置文件
客户端配置
sudo apt install nfs-common
mkdir /share
mount -t nfs ubuntu1:/share /share
umount /share
echo 192.168.1.1:/share /share nfs defaults 0 0 >> /etc/fstab
mount -a
客户端:/etc/fstab配置文件
补充点:
:set nu vim编辑器显示行号
:3,5d 删除指定行数
文本处理三剑客grep、awk、sed
需求分析:
1、ssh公钥拷贝,提供无密码管理。
2、批量同步hosts文件到多台主机。
3、批量修改主机名。
实现在下一篇博客!
17:31下班啦!