05.SSH远程管理服务实战

1.SSH基本概述

SSHSecure Shell Protocol的简写,在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输。确保了传递的数据安全。

1.SSH远程服务主要功能

提供类似telnet远程连接服务器的服务,并具有数据加密的功能
提供类似FTP服务的sftp-server借助SSH协议来传输数据的,提供更安全的SFTP服务vsftp

2.远程连接方式

ssh属于密文连接方式 监听在本地22/tcp端口
telnet属于明文连接方式 监听在本地23/tcp端口

3.SSH远程连接与Telnet远程连接区别

ssh服务是加密服务协议,telnet服务是非加密服务协议
ssh服务默认支持root用户登录,Telnet默认不支持root用户登录

案例: 使用wireshark验证telnet明文传输与ssh加密传输

1.安装telnet服务并运行

[root@m01 ~]# yum install telnet-server -y[root@m01 ~]# systemctl start telnet.socket

2.使用wireshark检测vmnet8网卡上的telnet流量



3.telnet是无法使用root用户登录Linux系统,需要创建普通用户


[root@m01 ~]# useradd bgx[root@m01 ~]# echo "123456"  | passwd --stdin bgx

4.使用普通用户进行telnet登录



5.搜索wireshark包含telnet相关的流量





6.使用wireshark分析ssh流量







ssh远程连接不上,具体排查思路

#测试服务端口有没有开启# telnet 10.0.0.41 22# ss -lntup|grep 22# netstat -lntup# nmap -p 22 10.0.0.41# nc 10.0.0.41 22

2.SSH相关命令

SSH是典型的客户端和服务端的交互模式, 客户端广泛的支持各个平台
WIndows有很多工具可以支持SSH连接功能, 建议使用Xshell

openssh软件分析(与数据加密相关的软件--openssl)

[root@backup ~]# yum provides `which ssh`[root@backup ~]# rpm -ql openssh-server/etc/rc.d/init.d/sshd   --- ssh服务启动脚本文件/etc/ssh/sshd_config    --- ssh服务配置文件/usr/sbin/sshd          --- ssh服务进程启动命令[root@backup ~]# rpm -ql openssh-clients
/etc/ssh/ssh_config     --- ssh服务客户端配置文件/usr/bin/scp            --- 远程拷贝命令/usr/bin/sftp           --- 远程文件传输命令/usr/bin/slogin         --- 远程登录命令/usr/bin/ssh            --- 远程连接登录命令/usr/bin/ssh-copy-id    --- 远程分发公钥命令ssh客户端包含ssh以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全FTP文件传输)等应用程序。

1.ssh远程登录服务器命令

ssh -p22 oldboy@10.0.0.150 [命令]# SSH连接远程主机命令的基本语法;# ssh 命令# -p(小写), 用于指定远程主机端口,默认22端口可省略# oldboy@remotehost# "@"前面为用户名,如果用当前用户连接,可以不指定用户# "@"后面为要连接的服务器的IP

2.scp复制数据至远程主机命令(全量复制)

# SSH连接远程主机命令的基本语法;# scp 命令# -P(大写) 指定端口,默认22端口可不写# -r 表示递归拷贝目录# -p 表示在拷贝文件前后保持文件或目录属性不变# -l 限制传输使用带宽(默认kb)推:PUSH,上传# scp -P22 -rp /tmp/oldboy oldboy@10.0.0.150:/tmp# /tmp/oldboy为本地的目录。# “@”前为用户名# “@”后为要连接的服务器的IP。# IP后的:/tmp目录,为远端的目标目录。# 说明: 以上命令作用是把本地/tmp/oldboy推送至远端服务器10.0.0.150的/tmp目录拉:PULL,下载# scp -P22 -rp root@10.0.0.7:/tmp/oldboy /opt/# 还可以将远端目录或文件拉取至本地

结论:
1.scp通过加密进行远程拷贝文件或目录的命令。
2.scp拷贝权限为连接的用户对应的权限。
3.scp支持数据的推送和拉取,但每次都是全量拷贝,效率低下。

3.Sftp远程数据传输命令

连接远程sftp# sftp root@192.168.56.12# sftp -oPort=52113 root@10.0.0.41 <-sftp的特殊端口连接# 下载文件, 至于本地服务器sftp> get conf.txt /tmp/# 上传本地服务器文件, 至远程服务器sftp> put /root/t1.txt /root/

3.SSH连接方式

1.基于账户密码远程登录

知道服务器的IP端口,账号密码, 即可通过ssh客户端登陆远程主机, 远程主机联机过程中传输数据库都是加密的。

➜  ~ ssh -p22 root@10.0.0.60root@10.0.0.60's password:[root@m01 ~]#

2.基于秘钥远程登录

默认情况下,通过ssh客户端登陆远程服务器, 需要提供远程系统上的帐号与密码,但为了降低密码泄露的机率和提高登陆的方便性, 建议使用密钥验证方式.



