IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> SSH远程管理 -> 正文阅读

[系统运维]SSH远程管理

一、SSH基本概念

1.什么时ssh

SSL(Secure Socket Layer即安全套接层)协议是Netscape Communication公司推出在网络传输层之上提供的一种基于非对称密钥和对称密钥技术的用于浏览器和Web服务器.

SSH为Secure Shell的缩写,由IETF的网络工作小组(Network Working Group)所制定;SSH为建立在应用层和传输层基础上的安全协议。在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输。确保了数据传输安全。
关于http和https

2.SSH功能:

1.提供远程连接服务器(ssh、telnet)
2.提供远程传输数据加密

3. SSH与Telnet区别

服务连接方式服务数据传输服务监听端口服务登陆用户
ssh加密22/tcp默认支持root用户登录
telnet明文23/tcp不支持root用户登录

4 抓包分析SSH与Telnet

1.安装
[root@localhost ~]# yum install telnet telnet-server -y
2.启动
[root@localhost ~]# systemctl start telnet.socket 
3.查看端口
[root@localhost ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      536/rpcbind         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      868/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1016/master         
tcp6       0      0 :::111                  :::*                    LISTEN      536/rpcbind         
tcp6       0      0 :::22                   :::*                    LISTEN      868/sshd            
tcp6       0      0 :::23                   :::*                    LISTEN      1/systemd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1016/master         
[root@localhost ~]# 
4.创建tom用户(因为默认不支持root用户登录,所以创建普通用户便于下面登录)

5.下载安装wireshark抓包分析
链接:https://pan.baidu.com/s/1XCcY646SpveAIpoxzywZVg
提取码:ia4m
在这里插入图片描述
cmd客户端连接刚才安装telnet-server的ip 10.0.0.99,抓包追踪tcp流,发现可以看见自己输入的密码
在这里插入图片描述
6.改为ssh连接 ssh root@10.0.0.99重新抓包追踪tcp流
在这里插入图片描述
发现已经加密过了。

二、ssh客户端命令

SSH有客户端与服务端(C/S架构)

ssh|slogin远程登陆
scp远程拷贝
sftp文件传输
ssh-copy-id秘钥分发程序

1.远程登录

ssh 用户名@目标主机ip -p 端口

[d:\~]$ ssh root@10.0.0.7 666

端口默认22可以不指定,如果服务端更改了端口,需要 -p+port 形式登录。
配置文件/etc/ssh/sshd_config

2.scp远程拷贝

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

-P 指定端口,默认22端口可不写
-r 表示递归拷贝目录
-p 表示在拷贝文件前后保持文件或目录属性不变
-l 限制传输使用带宽(默认kb/8=MB)

推:

将本机 /tmp 下a.txt 推送到远端10.0.0.99 /tmp目录下
[root@web01 tmp]$ scp -rp a.txt root@10.0.0.99:/tmp

拉:

[root@web01 tmp]# scp -pr -P22 root@10.0.0.31:/etc/exports /tmp
#限速下载速度为1MB 1MB/s=1024kb/s=1024*8kbit/s=8192kbit/s
[root@web01 tmp]# scp -rp -l 8192 /opt/1.txt root@172.16.1.31:/tmp

1.scp通过ssh协议加密方式进行文件或目录拷贝。
2.scp连接时的用户作为为拷贝文件或目录的权限。
3.scp支持数据推送和拉取,每次都是全量拷贝,效率较低。

三、SSH远程验证方式

1. 基于密码验证

知道服务器的IP端口,账号密码,即可通过ssh客户端命令登陆远程主机。
密码太简单容易破解;密码太复杂容易忘记

2.基于秘钥验证

为了降低密码泄露的机率和提高登陆的方便性,建议使用密钥验证方式。
在这里插入图片描述

3. 创建密钥

在主机A上生成非对称密钥,使用-t指定密钥类型, 使用-C指定用户邮箱
ssh-keygen -t rsa -C 邮箱

# 创建密钥
[root@web01 ~]# ssh-keygen -t rsa -C web01@qq.com 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
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:gL0dewzpd2LStl4YSXpt4CfH//6ZY4WJEHs9exFoe4Y web01@qq.com
The key's randomart image is:
+---[RSA 2048]----+
|              .  |
|     o   ..  o . |
|    . o + oo..o .|
|       = Xo=.Eo+ |
|      . S #oB.o=.|
|         B @..+ o|
|          o . ...|
|         . .   +o|
|          .   .+*|
+----[SHA256]-----+
[root@web01 ~]# 

4. 推送公钥到要登录的服务器

将A的公钥推送到B

ssh-copy-id [-i [identity_file]] [user@]machine

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

推送过去后默认存在文件 ~/.ssh/authorized_keys 中

5. 测试连接

[root@web01 ~]# ssh 10.0.0.31
Last login: Fri Aug  6 19:39:43 2021 from 10.0.0.7
[root@rsync-server ~]# 

# 在当前bash执行对方主机上的命令(不登录对方)
[root@web01 ~]# ssh 10.0.0.31 -C "hostname -i"
fe80::20c:29ff:fe40:4989%eth1 10.0.0.31 172.16.1.31
[root@web01 ~]# 

四、SSH实现跳板机

用户通过Windows/MAC/Linux客户端连接跳板机免密码登录,跳板机连接后端无外网的Linux主机实现免密登录,架构图如下。
多用户登陆一台服务器无密码
单用户登陆多台服务器免密码
在这里插入图片描述

1 . Windows下发密钥

1.Xshell–>选择工具->新建密钥生成向导,生成公钥对,选择下一步
2.填写秘钥名称。秘钥增加密码则不建议配置,继续即可
3.生成秘钥后,点击Xshell->工具->用户秘钥管理者->选择对应秘钥的属性–》公钥
4.选择对应秘钥的公钥,将其复制至跳板机~/.ssh/authorized_keys中,然后测试
注意新建 .ssh目录的权限700 authorized_keys的权限是600,创建的时候请注意修改。

[root@manager ~]# mkdir .ssh
[root@manager .ssh]# cd .ssh
[root@manager .ssh]# vim authorized_keys
[root@manager .ssh]# chmod 600 authorized_keys 
[root@manager .ssh]# cd ..
[root@manager ~]# chmod 700 .ssh	

用windows客户端登录跳板机manager(10.0.0.62)
在这里插入图片描述

2 Linux跳板机下发密钥给集群中的所有主机

1.在跳板机上生成公钥和私钥,下发公钥给集群中的所有主机

[root@manager .ssh]# ssh-keygen -t rsa -C manager@163.com

2.将跳板机上的公钥推送给内网所有主机
假设内网有三台主机如下:

[root@manager ~]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.1.32
[root@manager ~]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.1.31
[root@manager ~]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.1.7

3.禁止所有内网主机公网,尝试windos先免密登录跳板机,再用跳板机登录任意一台内网主机

[root@manager ~]# ssh 172.16.1.31
Last login: Fri Aug  6 19:44:59 2021 from 10.0.0.7
[root@rsync-server ~]# exit
logout
Connection to 172.16.1.31 closed.
You have new mail in /var/spool/mail/root

[root@manager ~]# ssh 172.16.1.32
Last login: Fri Aug  6 08:52:00 2021 from 10.0.0.1
[root@nfs ~]# exit 
logout
Connection to 172.16.1.32 closed.

[root@manager ~]# ssh 172.16.1.7
Last login: Fri Aug  6 18:01:27 2021
[root@web01 ~]#

3. Teleport 堡垒机

此前的ssh免密虽然可以实现跳板,但是他有很多的缺陷:
1.无法知道有多少后端主机可以免密连接
2.没有审计功能(无法知道用户登陆上来操作了什么)
3.没有很好的权限管理机制(无法为不同的用户分配不同的主机)
所以我们可以使用 teleport web界面管理的跳板机来解决ssh的不足。
在使用teleport之前,我们需要完成此前免密的环境搭建,因为teleport是基于此前免密的的环境基础之上实现,只不过新增了权限管理、主机管理、用户管理等功能。
下·
Teleport官网请戳我
安装文档请戳我
用windows下载完成后上传到服务器,解压

[root@manager ~]# tar -xf teleport-server-linux-x64-3.2.2.tar.gz 
[root@manager ~]# cd teleport-server-linux-x64-3.2.2
[root@manager teleport-server-linux-x64-3.2.2]# ./setup.sh # 执行

[root@manager teleport-server-linux-x64-3.2.2]# netstat -lntp  # 监听7190端口
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:7190            0.0.0.0:*               LISTEN      19184/tp_we

五、SSH基础优化

SSH作为远程连接服务,通常我们需要考虑到该服务的安全,所以需要对该服务进行安全方面的配置。
1.更改远程连接登陆的端口(对外的服务器一定要修改
2.禁止ROOT管理员直接登录
3.密码认证方式改为密钥认证
4.重要服务不使用公网IP地址(Redis\MySQL…)
5.使用防火墙限制来源IP地址
配置文件:
/etc/ssh/sshd_config

Port 6666                       # 变更SSH服务远程连接端口
PermitRootLogin         no      # 禁止root用户直接远程登录
PasswordAuthentication no      # 禁止使用密码直接远程登录
UseDNS                 no      # 禁止ssh进行dns反向解析,影响ssh连接效率参数
GSSAPIAuthentication   no      # 禁止GSS认证,减少连接时产生的延迟
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-07 12:29:14  更:2021-08-07 12:31:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 6:15:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码