1.批量管理基础内容-SSH服务-远程连接服务
1.1SSH服务
- SSH服务-OpenSSH,远程连接
- 服务端:openssh-server
- 客户端:openssh-clients
openssh-7.4p1-21.el7.x86_64
openssh-server-7.4p1-21.el7.x86_64 #服务端
openssh-clients-7.4p1-21.el7.x86_64 #客户端
1.2 OpenSSH VS Telnet
对比OpenSSH和Telnet服务 | 共同点 | 区别 | 应用场景 |
---|---|---|---|
OpenSSH | 远程连接 | 连接时候数据加密 | 默认使用 |
Telnet服务 | 远程连接 | 连接时候数据未加密 | 未来升级OpenSSH,建议先安装telnet服务,然后升级 |
telnet服务端使用-了解
yum install -y telnet-server
systemctl start telnet.socket
telnet 10.0.0.31
1.3OpenSSH服务端配置
1)概述
openssh服务端软件包内容 | ||
---|---|---|
/etc/ssh/sshd_config #daemon守护进程/服务 | #openssh服务端配置文件 | |
/usr/lib/systemd/system/sshd.service | openssh服务端管理配置文件(systemctl start/stop/restart sshd) | |
/usr/sbin/sshd | openssh服务启动命令 |
2)服务端配置文件详解
配置文件 | ||
---|---|---|
性能优化 | UseDNS no | 是否开启DNS反向解析(ip---->域名),这个选项默认开启,会导致远程连接慢 |
GSSAPIAuthentication no | 是否开启GSSAPI认证,默认开启,开启导致远程连接慢 | |
安全配置 | Port 22 | 配置ssh服务端口端口号,未来处于安全考虑要修改,默认22 |
PermitRootLogin yes | 是否准许root远程登录默认是yes(ubuntu系统默认no) | |
ListenAddress | 配置用户只能通过哪个ip连接来进入网卡,指定的本地网卡的ip地址。默认是0.0.0.0,所有用户都可以连接 | |
PasswordAuthentication yes | 是否准许通过密码登录(是否开启密码登录) | |
UsePAM yes | 是否开启PAM认证(安全部分讲解) |
1.4 Openssh客户端命令
1)概述
Openssh客户端核心命令 | 作用 |
---|---|
scp | 远程传输命令 |
ssh | 命令行远程连接工具 |
sftp | ftp工具 |
2)scp |
scp -r -P 22 /etc/ 10.0.0.31:/tmp
-r 递归传输目录
-P 指定ssh端口号,不指定默认是22
3)ssh
a)远程连接10.0.0.41的22端口
ssh -p 22 root@10.0.0.41
b)远程连接到10.0.0.41的22端口执行命令hostname并返回
ssh -p 22 root@10.0.0.41 hostname
4)sftp
ftp:文件传输协议,服务端口号21端口...一般用于传输数据:window+linux,类似于rz和sz
window和linux之间的:
对于大文件推荐使用:scp/rsync/ftp传输
如果文件比较小:使用rz/sz即可
sftp 命令
xftp 图形化ftp工具
a)命令行
现在在10.0.0.31机器 ,连接10.0.0.41 通过sftp
sftp root@10.0.0.41
# 上传
put /etc/hostname #把31的/etc/hostname上传到41
# 下载
get /etc/hostname #把41的/etc/hostname下载到31
#查看远程目录信息
ls
ls -l
#查看本地目录信息
lls -l #l是local的意思
#删除远程文件/目录
rm
b) 图形化界面版本
xftp,xshell,winscp...
1.5 OpenSSH密钥认证
密钥认证:也叫免密码登录,也叫双机互信.
目标:
让linux系统之间(1台到其他所有)远程连接的时候不需要输入密码.
实现初步批量管理功能.
未来一些服务软件需要我们先部署密钥认证
1)原理
2)实战使用
环境准备 | ||
---|---|---|
m01 | 批量管理服务,要可以连接其他所有机器,存放密钥对 | |
backup | 被管理机器 | |
nfs01 | 被管理机器 | |
web01 | 被管理机器 |
1.创建秘钥对
ssh-keygen
2.分发密钥(公钥)
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.31
3.测试
ssh root@10.0.0.31 hostname
1.6 Openssh密钥认证一键化部署
1)一键流程
1.创建秘钥对-一键
ssh-keygen -f ~/.ssh/id_rsa -P ''
2.分发公钥
分发公钥的时候关闭主机验证功能.临时
sshpass -pthinker ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no root@10.0.0.41
2)sshpass
替我们在需要的时候提供ssh的命令:sshpass
yum install -y sshpass
sshpass -pthinker ssh 10.0.0.31 hostname
3)一键化创建秘钥对和分发密钥
脚本内容
第1步创建秘钥对.
第2步分发公钥.
#!/bin/bash
#author: hbinz
#desc 一键自动化创建和分发公钥
ip_list="10.0.0.7 10.0.0.31 10.0.0.41"
ssh_root_pass="thinker"
echo '------------------------------------'
echo '1.创建秘钥'
echo '------------------------------------'
ssh-keygen -f ~/.ssh/id_rsa -P ''
echo '------------------------------------'
echo '2.分发 公钥'
echo '------------------------------------'
for ip in $ip_list
do
sshpass -p$ssh_root_pass ssh_copy_id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no root@$ip
done
4)一键化检查(执行命令)
扩展:表示不含$0的所有参数的列表
#!/bin/bash
#author: Hbinz
#desc 批量检查脚本
ip_list="10.0.0.7 10.0.0.31 10.0.0.41"
echo "----------------------------------"
echo "批量执行命令"
echo "----------------------------------"
for ip in $ip_list
do
ssh root@$ip $@
done
1.7 堡垒机/跳板机
服务端(m01)
助手(window)
1)服务端
tar -zvxf teleport-linux-3.0.2.9.tar.gz -C /app/tools
mv teleport-linux-3.0.2.9 teleport-linux
cd teleport-linux
./setup.sh
浏览器访问:http://10.0.0.210:7190/maintenance/install
浏览器登录:http://10.0.0.210:7190/dashboard
注意: 这里使用秘钥认证(需要你提前创建好m01到其他所有机器的秘钥认证)或者密码认证都可以
2)安装windows/mac助手
略
ssh-copy-id原理:
创建.ssh目录
创建.ssh/authorized_keys文件,存放公钥.
本质调用了ssh命令.
ssh "$@" "exec sh -c 'cd ; umask 077 ; mkdir -p .ssh && cat << .ssh/authorized_keys || exit 1 ; if type restorecon >/dev/null 2>&1 ; then restorecon -F .ssh .ssh/authorized_keys ; fi'"
cd ; #连接到对应的机器10.0.0.31,进入家目录.
umask 077 ;临时调整umask 默认权限 目录: 700 文件:600
mkdir -p .ssh 创建家目录下.ssh隐藏目录 #目录权限 700
cat << .ssh/authorized_keys #把公钥的信息写入到 对应机
器的.ssh下面的authorized_keys文件中.这个文件权限600