37. SSH协议概述

1.SSH概述

💖1.1 什么是SSH?

Secure Shell 的缩写 SSH 是专为远程登录会话和其他网络服务提供安全性的协议。

利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

💖1.2 SSH主要的功能是?

主要用于客户端与远程主机的安全链接和交互。

💖1.3 SSH与Telnet之间有什么关系?

ssh默认使用端口22 ssh默认支持root直接连接。

Telnet默认使用端口23 Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。

telnet不支持root直接连接,----》shark---->follow抓包会显示普通用户密码

💖1.4 抓包分析SSH与Telnet的区别?

telnet 使用在 交换机 路由器 防火墙 等这类设备上    ssh 使用在 服务器领域 (

无论你是什么Linux的发行版本 统统都是使用ssh远程服务 )

telnet可以 使用在Linux上,用户也可以通过telnet去连接服务器?但是有问题?

1.telnet明文,,必须使用普通用户。 23/tcp

2.ssh密文,ssh默认支持root直接连接。 22/tcp

💖1.5 SSH相关客户端指令sshscpsftp?

C/S (客户端,服务端)

Client / Server --> QQ 电脑客户端 --> QQ 服务端

**一 ssh:**用来连接远程Linux服务器 ( Xshell底层,调用的就是ssh命令 ) $ ssh

root@10.0.0.7 通过ssh命令 连接 10.0.0.7这台Linux服务器 使用的是 root的系统用户

二 scp:远程拷贝,全量拷贝(每次都全量) push 推: scp -rp /etc

root@172.16.1.31:/opt pull 拉: scp root@172.16.1.31:/opt/xx /tmp

参数:

递归: -r

保持属性:-p

限速:-l (8bit=1Byte ( 临时拷贝一个大文件,需要使用 ))

**三 sftp:**远程传输 --> ( XFTP工具,开发使用最多 )

rz不支持传输文件夹、同时不支持传输大于4个G的文件

Xshell 统统可以搞定,支持断点续传

💖1.6 SSH远程登录方式、用户密码、秘钥方式?

就好比手机:

密码解锁 ( 输入用户名 输入密码 )

指纹解锁 ( 秘钥方式 )

  • 用户密码: 简单容易被破解、复杂记不住
    xudeMacBook-Pro:~ xuliangwei$ ssh root@10.0.0.7
    root@10.0.0.7’s password: #输入密码
  • 基于密钥的方式来实现:
    生成一对拥有数学关系的秘钥对。 ( 公钥(🔐)------------私钥(🔑) )
    公钥加密---------------私钥解密。
    公钥可以对外提供, 对外开放。
    私钥只有自己持有,不对外开放

2.通过秘钥登录示例

实现 10.0.0.61 免密码登录 10.0.0.7讲解

10.0.0.61 生成一对 密钥对 公钥和私钥

10.0.0.7 将公钥 放一份到 10.0.0.7 服务器上

10.0.0.61 去连接 10.0.0.7

10.0.0.7 会返回 公钥询问(这个公钥是之前61 推送给7 的)

10.0.0.61 私钥解密经10.0.0.7公钥加密的信息

image.png

实现 10.0.0.61 免密码登录 10.0.0.7操作

[root@manager ~]# ssh-keygen -C  457801170@qq.com(回车回车回车)  # -C 可以分清公钥是谁的
[root@manager ~]# ll  ~/.ssh/
-rw-------  1 root root 1675 4月  20 11:03 id_rsa                  私钥(��)
-rw-r--r--  1 root root  398 4月  20 11:03 id_rsa.pub              公钥(��)

