建立免密通道
假设你有100台机器
怎么方便管理?
免密通道
免除了密码,密钥认证
就是 服务器有一个 know_host 文件,是客户机给的
然后别人又单独给客户机 文件到 ~/.ssh/authorized_keys
实验
首先准备两台虚拟机,ip得不一样
如果一样的ip,那就改一下
怎么改?
静态配置ip
1.进入网卡配置目录
cd /etc/sysconfig/network-scripts
vim ifcfg-ens33
BOOTPROTO="none"
DEFROUTE="yes"
NAME="ens33"
UUID="a4c9218b-351f-4a38-86c0-fde5a5eae387"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.153.132
PREFIX=24
GATEWAY=192.168.153.2
DNS1=114.114.114.114
2.刷新网络服务
service network restart
建立免密通道
ssh服务:
- 1.密码认证 linux系统的用户名和密码
- 2.密钥认证 自己可以去创建密钥对(公钥和私钥)
免密通道的好处: 2台机器之间传输文件或者执行命令,不需要输入密码了
建立免密通道:
2台机器默认是允许root用户登录,打开端口是22号
-
192.168.153.136 是客户机
-
192.168.153.132 是服务器
客户机会生成密钥对,公钥和私钥 把公钥传到服务器,对方家目录下
第一步生成密钥
client: 192.168.153.136
server: 192.168.153.132
单向信任关系: 客户机连服务器不需要密码的,而服务器连客户端是需要密码的
双向信任关系
1.在客户机上使用root用户登陆
[root@client ~]# ssh-keygen
注意,不要设置密码
生成公钥和私钥对, .pub是公钥
[root@client ~] ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
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:OUndj6nIvL0aBjnw+zim0/75pVbkECrkQ8VarXKomWE root@gh-mysql
The key's randomart image is:
+---[RSA 2048]----+
| o.. |
| o o.o. |
| .+ +.o... |
| EoBo+o. .+ |
| . ===S +o . |
| + * o .o |
| .. * ... |
| . ++ =.o |
| .=oo*+=. |
+----[SHA256]-----+
[root@gh-mysql ~]#
第二步上传公钥到服务器
ssh-copy-id 命令会自动将公钥上传到服务器的/root/.ssh/authorized_keys
[root@client .ssh] ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.153.136
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.153.136 (192.168.153.136)' can't be established.
ECDSA key fingerprint is SHA256:BpqnG1d3hTAphyRWusCZhCBVGGzjgeVhQjVeytO6w0I.
ECDSA key fingerprint is MD5:bf:0d:37:bb:0c:01:ac:d6:33:03:c2:9a:a7:71:29:5c.
Are you sure you want to continue connecting (yes/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@192.168.153.136's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.153.136'"
and check to make sure that only the key(s) you wanted were added.
[root@client .ssh]#
接着在服务器上就会产生对应的公钥
[root@mysql-2 ~] cd /root/.ssh/
[root@mysql-2 .ssh]# ll
总用量 4
-rw------- 1 root root 395 11月 28 17:07 authorized_keys
[root@mysql-2 .ssh]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5ikCHTYWpnlY3nXJq1T7oKUhAhsdfvzZ8WUo1noRE8qqg5h8Yw8bcokqo6sPnsIR3YfInQPNT2csV6aPdkWWJnRyYmzGWcjGIlz/fqMXYNyUgVIgIelc/ceqd0r1N11LLPT+yIFfeqNvzm5QXafjKtS1zFQE2uxs7s3n4bboUtWtxCVFszHOmEixdicMTBCsRM6LthqK8Sh3lbKNovn6xNMbvmv5n/+30PECvdxMIvPWSufNYMGWH+Ghgshh7MrN/OFJh5FqvVepRlmO7rVpeeU6jFl6uKIm023lC4DwsGnAwjvIkgO/aKavECF1ZMBcF5ANpNXttPOMsMXCSuxu7 root@gh-mysql
[root@mysql-2 .ssh]#
测试登陆
测试密钥认证,免密通道是否创建成功
直接进入
[root@client .ssh] ssh 'root@192.168.153.136'
Last login: Tue Nov 28 16:33:17 2023 from 192.168.153.1
[root@mysql-2 ~]#
利用scp去传递文件(计划任务)
每天的晚上2点30分钟备份所有的数据库,然后scp到备份服务器上
[root@mysql-2 backup]# vim backup_db.sh
[root@mysql-2 backup]# cat backup_db.sh
#!/bin/bash
#导出数据
mysqldump -uroot -p'Sanchuang123#' --databases wangshuai >/backup/$(date +%F)_wangshuai.sql
#scp到远程的备份服务器
scp /backup/$(date +%F)*_wangshuai.sql root@192.168.153.132:/backup
[root@mysql-2 backup]#
[root@mysql-2 backup] crontab -e
30 2 * * * bash /backup/backup_db.sh
[root@mysql-2 backup] crontab -l
30 2 * * * bash /backup/backup_db.sh
[root@mysql-2 backup]#
crontab -e 是创建计划任务
30 2 * * * 30是三十分钟 2是凌晨2点 *是那一天 *是哪个月 *是哪周
crontab -l 是查看计划任务
rsync的使用(下一篇细讲)
rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。已支持跨平台,可以在Windows与Linux间进行数据同步。
管100台怎么办搞
建立单向的免密通道
写好脚本发过去就可以了
要想ssh控制的好,先建立免密通道
[root@server .ssh] ssh 'root@192.168.209.145' mkdir /gaohui
[root@server .ssh] scp /etc/passwd root@192.168.209.145:/tmp
passwd 100% 846 859.6KB/s 00:00
[root@server .ssh]#
authorized_keys
存放别人的公钥的
know_host
是我们连别人的时候用的
日志文件
在 /var/log/secure 里面
思考
-
如果ssh服务使用别的端口,例如: 2255端口,是否建立免密通道?
-
是否可以不使用root用户?
可以 根本不影响
建立免密通道有什么好处
方便使用脚本去执行命令或者传输文件,不需要输入密码,非常快捷和方便