- 一、SSH服务
- 1.1 SSH基础
- 1.1.1什么是SSH服务器?
- 1.1.2 SSH的优点
- 1.1.3常见的ssh协议
- 1.2ssh原理
- 1.2.1公钥传输原理
- 1.2.2 ssh加密通讯原理
- 1.2.2登录
- 1.2.3服务端配置
- 1.3轻量级自动化运维工具pssh
- SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能;
- SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令;
- SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。
- 数据传输是加密的,可以防止信息泄漏
- 数据传输是压缩的,可以提高传输速度
客户端: Linux Client: ssh, scp, sftp,slogin Windows Client:xshell,MobaXterm,putty, securecrt, sshsecureshellclient
OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、 Linux 操作系统。Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。
执行"systemctl start sshd"命令即可启动sshd 服务
sshd 服务默认使用的是TCP的22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)
sshd服务的默认配置文件是/etc/ssh/sshd_config
ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于前者是针对客户端的配置文件,后者则是针对服务端的配置文件。
服务名称:sshd 服务端主程序:/usr/sbin/sshd 服务端配置文件:/etc/ssh/sshd_config 客户端配置文件:/etc/ssh/ssh_configan>1.2ssh原理 1.2.1公钥传输原理
-
客户端发起链接请求
-
服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
-
客户端生成密钥对
-
客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
-
客户端发送加密后的值到服务端,服务端用私钥解密,得到Res
-
服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
-
最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都
会被加密
(1)对称加密
1、概念
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用
2、常用算法
在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。
3、特点
1、加密方和解密方使用同一个密钥;
2、加密解密的速度比较快,适合数据比较长时的使用;
3、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;
4、优缺点
对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。
对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担
(2)非对称加密
1、概念
非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
2、常用算法
RSA(RSA algorithm):目前使用最广泛的算法
DSA(Digital Signature Algorithm):数字签名算法,和 RSA 不同的是 DSA
仅能用于数字签名,不能进行数据加密解密,其安全性和RSA相当,但其性能要比RSA快
ECC(Elliptic curve cryptography,椭圆曲线加密算法)
ECDSA:Elliptic Curve Digital Signature Algorithm,椭圆曲线签名算法,是ECC和 DSA
的结合,相比于RSA算法,ECC 可以使用更小的秘钥,更高的效率,提供更高的安全保障
3、原理
首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下
5、优缺点
相比于对称加密技术,非对称加密技术安全性更好,但性能更慢。
此本次实验中,我们用非对称加密算法ECDSA进行加密,为了方便用root用户,也可给其他普通用户配置
1.2.2登录#登录 方法一: ssh [远程主机用户名]@[远程服务器主机名或IP地址] -p port 当在 Linux 主机上远程连接另一台 Linux 主机时,如当前所登录的用户是 root 的话,当连接另一台主机时也是用 root 用户登录时,可以直接使用 ssh IP,端口默认即可,如果端口不是默认的情况下,需要使用-p 指定端口。 例子: [root@ky15 ~]#ssh root@192.168.91.101 #默认使用22端口 root(登录对方的用户)加IP 地址,首次登录会询问,并要求输入密码 The authenticity of host '192.168.59.117(192.168.59.107)' can't be established. ECDSA key fingerprint is SHA256:o72+YjT+8laQRofsv2dFlcx099aeoI92rloek3ZVrUY. ECDSA key fingerprint is MD5:a7:9c:69:35:16:17:21:cb:0e:4f:0d:42:44:16:3a:f7. Are you sure you want to continue connecting (yes/no)? root@192.168.59.101's password: Last login: Tue Sep 28 22:23:52 2021 [root@ky15-1 ~]# #登录方法二 ssh -l [远程主机用户名] [远程服务器主机名或IP 地址] -p port -l :-l 选项,指定登录名称。 -p:-p 选项,指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录) 例子: [root@ky15 ~]#ssh -l root 192.168.59.117 root@192.168.91.101's password: Last login: Tue Sep 28 22:25:40 2021 from 192.168.59.1021.2.3服务端配置
1.sshd服务支持登录验证方式
- 密码验证:
以服务器中本地系统用户的登录名称、密码进行验证。这种方式使用最为简便,但从客户机角度来看,正在连接的服务器有可能被假冒,从服务器角度来看,当遭遇密码暴力破解攻击时防御能力比较弱。 - 密钥对验证:
要求提供相匹配的密钥信息才能通过验证,通常先在客户机中创建一对密钥文件(公钥和私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证,增强了远程管理的安全性。- 公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密;
- 不能根据一个密码来推算出另一个密钥;
- 公钥对外公开,私钥只有私钥的持有人才知道。
2.基于密钥常用配置项
#生成密钥文件 [root@localhost ~]# ssh-keygen -t ecdsa (如果设置免密登录,则重新设置,不设置密码,一路回车) #将公钥文件导入对方用户的 注意路径 [root@localhost .ssh]# ssh-copy-id -i /root/.ssh/id_ecdsa.pub root@192.168.59.117 #登录客户机
1.生成密钥文件
[root@localhost ~]# ssh-keygen -t ecdsa Generating public/private ecdsa key pair. Enter file in which to save the key (/root/.ssh/id_ecdsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_ecdsa. Your public key has been saved in /root/.ssh/id_ecdsa.pub. The key fingerprint is: SHA256:gzl0K6d+RkHeNUiGjS3uvvi3GwLxaf3DXDmgVlUmIIQ root@localhost.localdomain The key's randomart image is: +---[ECDSA 256]---+ | O=...o.o| | E.+.o. o | | o+.o .o. | | . *++.o . . | | *.S.+ + | | Boo + . . | | .o. . = | | . .+... . | | o+oooo | +----[SHA256]-----+ [root@localhost ~]# ^C [root@localhost ~]#
生成文件
[root@localhost ~]# cd /root/.ssh/ [root@localhost .ssh]# ls id_ecdsa id_ecdsa.pub [root@localhost .ssh]#
2.将公钥文件导入对方用户的 注意路径
3.登录客户机
-
EPEL源中提供了多个自动化运维工具 pssh:基于python编写,可在多台服务器上执行命令的工具,也可实现文件复制,提供了基于ssh
和scp的多个并行工具,项目:http://code.google.com/p/parallel-ssh/
-
pdsh:Parallel remote shell program,是一个多线程远程shell客户端,可以并行执行多个远程主机上的命令。
可使用几种不同的远程shell服务,包括rsh,Kerberos IV和ssh,项目: https://p
dsh.googlecode.com/ -
mussh:Multihost SSH wrapper,是一个shell脚本,允许使用命令在多个主机上通过ssh执行命
令。 可使用ssh-agent和RSA/DSA密钥,以减少输入密码,项目:http://www.sourceforge.net/pr
ojects/mussh
pssh 命令选项如下:
-H:主机字符串,内容格式”[user@]host[:port]” -h file:主机列表文件,内容格式”[user@]host[:port]” -A:手动输入密码模式 -i:每个服务器内部处理信息输出 -l:登录使用的用户名 -p:并发的线程数【可选】 -o:输出的文件目录【可选】 -e:错误输出文件【可选】 -t:TIMEOUT 超时时间设置,0无限制【可选】 -O:SSH的选项 -P:打印出服务器返回信息 -v:详细模式 --version:查看版本
pssh 配置步骤
#安装需要配置开发源
[root@localhost ~]## cd /etc/yum.repos.d
[root@localhost ~]## vim CentOS-base.repo
#最后一行添加
[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
#清除缓存
[root@localhost yum.repos.d]# yum clean all
#安装pssh
[root@localhost yum.repos.d]# yum install pssh -y
#生成密钥,一路回车
[root@localhost yum.repos.d]# ssh-keygen
#上传秘钥对
[root@localhost .ssh]# ssh-copy-id 192.168.59.102
[root@localhost .ssh]# ssh-copy-id 192.168.59.108
#同时管理查看多台客户机的某文件
[root@localhost .ssh]# pssh -H "192.168.59.102 192.168.59.108" -i cat /etc/passwd



