Linux网路SSH服务(愿你我以渺小启程,以伟大结局)

目录

一、SSH服务

1.1 什么是SSH服务器

1.2 SSH原理

1.3 服务端配置

1.3.1 常用配置

 1.3.2 使用秘钥对及免交互验证登录

1.4 安全

1.5 ssh客户端

二、TCP Wrappers

2.1 策略的配置格式

2.2访问控制的基本原则

三、轻量级自动化运维工具pssh

3.1 简介

3.2 配置过程

 四、总结


一、SSH服务

1.1 什么是SSH服务器

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度

优点:

  • 数据传输是加密的,可以防止信息泄漏

  • 数据传输是压缩的,可以提高传输速度

ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务

作用:SSHD 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。

OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、 Linux 操作系统。

Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。

执行"systemctl start sshd"命令即可启动sshd 服务

sshd 服务默认使用的是TCP的22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)

OpenSSH

  • 服务名称:sshd
  • 服务端主程序:/usr/sbin/sshd  
  • 服务端配置文件:/etc/ssh/sshd_config 
  • 客户端配置文件:/etc/ssh/ssh_config

1.2 SSH原理

  • 客户端发起链接请求

  • 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)

  • 客户端生成密钥对

  • 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密

  • 客户端发送加密后的值到服务端,服务端用私钥解密,得到Res

  • 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)

  • 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

1.3 服务端配置

1.3.1 常用配置

[root@localhost ~]# vim /etc/ssh/sshd_config
#进入服务端的配置文件

Port 220

关闭selinux

 1.3.2 使用秘钥对及免交互验证登录

登录原理:

  • 用户/密码

  • 基于秘钥免交互验证登录

用户/密码

  1. 客户端发起ssh请求,服务器会把自己的公钥发送给用户

  2. 用户会根据服务器发来的公钥对密码进行加密

  3. 加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功

基于秘钥免交互验证登录

  1. 首先在客户端生成一对密钥(ssh-keygen)

  2. 并将客户端的公钥ssh-copy-id 拷贝到服务端

  3. 当客户端再次发送一个连接请求,包括ip、用户名

  4. 服务端得到客户端的请求后,会到authorized_keys()中查找,如果有响应的IP和用户,就会随机生成一个字符串

  5. 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端

  6. 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端

  7. 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

[root@localhost ~]# ssh-keygen  --help
unknown option -- -
usage: ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1]
                  [-N new_passphrase] [-C comment] [-f output_keyfile]
#-t   表示加密方式,不加是随机
# dsa | ecdsa | ed25519 | rsa | rsa1  表示不同的加密算法

 上面输入的密码是自己设置ecdsa加密后登录的密码,如果也不想要输入ecdsa密码,全部回车

 思考:

设置免密登录后,服务端root改密码后,客户端还能登录吗

答案是可以登录的,因为已经根据密钥对来登录了,与root的密码无关

  • 与用户密码无关
  • 与IP地址无关
  • 只与密钥对有关

1.4 安全

1.通过对比密钥判断是不是我们需要连接的机子

2. 限制可登录用户

[root@localhost ~]# vim /etc/ssh/sshd_config
#进入服务端的配置文件

1.5 ssh客户端

命令功能
ssh远程安全登录(使用端口-p 22)
scp远程安全复制
sftp安全ftp上下载

 

二、TCP Wrappers

在 Linux 系统中,许多网络服务针对客户端提供了访问控制机制,如 Samba、BIND、 HTTPD、OpenSSH 等。TCP Wrappers(TCP 封套)作为应用服务与网络之间的一道特殊防线,提供额外的安全保障。

TCP Wrappers 将 TCP 服务程序“包裹”起来,代为监听 TCP 服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。

2.1 策略的配置格式

(1)服务程序列表

服务程序列表可分为以下几类。

ALL:代表所有的服务

单个服务程序:如“vsftpd“

多个服务程序组成的列表:如“vsftpd,sshd”

(02)客户端地址列表

客户端地址列表可分为以下几类。

  1. ALL:代表任何客户端地址。

  2. LOCAL:代表本机地址。

  3. 单个 IP 地址:如“192.168.4.4”

  4. 网络段地址:如“192.168.4.0/255.255.255.0”

  5. 以“.”开始的域名:如“.bdqn.com”匹配 bdqn.com 域中的所有主机。

  6. 以“.”结束的网络地址:如“192.168.4.”匹配整个 192.168.4.0/24 网段

  7. 嵌入通配符“”“?”:前者代表任意长度字符,后者仅代表一个字符,如“10.0.8.2

  8. 匹配以 10.0.8.2 开头的所有 IP 地址。不可与以“.”开始或结束的模式混用

  9. 多个客户端地址组成的列表:如“192.168.1.,172.16.16.,.bdqn.com”

2.2访问控制的基本原则

allow的优先级高于deny 

 

 

更多关于TCP Wrappers可以参考这篇文章

https://www.cnblogs.com/duzhaoqi/p/7607801.html

三、轻量级自动化运维工具pssh

3.1 简介

EPEL源中提供了多个自动化运维工具

  • pssh:基于python编写,可同时处理30台左右服务器上执行命令的工具,也可实现文件复制,提供了基于ssh和scp的多个并行工具,项目:http://code.google.com/p/parallel-ssh/

  • pdsh:Parallel remote shell program,是一个多线程远程shell客户端,可以并行执行多个远程主机上的命令。 可使用几种不同的远程shell服务,包括rsh,Kerberos IV和ssh,项目 https://pdsh.googlecode.com/

  • mussh:Multihost SSH wrapper,是一个shell脚本,允许使用命令在多个主机上通过ssh执行命令。 可使用ssh-agent和RSA/DSA密钥,以减少输入密码,项目MUltihost SSH Wrapper download | SourceForge.net

pssh命令选项参数

-H主机字符串,内容格式”[user@]host[:port]” 
-hfile:主机列表文件,内容格式”[user@]host[:port]” 
-A手动输入密码模式
-i每个服务器内部处理信息输出
-l登录使用的用户名
-p并发的线程数【可选】
-o输出的文件目录【可选】
-e错误输出文件【可选】
-tTIMEOUT 超时时间设置,0无限制【可选】
-OSSH的选项
-P打印出服务器返回信息
-v详细模式
--version查看版本

3.2 配置过程

192.168.109.132管理192.168.109.131和192.168.109.133

#在CentOS-Base.repo最后一行添加
# $releasever自动检测版本号
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/$releasever/x86_64
        https://mirrors.cloud.tencent.com/epel/$releasever/x86_64
        https://mirrors.huaweicloud.com/epel/$releasever/x86_64
        https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/x86_64
gpgcheck=0
#下载
yum install pssh -y

 

 这里仅以管理两台台举例,想要管理多台ssh-copy-id IP地址  即可

#管理多台,写入一个文件
vim hosts.txt
cat hosts.txt 

192.168.109.132
192.168.109.133
192.168.109.134
。。。。。。
pssh -h hosts.txt  -i   hostname 

 四、总结

我们在学习过程中可以使用轻量级自动化运维工具pssh来管理自己的机子,但是公司里面成百上千的服务器用不了

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Steve lu

感谢大佬的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值