SSH(Secure Shell) 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议,利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。
ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务(文件传输功能)
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
一种使用Secure Shell (SSH)协议连接到运行了SSH服务端的远程服务器。
是目前较可靠,专为远程登录会话和其他网络服务提供安全的协议。
有效防止远程管理过程中的信息泄露
传输 数据加密 ,能够防止DNS和IP欺骗
传输 数据压缩 ,加快传输速度
服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
客户端生成密钥对
客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
客户端发送加密值到服务端,服务端用私钥解密,得到Res
服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密
中间人攻击:
如果有一个攻击者中途拦截用户的登录请求,向其发送自己的公钥,用户用攻击者的公钥进行数据加密。攻击者接受到加密信息后再用自己的私钥进行解密从而窃取用户信息,这就是中间人攻击
SSH解决中间人攻击:
1)口令认证
用户会对自己的公钥进行确认,如果是第一次登录对方主机,会出现提示信息,按要求输入密码后就可以登录了
2)公钥认证(SSH提供的免去输入密码的登录方式)
A.用户将自己的公钥放在远程Server上,追加在文件authorized_keys中
B.Server端接收到用户的连接请求后,会在authorized_keys中匹配用户的公钥,并生成随机数R,用用户的公钥对该随机数进行加密得到pubKey®,将加密后的信息发送给用户。
C.用户通过私钥进行解密得到随机数R,然后对随机数R和本次会话的SessionKey利用MD5生成摘要Digest1,发送给Server端
D.Server端会对R和SessionKey利用同样的摘要算法生成Digest2
E.Server端会最后比较Digest1和Digest2是否相同,完成认证过程
服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
sshd_config:为服务器端配置文件,设置与服务端相关的应用可通过此文件实现
客户端配置文件:/etc/ssh/ssh_config
ssh_config:为客户端配置文件,设置与客户端相关的应用可通过此文件实现
对称加密
1、概念
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用
2、常用算法
在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。
3、特点
1、加密方和解密方使用同一个密钥;
2、加密解密的速度比较快,适合数据比较长时的使用;
3、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;
4、优缺点
对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。
对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担
非对称加密
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、优缺点
相比于对称加密技术,非对称加密技术安全性更好,但性能更慢。
ssh [远程主机用户名]@[远程服务器主机名或IP地址] -p port
通式:ssh 服务器地址 选项
-l 选项,指定登录名称。
-p 选项,指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录)
当需要指定端口登录时,需要先修改配置文件
[root@localhost .ssh]#vim /etc/ssh/sshd_config
(生产环境建议修改)
默认使用22端口 root(登录对方的用户)加IP 地址,首次登录会询问,并要求输入密码
当在 Linux 主机上远程连接另一台 Linux 主机时,如当前所登录的用户是 root 的话,当连接另一台主机时也是用 root 用户登录时,可以直接使用 ssh IP,端口默认即可,如果端口不是默认的情况下,需要使用-p 指定端口。
第一步:安装ssh
[root@kylk /etc/ssh 14:05:33]#yum install openssh-server.x86_64 -y
这里服务端和客户端都要安装
第二步,常规三连
同样服务端和客户端
第三步:生成公私钥
[root@kylk ~ 14:17:24]#ssh-keygen
第四步:将公钥文件导入对方用户的指定账号中(也可以不指定,默认为root) 注意路径
[root@localhost ~]$ ssh-copy-id -i .ssh/id_rsa.pub [email protected]
第五步:登录之前所指定的服务器账号
[root@localhost ~]$ ssh [email protected]
这边就不需要密码了,直接登录上来
客户机新建用户xxx,并设置密码
[root@localhost /etc]$ useradd xxx
[root@localhost /etc]$ passwd xxx
进入配置文件:[root@localhost /etc]$ vim sshd_config
讲第17行的默认端口号22改为10086,将18行PermitRootLogin 后面的yse 改成No ,并去掉17行和38行行首的#号,wq保存退出
再次常规三连:
最后进入服务机,常规三连一下,然后连接客户机刚刚创建的xxx用户
[root@localhost /etc/ssh]$ ssh [email protected] -p 10086
这里需要输入密码
查询SELinux的运行模式
[root@localhost /etc/ssh]$ getenforce
允许模式
[root@localhost ~]# setenforce 0
切换成允许模式
[root@localhost /etc/ssh]$ setenforce 1
切换成强制模式