ssh key 使用非对称加密方式生成公钥和私钥
私钥存放在本地~/.ssh目录
公钥存储至需要登陆的服务器~/.ssh/authorized_keys

1.在管理服务器上生成密钥,-t密钥类型, -C指定用户邮箱

[root@m01 ~]# ssh-keygen -t rsa -C xuliangwei@qq.com
...//默认一路回车即可, 当然也可以根据不同需求进行修改...

2.将A服务器上的公钥推送至B服务器

//命令示例: ssh-copy-id [-i [identity_file]] [user@]machinessh-copy-id //命令-i          //指定下发公钥的路径[user@]     //以什么用户身份进行公钥分发(root),如果不输入,表示以当前系统用户身份分发公钥machine     //下发公钥至那台服务器, 填写远程主机IP地址//秘钥分发, [会将A服务器的公钥写入B服务器~/.ssh/authorized_keys文件中][root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.41

3.A服务器通过密钥方式连接B服务器

//远程登录对端主机方式
[root@m01 ~]# ssh root@172.16.1.41[root@nfs ~]#//不登陆远程主机执行命令
[root@m01 ~]# ssh root@172.16.1.41 "hostname -i"172.16.1.41//可能遇到错误1.no route to host   防火墙2.Connection refused 防火墙或服务未启用

实战案例1 SSH服务密钥分发实战

1.实现m01服务器通过密钥登录backupnfs服务器
2.实现m01服务器查看backupnfs的服务器的状态信息(无需密码)

角色外网IP内网IP用户
m01分发密钥eth0:10.0.0.61eth1:172.16.1.61root
nfs被控端eth0:10.0.0.31eth1:172.16.1.31root
backup被控端eth0:10.0.0.41eth1:172.16.1.41root

1.在m01控制端生成密钥

[root@m01 ~]# ssh-keygen -t rsa -C A-Server.com

2.分发密钥,如果SSH不是使用默认22端口, 使用-P指定对应端口

[root@m01 ~]# ssh-copy-id  -i /root/.ssh/id_rsa.pub "-p6666 root@172.16.1.31"[root@m01 ~]# ssh-copy-id  -i /root/.ssh/id_rsa.pub "-p6666 root@172.16.1.41"

3.在m01管理机上测试是否成功登陆两台服务器

[root@m01 ~]# ssh -p6666 root@1172.16.1.41[root@nfs01 ~]#[root@m01 ~]# ssh -p6666 root@1172.16.1.31[root@backup ~]#

4.SSH访问控制

SSH远程服务访问控制手段

1.更改SSH服务远程登录端口
2.更改SSH服务监听本地内网IP
3.更改SSH服务禁止ROOT管理员登录
4.更改SSH服务密码登录认证为密钥登录
5.重要服务器都不使用公网IP地址
6.使用防火墙限制来源IP地址

SSH入侵网友案例

1.SSH服务登录防护手段配置文件/etc/ssh/sshd_config

Port 6666                   # 更改SSH远程连接端口ListenAddress 192.168.56.11 # 绑定本地内网地址PermitRootLogin             # 是否允许root用户远程登录,企业环境禁止PermitEmptyPasswords no     # 是否允许空密码登录(默认禁止)UseDNS no                   # 是否进行dns反向解析,影响ssh连接效率参数GSSAPIAuthentication no     # 是否进行认证,影响ssh连接效率参数

SSH配置实例, 添加如下配置至/etc/ssh/sshd_config, 根据业务需求调整配置

###SSH###Port 6666ListenAddress 10.0.0.61#PasswordAuthentication no#PermitRootLogin no#PermitEmptyPasswords noGSSAPIAuthentication noUseDNS no###END###

5.SSH案例实践

ssh 密钥实现批量分发备份、批量管理实战考试
时间:5 分钟
请准备有三台 linux 机器分别为 A ,B ,C,要求实现如下内容:
1.用自己的名字后面加 888(例如:xuliangwei888)的用户完成一把钥匙开多把锁(A 钥匙,B, C 锁)的免密码验证登陆部署场景,如下所示:

2.在不破坏题 1)的前提下,同样用自己的名字加 888 的用户完成多把钥匙开一把锁(B,C 钥匙,A 锁)的免密码验证登陆部署场景,如下所示:

3.如何实现从 A 指定目录批量分发文件到 B、C 用户的家目录(借助问题 1)的部署结果)。 时间:2 分钟
解答:考察 scp 用法

4.实现从 A 指定目录的文件分发到 B、C 的任意目录下(不用 root 用户如何实现)? 时间:5 分钟 解答:考察普通用户提权

5.如何快速查看所有机器的负载 load,CPU,内存等信息(借助问题 1)的部署结果)。 (思考:如果服务器数量多,如何并发查看和分发数据)
解答:时间:5 分钟


本文 暂无 评论

Top