[root@manager ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub     root@10.0.0.7
ssh-copy-id 拷贝公钥  -i 指定公钥的位置
拷贝到  10.0.0.7 这台服务器的 root用户下~./.ssh/目录权限700  秘钥权限600   公钥(��)

[root@manager ~]# ssh root@10.0.0.7
[root@web01 ~]#

非对称加密图解:

image

3. SSH场景实践,借助SSH免秘实现跳板机功能

image.png

一,个人电脑生成秘钥对,推送到跳板机服务器
windows:
xshell在窗口创建windows客户端秘钥对--->>>并复制公钥到 10.0.0.61  ~/.ssh/authorized_keys    
 cd ~/.ssh/
 ll -d ~/.ssh/                                       #权限显示700
 vim  ~/.ssh/authorized_keys            #把windows创建的公钥粘贴到机器里
 ll  authorized_keys
 chmod 600 authorized_keys

mac:
终端同Linux创建秘钥对相同


二,跳板机服务器生成秘钥对后,推送至个各内部服务器
最后manager:
 ssh-copy-id -i ~/.ssh/id_rsa.pub     root@10.0.0.41
 ssh-copy-id -i ~/.ssh/id_rsa.pub     root@10.0.0.31
 ssh-copy-id -i ~/.ssh/id_rsa.pub     root@10.0.0.7

3.1 sshpass免交互推送公钥(扩展)

sshpass:用于非交互的ssh 密码验证
使用 -p 参数指定明文密码,然后直接登录远程服务器。 它支持密码从命令行,文件,环境变量中读取

1、从命令行方式传递密码
sshpass -p user_password ssh user_name@192.168.1.2  【登录远程机器】
sshpass -p user_password scp -P22 root@192.168.1.2:/home/test  ./ 【远程机器/home/test 复制到本机当前目录】
还可以加参数 -q 【去掉进度显示】

2、从文件读取密码
echo "user_password" > user.passwd
sshpass -f user.passwd ssh user_name@192.168.1.2

3、从环境变量获取密码
export SSHPASS="user_password"
sshpass -e ssh user_name@192.168.1.2 

4、sshpass -p user_password ssh  -o StrictHostKeyChecking=no  user_name@192.168.1.2 
【-o StrictHostKeyChecking=no 表示远程连接时不提示是否输入yes/no】

5、使用sshpass远程免密,在远程主机上执行shell命令,如下远程执行命令:touch /opt/file.txt
sshpass -p user_password ssh  -o StrictHostKeyChecking=no  user_name@192.168.1.2  touch /opt/file.txt
[注:shell命令要和sshpass命令写在一行]

3.2 Manager服务器如何批量分发公钥信息:

**cat   /server/scripts/push_public.sh** 
#!/bin/bash
for ip in 5 6 7 8 9 31 41 51 52 61 62 63 71 
do 
timeout 2s sshpass -p123456  ssh-copy-id  -i ~/.ssh/id_rsa.pub root@172.16.1.$ip -o StrictHostKeyChecking=no &>/dev/null  
  
if [ $? -eq 0 ]
      then
         echo "host 172.16.1.$ip distribute_pub_key  ok."
      else
         echo "host 172.16.1.$ip distribute_pub_key  failed."
      fi      
done

授权并执行
chmod +x /server/scripts/push_public.sh
sh /server/scripts/push_public.sh

4.SSH远程连接功能安全优化?

ssh连接时,要等待30s-1分钟 才提示输入密码? 可以对IP做了反向解析 ssh作为对外连接的一个服务,会不会被破解。 (
不是很安全 ) 所以ssh的安全、我们只需要保证对外的那一台就足够了? 因为其他的节点都是内部使用,无需对外。 密码一定要三个月一换 (
常识 )

SSH服务登录防护需进行如下配置调整,先对如下参数进行了解

vim  /etc/ssh/sshd_config

Port 6666                      # 变更SSH服务远程连接端口
PermitRootLogin         no     # 禁止root用户直接远程登录     只能拿秘钥登录,慎用。
PasswordAuthentication  no    
# 禁止使用密码直接远程登录 -->配置好了以后--->先登录系统中的普通用户---->su - root--> passwd

UseDNS                  no      # 禁止ssh进行dns反向解析,影响ssh连接效率参数  
GSSAPIAuthentication    no      # 禁止GSS认证,减少连接时产生的延迟

变更配置一定要重启

1.更改远程连接登陆的端口 默认ssh是22端口 如果你修改为其他的端口 是不是风险就降低了很多
2.禁止ROOT管理员直接登录 root不能登录,但是可以使用普通用户
3.密码认证方式改为密钥认证 直接拒绝密码登录(较少)
4.重要服务不使用公网IP地址 *
5.使用防火墙限制来源IP地址

5. 堡垒机简单体验:

5.1 teleport软件搭建跳板机

这个的底层还是跟我们讲的ssh免密是一个思路. 安装请跳转-----> 链接

5.2 简单搭建 jumpser跳板机

  • 主机要求: 1. 关闭selinux 2. 要求堡垒机防火墙打开
  • 配置要求: 2核4G

1.下载和配置

cat  /server/scripts/install_jumpser.sh
#!bin/bash
cd /opt  && \
rpm -qa wget    if [ $? -ne 0 ];then                                                                           
 yum  install wget  -y  
fi
ls /opt/setuptools/  

 yum  install  git  -y
if [ $? -ne 0 ];then
 git clone --depth=1 https://github.com/jumpserver/setuptools.git
fi

cd setuptools  && \
ls /opt/setuptools/config.conf  
if [ $? -ne 0 ];then
   cp config_example.conf config.conf 
fi

2.安装:

/opt/setuptools/jmsctl.sh install

3.启动:

/opt/setuptools/jmsctl.sh start

4.登录web页面:

Web 登陆信息: http://10.0.0.61:80 (访问你的服务器Ip和80端口)

SSH 登录信息: ssh admin@10.0.0.61 -p2222

web界面初始用户名密码: admin admin

[如果你是云服务器请在安全组放行 80 和 2222 端口]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值