本文主要是介绍Day45-SSH远程连接服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Day45-SSH远程连接服务
- 1.SSH服务介绍
- 1.1 基本介绍
- 1.2 网络服务对应端口介绍
- 1.3 远程连接服务
- 1.4 SSH远程连接故障排错
- 1.5 SSH知识要点总结
- 1.6 ssh服务端和客户端软件
- 1.7 ssh客户端命令介绍与实践
- 1.7.1 ssh命令:远程连接linux
- 1.7.2 ssh命令:远程执行命令
- 1.7.3 scp命令:远程全量拷贝(secure copy),【加密】的拷贝
- 1.7.4 sftp(了解即可)
- 1.8 ssh服务配置优化
- 1.9 SSH服务通信原理
- 1.10 SSH两种认证方式
- 1.10.1 密码认证 pam
- 1.10.2 秘钥认证
- 1.11 Linux主机之间通过秘钥认证来连接:
- 1.12 环境准备
- 1.13 开始实战
- 1.14 ssh免密码连接生产应用
- 1.15 批量分发管理方案
【相当于工组中5-20台】
m01管理机:eth0:10.0.0.61 eth1:172.16.1.61(不要配置网关、不要DNS)
1、批量管理(ssh以及ansible),分发软件、安装服务、运行命令和脚本。
2、跳板机(jumpserver)。就是登陆跳板机才能管理其他服务器。
3、日志审计(jumpserver)。
4、VPN服务,只有连接上VPN才能使用管理机。PPTP
5、无人值守安装(批量装1000台),kickstart,cobbler
6、zabbix监控服务,代码发布(git+jenkins)
1.SSH服务介绍
1.1 基本介绍
古老基础远程连接服务,SSH是远程连接Linux,管理Linux的服务。
Secure Shell Protocol 简写SSH,安全的Shell协议,在传输过程中,数据是加密的。
适合telnet是不同的,因为telnet不加密的。
使用的默认端口为22(一台机器的不同功能就用端口区分)
1.2 网络服务对应端口介绍
873 rsync22 ssh25 smtp #邮件发送服务110 pop3 #邮件接收服务80 http #网页服务443 https #加密的网页服务23 telnet111 rpcbind21 ftp3389 windows远程桌面161 SNMP3306 MySQL
ssh协议属于tcp/ip协议族
1.3 远程连接服务
telnet 数据是明文的
1)连交换机和路由器配置。
2)telnet ip port 监测端口以及服务是否好的。
ssh协议:在传输过程中数据是加密的。安全的Shell协议。
c/s架构:客户端和服务端,称之为c/s架构,client/server,胖客户端。
b/s架构:浏览器/服务器,称之为b/s架构,browser/server 大趋势,瘦客户端。
ssh服务 客户端/服务端软件
超市收银:c/s,收银,客户端可以很强大,页面展示都可以在客户端,胖客户端。
网页服务:b/s browser/server 瘦客户端,内容展示都是服务端控制的。
1.4 SSH远程连接故障排错
xshell 客户机
sshd 服务端(10.0.0.61)
xshell 客户机
- ping 10.0.0.61(网络通了)
不通。检查服务器IP配置,网卡是否启动,还不通。。禁PING,vnet8网卡是否启动,虚拟网络编辑器还原。 - telnet 10.0.0.61 22(nmap)确定服务是否开通。
不通。1.防火墙阻挡。2.服务端端口没开(netstat -lntup|grep ssh或者lsof -i :22)。3.telnet命令是不是对的。
=xshell ssh连不上服务器 如何排查?==
面试时 画图:
1.ping IP:
不通:检查物理网络网线,电脑IP设置。
通:表示物理链路通的。
2.telnet ip port
不通:查服务器端防火墙和SSH服务(ps -ef|grep sshd,netstat -lntup|grep sshd)
通:
3.检查本地xshell 连接的IP 端口 协议 密码 用户
1.5 SSH知识要点总结
- SSH是安全的加密协议,用于远程连接Linux系统。
- SSH默认端口是22,安全协议版本为SSH2,除了2之外还有SSH1(有漏洞)。
- SSH服务端主要包含两个服务功能SSH远程连接和SFTP服务。
- Linux SSH客户端包含ssh远程连接命令、远程拷贝scp命令、sftp连接命令等。
1.6 ssh服务端和客户端软件
SSH服务由服务端软件OpenSSH和客户端(常见的有SSH(Linux)/SecureCRT/Putty/Xshell)组成,SSH服务默认使用22端口提供服务,它有两个不兼容的SSH协议版本,分别是1.x和2.x。
[root@m01 ~]# rpm -qa openssh openssl
openssh-7.4p1-16.el7.x86_64 #<==ssh服务。
openssl-1.0.2k-16.el7.x86_64 #<==加密用的ssl。yum install openssl openssh -y[root@m01 ~]# rpm -qa openssh openssl
openssh-7.4p1-21.el7.x86_64
openssl-1.0.2k-21.el7_9.x86_64
[root@m01 ~]# rpm -qa|grep ssh
openssh-7.4p1-21.el7.x86_64
libssh2-1.8.0-4.el7.x86_64
openssh-server-7.4p1-21.el7.x86_64
openssh-clients-7.4p1-21.el7.x86_64
1)Linux ssh客户端里含有的命令
[root@m01 ~]# rpm -ql openssh-clients
/usr/bin/scp #全量远程拷贝文件(加密),类似rsync。
/usr/bin/sftp #sftp服务,加密传输文件。
/usr/bin/ssh #远程连接,linux到linux之间的链接。
/usr/bin/ssh-copy-id #拷贝密钥中的公钥文件的。
2)Linux ssh服务单端里含有重要内容
[root@m01 ~]# rpm -ql openssh-server
/etc/ssh/sshd_config ###ssh配置文件
/usr/lib/systemd/system/sshd.service ###ssh systemctl启动的文件
/usr/libexec/openssh/sftp-server ##sftp服务。
/usr/sbin/sshd ##sshd服务。
/usr/sbin/sshd-keygen ##生成秘钥的工具
3)openssl负责加密的相关命令和服务
[root@m01 ~]# rpm -ql openssl
/etc/pki/CA
/etc/pki/CA/certs
/etc/pki/CA/crl
/etc/pki/CA/newcerts
/etc/pki/CA/private
/etc/pki/tls/certs/Makefile
/etc/pki/tls/certs/make-dummy-cert
/etc/pki/tls/certs/renew-dummy-cert
/etc/pki/tls/misc/CA
/etc/pki/tls/misc/c_hash
/etc/pki/tls/misc/c_info
/etc/pki/tls/misc/c_issuer
/etc/pki/tls/misc/c_name
/usr/bin/openssl
配置文件:
[root@m01 ~]# ll /etc/ssh/sshd_config
-rw-------. 1 root root 3907 4月 11 2018 /etc/ssh/sshd_config
/etc/ 服务的配置目录。
重启以及设置开机自启动:
[root@m01 ~]# systemctl restart sshd
[root@m01 ~]# systemctl enable sshd
4)ssh客户端工具介绍
windows下:xshell #个人免费,用的多一些。\*****SecureCRT #收费,很好,之前有过木马问题。putty #10年前,没人开发了,界面太简单。
linux:ssh命令
1.7 ssh客户端命令介绍与实践
1.7.1 ssh命令:远程连接linux
-p 端口
ssh -p 22 root@10.0.0.31
命令 -p 端口 用户@IP
上述命令相当于ssh 10.0.0.31(默认22,默认root)
1.7.2 ssh命令:远程执行命令
[root@m01 ~]# ssh 10.0.0.7 ifconfig
root@10.0.0.7's password:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 10.0.0.7 netmask 255.255.255.0 broadcast 10.0.0.255inet6 fe80::c984:d443:9240:f09a prefixlen 64 scopeid 0x20<link>
1.7.3 scp命令:远程全量拷贝(secure copy),【加密】的拷贝
SCP命令参数:
-P 端口-r 递归-p 保持属性-l 限制速度
[root@m01 ~]# mkdir /data/
[root@m01 ~]# cp -a /etc /data/推:
scp -P 22 -rp /data root@172.16.1.7:/tmp/
类似rsync远程shell的推送模式:
rsync -avz /data root@172.16.1.7:/opt
rsync -avz /data -e "ssh -p 22" root@172.16.1.7:/opt拉:
scp -P 22 -rp root@172.16.1.7:/tmp/data /tmp/
类似rsync远程shell的拉取模式:
rsync -avz root@172.16.1.7:/opt/data /data
对比下scp和rsync
scp 每一次都全量拷贝,加密拷贝
rsync第一次全量,以后增量拷贝,远程shell也是加密拷贝。
实践:
[root@m01 ~]# scp -P22 -rp /etc root@172.16.1.7:/tmp/
The authenticity of host '172.16.1.7 (172.16.1.7)' can't be established.
ECDSA key fingerprint is SHA256:qZSBkrmOv7xO/63qOU1uLXkPyNVHdkqvrNAcAmXqNEk.
ECDSA key fingerprint is MD5:23:d0:cb:a9:f4:7c:0b:eb:2d:07:00:e1:a3:12:d8:33.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.7' (ECDSA) to the list of known hosts.
root@172.16.1.7's password: 简单拉的写法:
scp -rp 172.16.1.7:/tmp/etc /tmp
1.7.4 sftp(了解即可)
sftp命令:
- 加密的ftp服务。
- 默认缺点不能锁定固定某个目录(vsftp),如果需要固定目录可自己研究。
ftp:vsftp服务。RHCE课程里讲。
实践:在10.0.0.61上连接10.0.0.7
sftp -oPort=22 root@172.16.1.7
sftp> put "/etc/hosts" #上传远端家目录。
sftp> put /etc/hosts /tmp #上传远端指定目录/tmp。
sftp> get /etc/yum.conf #下载到本地家目录。
sftp> get oldboy.txt /etc #下载到本地指定目录/etc
sftp服务也支持windows ftp客户端:
winscp软件,flashftp,xshell也支持sftp
1.8 ssh服务配置优化
[root@m01 ~]# ll /etc/ssh/ssh*
-rw-r--r--. 1 root root 2276 4月 11 2018 /etc/ssh/ssh_config #ssh配置文件。
-rw-------. 1 root root 3907 4月 11 2018 /etc/ssh/sshd_config #sshd服务端配置文件。
服务配置优化:
####Start by oldboy#2018-04-26###
Port 52113 #使用大于10000的端口
PermitRootLogin no #禁止root远程登录,可以su - root,C7需要改yes为no
PermitEmptyPasswords no #禁止空密码登录,C7默认就是UseDNS no #不使用dns解析,yes改为no
GSSAPIAuthentication no #禁止连接慢的解决配置
ListenAddress 172.16.1.61:52113 #只允许内网IP连接SSH(172.16.1.0)
####End by oldboy#2018-04-26###
58期集群架构实际配置:
####Start by oldboy#2018-04-26###
PermitEmptyPasswords no
UseDNS no
GSSAPIAuthentication no
#ListenAddress 172.16.1.61:22 #将来配置VPN安全服务之后再加此行。
####End by oldboy#2018-04-26###
实践:
[root@web01 ~]# cp /etc/ssh/sshd_config{,.ori}
配置ListenAddress 172.16.1.61:22的测试:
[root@m01 ~]# telnet 10.0.0.7 22
Trying 10.0.0.7...
telnet: connect to address 10.0.0.7: Connection refused
[root@m01 ~]#
[root@m01 ~]#
[root@m01 ~]#
[root@m01 ~]# telnet 172.16.1.7 22
Trying 172.16.1.7...
Connected to 172.16.1.7.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4
安全:
1、跳板机内网连接,跳板机使用vpn连接,然后内网连接。
2、防火墙限制只有源IP为内网IP访问22端口
最终配置为:
####Start by oldboy#2018-04-26###
PermitEmptyPasswords no
UseDNS no
GSSAPIAuthentication no
#ListenAddress 172.16.1.7:22
####End by oldboy#2018-04-26###
自学:使用sed插入多行。一分钟搭建服务器
链接: https://blog.oldboyedu.com/commands-sed/
####Start by oldboy#2018-04-26###
Port 52113 #使用大于10000的端口
PermitRootLogin no #禁止root远程登录,可以su - root,C7需要改yes为no
PermitEmptyPasswords no #禁止空密码登录,C7默认就是UseDNS no #不使用dns解析,yes改为no
GSSAPIAuthentication no #禁止连接慢的解决配置
ListenAddress 172.16.1.61:52113 #只允许内网IP连接SSH(172.16.1.0)
####End by oldboy#2018-04-26###
一键插入所有配置
sed -i.bak '21i Port 52113\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no\nListenAddress 172.16.1.61:52113' /etc/ssh/sshd_config
只能使用 52113端口,通过内网ip 172.16.1.61进行链接。
[root@web01 ~]# ssh -p 52113 oldboy@172.16.1.61
The authenticity of host '[172.16.1.61]:52113 ([172.16.1.61]:52113)' can't be established.
ECDSA key fingerprint is SHA256:wq7oaEHzecrisYEVO4MneeR3FEPnl+QHI+pNVriPP+o.
ECDSA key fingerprint is MD5:c7:44:c1:68:9d:17:e7:60:78:30:06:cc:f1:74:96:49.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[172.16.1.61]:52113' (ECDSA) to the list of known hosts.
oldboy@172.16.1.61's password:
Last login: Tue Jul 6 10:05:57 2021 from 10.0.0.1
[oldboy@m01 ~]$ sudo su -
[sudo] oldboy 的密码:
上一次登录:二 7月 6 10:06:02 CST 2021pts/1 上
[root@m01 ~]#
网友SSH服务被入侵案例 变成你的。
案例见此地址: http://phenixikki.blog.51cto.com/7572938/1546669
企业安全项目实战案例:
给系统的重要文件或命令做指纹,随时可以比对文件增删改,报警
如何防止Linux SSH登录入侵方法总结
- 看好后门策略:用密钥登录,不用密码登陆。
- 看好后门策略:牤牛阵法:解决SSH安全问题。
a.防火墙封闭非对外服务,指定源IP 限制(局域网、信任的公网)
b.开启 SSH 服务,只监听本地内网IP(例如:ListenAddress 172.16.1.61) - 看好后门策略:尽量不给 Linux 服务器外网 IP。
- 各种最小化原则(软件安装、权限授权等)。
- 给系统的重要文件或命令做指纹,随时可以比对文件增删改,报警。
- 给核心文件加锁。
- 看好后门策略:禁止直接远程 SSH 连接,登陆 vpn 服务再连接。
- 看好后门策略:更改默认端口 22,禁止管理员 root 远程连接。
1.9 SSH服务通信原理
SSH协议:SSH协议有两个版本:
SSH 1.X 有漏洞,不用了
SSH 2.X 主流。
查看C6
# Disable legacy (protocol version 1) support in the server for new
# installations. In future the default will change to require explicit
# activation of protocol 1
Protocol 2
查看7,连参数都没了。
ssh加密算法v2.x
在SSH 1.x的联机过程中,当Server接受Client端的Private key后,就不再针对该次联机的Key pair进行检验。此时若有恶意黑客针对该联机的Key pair对插入恶意的程序代码时,由于服务端你不会再检验联机的正确性,因此可能会接收该程序代码,从而造成系统被黑掉的问题。
为了改正这个缺点,SSH version 2多加了一个确认联机正确性的Diffie-Hellman机制,在每次数据传输中,Server都会以该机制检查数据的来源是否正确,这样,可以避免联机过程中被插入恶意程序代码的问题。也就是说,SSH version 2是比较安全的。
由于SSH1协议本身存在较大安全问题,因此,建议大家尽量都用SSH2的联机模式。而联机版本的设置则需要在SSH主机端与客户端均设置好才行。呵呵,大家不必担心,其实,事实上在当前的Centos5.x系统ssh服务端的配置,默认就是配置只支持SSH2的,我们只需要在ssh客户端远程连接时指定通过ssh2协议连接即可,相信绝大多数读者默认一直在这样做了。
客户端秘钥位置:
[root@m01 ~]# cat ~/.ssh/known_hosts
10.0.0.7 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCdrXubncdyChmgskoFFEyttdd/iIW1t88O/mm0BQiwdB19ZlrH9XTSXdujBSla5FJRBhC1bdz902Gu6F4OSYOM=
172.16.1.7 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCdrXubncdyChmgskoFFEyttdd/iIW1t88O/mm0BQiwdB19ZlrH9XTSXdujBSla5FJRBhC1bdz902Gu6F4OSYOM=
10.0.0.41 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCdrXubncdyChmgskoFFEyttdd/iIW1t88O/mm0BQiwdB19ZlrH9XTSXdujBSla5FJRBhC1bdz902Gu6F4OSYOM=
1.10 SSH两种认证方式
1.10.1 密码认证 pam
用户名、密码,登录服务器
1.10.2 秘钥认证
不需要密码了,使用【秘钥文件】就可以连接服务器了。
扩展作业:如何使用xshell秘钥的方式连接Linux。
1.11 Linux主机之间通过秘钥认证来连接:
实践秘钥认证:
项目实践:批量管理、批量分发内容项目:
1.12 环境准备
m01 172.16.1.61
web01 172.16.1.7
web02 172.l6.1.8
见架构图
项目经验:实现SSH批量分发文件、批量管理服务方案
借助方法:秘钥文件,登录的时候不用使用密码。
10.0.0.61管理机(放钥匙)
10.0.0.7 被管理机(放锁)
10.0.0.8 被管理机(放锁)
是root用户,还是普通用户oldboy(sudo提权 很麻烦)?
就用root用户,保证权限。考虑简单、方便、又能兼顾安全。
SSH当前配置:
1)端口默认22
2)不需要禁止远程root登录
3)SSH服务监听内网卡(防火墙限制来源IP)
安全性和复杂度,需要一个平衡。
1.13 开始实战
1、基于root用户做Linux之间的秘钥认证。
2、生成密钥对(去超市买把锁),不需要指定服务器。
3、在61上生成密钥对(方便)。
[root@m01 ~]# ssh-keygen
ssh-keygen 连续回车#ssh-keygen -d dsa
#→RSA与DSA加密算法的区别
#→RSA,是一种加密算法(PS:RSA也可以进行数字签名的),它的简写的来由是Ron Rivest、Adi Shamir和 Leonard Adleman
#→这三个人姓氏的第一个字母连接起来就是RSA。
#→DSA就是数字签名算法的英文全称的简写,即Digital Signature Algorithm,简写就是DSA,
RSA既可以进行加密,也可以进行数字签名实现认证,而DSA只能用于数字签名从而实现认证。
自学:如何一键生成秘钥对(不需要按回车)。
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.[root@m01 ~]# ls /root/.ssh -l
总用量 12
-rw------- 1 root root 1679 4月 22 12:12 id_rsa #<==私钥,钥匙。
-rw-r--r-- 1 root root 390 4月 22 12:12 id_rsa.pub #<==公钥,锁。
-rw-r--r-- 1 root root 513 4月 22 11:45 known_hosts
牢记:钥匙开锁。
4、把锁放到7/8上
/usr/bin/ssh-copy-id #专业拷贝密钥中的公钥文件的。
ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.7
ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.8[root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.7
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/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@172.16.1.7's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '172.16.1.7'"
and check to make sure that only the key(s) you wanted were added.C6:
[root@m01 /]# ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.7
root@172.16.1.7's password:
Now try logging into the machine, with "ssh '172.16.1.7'", and check in:.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
5、ssh-copy-id:原理
1)拷贝公钥并改名为~/.ssh/authorized_keys
scp -rp ~/.ssh/id_rsa.pub 172.16.1.7:~/.ssh/authorized_keys
2)特别注意
[root@web02 ~]# ls ~/.ssh/ -ld
drwx------ 2 root root 29 4月 22 12:18 /root/.ssh/ #1).ssh要求700
[root@web02 ~]# ls ~/.ssh/ -l
总用量 4
-rw------- 1 root root 390 4月 22 12:18 authorized_keys #2)文件权限600
3)为什么名字是authorized_keys?
[root@web02 ~]# grep authorized_keys$ /etc/ssh/sshd_config
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys
免密码登录注意事项。
6、测试远程执行命令:
ssh 172.16.1.7 ifconfig
ssh 172.16.1.8 ifconfig
如果执行过程中不需要密码,并且可以获取到IP,表示成功。
7、写个脚本
[root@m01 ~]# cat /server/scripts/cmd.sh
ssh 172.16.1.7 ifconfig
ssh 172.16.1.8 ifconfig[root@m01 ~]# cat /server/scripts/cmd.sh
for n in 7 8
dossh 172.16.1.$n ifconfig
done# 执行脚本:
sh /server/scripts/cmd.sh
8、开发脚本实现批量管理服务器:
[root@m01 ~]# cat /server/scripts/cmd.sh
for n in 7 8
doecho "=====172.16.1.$n======"ssh 172.16.1.$n "$1"
done[root@m01 /]# sh view.sh "cat /etc/redhat-release"
-------172.16.1.31----------
CentOS release 6.9 (Final)
-------172.16.1.7----------
CentOS release 6.9 (Final)
9、批量发文件:
scp -P 22 -rp /data root@172.16.1.7:/tmp/
rsync -avz /data -e "ssh -p 22" root@172.16.1.7:/opt
简单批量分发文件脚本
[root@m01 /]# cat fenfa.sh
for n in 7 8
doecho ----------172.16.1.$n--------scp -P 22 -rp $1 root@172.16.1.$n:$2
done
复杂分发文件脚本:
$1 脚本后面接的第1参数
$2 脚本后面接的第2参数
$# 命令行脚本后面参数的个数
sh cmd.sh oldboy oldgirl
请问$#=2
$?上一个命令是否执行成功,如为0,则成功。
$0 脚本的名字(含路径)。
sh /server/scripts/fenfa_niubility.sh#!/bin/sh
. /etc/init.d/functions
if [ $# -ne 2 ]
thenecho "usage:sh $0 localfile remotedir"exit 1
fifor n in 7 8
doscp -P 22 -rp $1 root@172.16.1.$n:$2 &>/dev/nullif [ $? -eq 0 ]thenaction "172.16.1.$n successful" /bin/trueelseaction "172.16.1.$n failure" /bin/falsefi
done[root@m01 ~]# mkdir -p /data
[root@m01 ~]# ls /data
[root@m01 ~]# cd /data
[root@m01 /data]# touch {1..5}.txt
[root@m01 data]# sh /server/scripts/fenfa_niubility.sh /data /opt
172.16.1.7 successful [ 确定 ]
172.16.1.8 successful [ 确定 ][root@m01 /data]# sh /server/scripts/cmd.sh "rm -fr /opt/*"
=====172.16.1.7======
=====172.16.1.8======
有个坑,用自己创建的目录和文件测试,如果用etc登录目录,可能会有些文件拷贝不了。
1.14 ssh免密码连接生产应用
1)批量管理分发文件、命令
2)mysql高可用工具MHA,所有节点互信(10节点 两两之间互信)。
1.15 批量分发管理方案
ansible批量管理工具
批量管理工具历史
SSH批量管理是软件加配置实现批量管理:2000-2007年
CFEngine、Puppet、 saltstack(python)、 ansible(python)
07-08年 10-13年 14-17 16-2021 Linux运维班
sina
1)不用装客户端(SSH服务做客户端)
2)ansible批量管理、安装、执行命令、分发文件、状态管理。
课后:
1)web服务
2)项目:多服务综合基础上,搭建m01,实现SSH批量分发文件、批量管理所有,07,08,31,41.
密钥对分发给源和目的,可以做到互信
[root@m01 scripts]# cd ~/.ssh
[root@m01 .ssh]# ll
总用量 12
-rw------- 1 root root 1679 2024-02-27 17:19 id_rsa
-rw-r--r-- 1 root root 390 2024-02-27 17:19 id_rsa.pub
-rw-r--r-- 1 root root 344 2024-02-27 17:20 known_hosts
[root@m01 .ssh]# scp id_rsa 172.16.1.7:~/.ssh/
id_rsa 100% 1679 166.1KB/s 00:00
[root@m01 .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.61
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '172.16.1.61 (172.16.1.61)' can't be established.
ECDSA key fingerprint is SHA256:FugASp0AiEBJGhKbpj9MDlJIVgot3PfDqKa9TNaLdj4.
ECDSA key fingerprint is MD5:5c:57:46:28:61:1e:7a:86:71:c0:35:4d:e3:55:7d:cf.
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@172.16.1.61's password:Number of key(s) added: 1Now try logging into the machine, with: "ssh '172.16.1.61'"
and check to make sure that only the key(s) you wanted were added.[root@m01 .ssh]# ll
总用量 16
-rw------- 1 root root 390 2024-02-27 17:54 authorized_keys
-rw------- 1 root root 1679 2024-02-27 17:19 id_rsa
-rw-r--r-- 1 root root 390 2024-02-27 17:19 id_rsa.pub
-rw-r--r-- 1 root root 517 2024-02-27 17:54 known_hosts[root@web01 ~]# ssh 172.16.1.7 ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 10.0.0.7 netmask 255.255.255.0 broadcast 10.0.0.255inet6 fe80::ab2a:fb93:6cca:3ecd prefixlen 64 scopeid 0x20<link>inet6 fe80::a01e:de23:fc19:1f41 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:49:dd:db txqueuelen 1000 (Ethernet)RX packets 1611 bytes 114569 (111.8 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 2666 bytes 320068 (312.5 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.16.1.7 netmask 255.255.255.0 broadcast 172.16.1.255inet6 fe80::20c:29ff:fe49:dde5 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:49:dd:e5 txqueuelen 1000 (Ethernet)RX packets 386 bytes 64573 (63.0 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 359 bytes 68225 (66.6 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 83 bytes 14496 (14.1 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 83 bytes 14496 (14.1 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
这篇关于Day45-SSH远程连接服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!