SSH远程管理服务
SSH基本概述
SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输,确保了数据传输安全
# 主要功能有:
1.提供远程连接服务器的服务
linux远程连接协议:ssh 22 telnet 23
2.对传输进行加密
SSH服务会对传输服务提供远程连接服务,telnet也能提供远程连接服务,区别是:
ssh 服务会对传输数据进行加密,监听本地22/tcp端口, ssh服务默认支持root用户登录
telnet 服务不对数据进行加密,建通在本地23/tcp端口, telnet默认不支持root用户登录
服务连接方式 | 服务数据传输 | 服务监听端口 | 服务登录用户 |
---|---|---|---|
ssh | 加密 | 22/tcp | 默认支持root用户 |
telnet | 明文 | 23/tcp | 不支持root用户 |
一、SSH相关命令
SSH 有客户端与服务端,我们将这种模式称为C|S架构,ssh客户端支持windows、Linux、Mac等平台,在ssh客户端中包含ssh|slogin远程登录、scp远程拷贝,sftp文件传输、ssh-copy-id密钥分发等应用
# ssh root@172.16.1.21
ssh 命令
-p 指定端口(在终端无法使用)
22 指定ssh协议端口
root 连接时使用的用户(如果不写,默认使用当前服务器当前用户)
@ 分隔符
172.16.1.21 远端服务器IP
-o StrictHostKeyChecking=no 登陆时跳过验证身份
二、telnet连接
2.1、安装telnet
yum install -y telnet-server
2.2、启动telnet
systemctl start telnet.socket
2.3、创建普通用户
# 不能使用root登录,所以需要创建普通用户
useradd rock
echo 1 | passwd --stdin rock
2.4、验证登录
[d:\~]$ telnet 192.168.207.21
三、scp命令(远程文件传输)
#命令: scp
参数:
-r 表示递归拷贝目录
-l 限速。单位是kb
-P 指定端口,默认是22
-p 保持传输文件属性不变
# scp支持推和拉
推
# scp -r /data/ root@172.16.1.31:/mnt/
将本地/data文件推送到远程服务器的/mnt/目录下
拉
# scp root@172.16.1.31:/mnt/* /data
将远程服务器/mnt/目录下文件拉到本地 /data目录下
-l 限速,单位是kb
#设置速度为10M 10*1024*8=81920
[root@nfs]# scp -l 81920 file root@172.16.1.41:/backup/
四、sftp命令
#命令: sftp
# 建立连接
sftp root@172.16.1.31
# sftp支持推和拉
# sftp使用get下载文件至于本地服务器
sftp> get 1.txt /root
命令 远程服务器文件 本地服务器位置
# sftp使用put上传本地服务器文件至远程服务器
sftp> put /data/1.txt /mnt/
命令 本地服务器文件 远程服务器位置
sftp:
1.能上传文件夹
2.能支持上传大于4G的文件
rz:
1.不能上传文件夹
2.不支持断点续传
3.只能上传小于4G的文件
五、SSH验证远程登录
5.1、方式一:基于账户密码的方式远程登录
# 需要知道服务器的IP,端口,账户,密码才可以连接远程主机
ssh -p 22 root@172.16.1.31 ---输入密码
密码设置条件
1.复杂的密码:yonghu_12@31_sysnum(记不住)
2.简单的密码:1 123(容易被破解)
3.每台服务器密码不⼀样
4.密码三个⽉更换⼀次
5.输⼊密码错误三次⾃动锁死
6.密码有key,30秒⼀变或者1分钟⼀变
5.2、方式二:密钥
默认情况下,通过ssh客户端命令登陆远程服务器,需要提供远程系统上的帐号与密码,但为了降低密码
泄露的机率和提⾼登陆的⽅便性,建议使⽤密钥验证⽅式。
5.2.1、生成密钥
# 命令: ssh-keygen
参数:
-t 指定密钥类型(rsa、dsa)
-c 指定用户邮箱
# ssh-keygen
ps:执行该命令后,会要求输入保护密钥的密码,直接回车略过
5.2.2、发送密钥
方式一:
命令方式推送公钥
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.1.31
输入:'yes'
输入:'密码' 发送密钥需要输入远程主机用户密码
方式二:
手动复制公钥
cat /root/.ssh/id_rsa.pub
5.3、免交互expect
[root@m01 ~]# yum install -y expect
写入脚本:
#!/usr/bin/expect
set ip 10.0.0.7
set pass 1
set timeout 30
spawn ssh root@$ip
expect {
"(yes/no)" {send "yes\r"; exp_continue}
"password:" {send "$pass\r"}
}
expect "root@*" {send "df -h\r"}
expect "root@*" {send "exit\r"}
expect eof
5.4、免交互sshpass
# yum install -y sshpass
# sshpass -p 1 ssh root@172.16.1.7
sshpass 命令
-p 指定密码
1 密码
ssh 连接命令
root ⽤户
@ 分隔符
172.16.1.7 主机
写入脚本:
[root@m01 .ssh]# vim ssh.sh
#!/bin/bash
for num in 41 31 7;do
echo ------------------ 10.0.0.$num -----------------
sshpass -p 1 ssh -o StrictHostKeyChecking=no root@10.0.0.$num df -h
done
六、SSH安全优化
vim /etc/ssh/sshd_conf
ort 4399 # 修改sshd服务的默认端⼝
PermitRootLogin no # 禁⽌使⽤root登录服务器
PasswordAuthentication no # 禁⽌使⽤密码登录
UseDNS no # 禁⽌ssh进⾏dns反向解析,影响ssh连接效率参数
GSSAPIAuthentication no # 禁⽌GSS认证,减少连接时产⽣的延迟
xshell连接不上虚拟机
#1.查⽹络,连接谁就ping谁
ping 10.0.0.31
tcping 10.0.0.31 22
#2.查端⼝
telnet 10.0.0.31 22
tcping 10.0.0.31 22
#3.如果可以ping通,端⼝不通
需要检测服务端⼝
netstat -lntp | grep sshd
#4.⽹卡是否启动
ip a
#5.防⽕墙
查看防⽕墙规则是否允许ssh服务
firewall-cmd --list-all
#6.查看虚拟⽹络编辑器
查看⽹关是否正确
#7.查看电脑的VMnat8⽹卡,配置信息是否正确
七、wireshark
7.1、什么是wireshark
Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
在过去,网络封包分析软件是非常昂贵的,或是专门属于盈利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的途径取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是全世界最广泛的网络封包分析软件之一。
抓包过程
1.开启wireshark,选择接入的网络(需要抓包软件接入的网络)
2.可以选择服务关键字进行筛选如:ssh,telnet
3.执行命令
4.wireshark抓包数据查看
5.选择查看数据包