Linux网路服务之SSH服务

x33g5p2x  于2021-10-06 转载在 Linux  
字(3.6k)|赞(0)|评价(0)|浏览(152)

SSH服务

1.1 SSH基础

1.1.1什么是SSH服务器?

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

SSH客户端<--------------网络---------------->SSH服务端

1.1.2SSH优点

数据传输是加密的,可以防止信息泄漏
*
数据传输是压缩的,可以提高传输速度

1.1.3常见的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.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.102

1.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.生成密钥文件

2.将公钥文件导入对方用户的 注意路径

3登录客户机

1.3轻量级自动化运维工具pssh

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

相关文章