目录
一、什么是SSH服务
SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。
二、ssh服务的作用
SSHD 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。 相比较之前用 Telnet 方式来传输文件要安全很多,因为 Telnet 使用明文传输,SSH 是加密传输。
三、ssh公钥传输原理
客户端发起链接请求
服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
客户端生成密钥对
客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
客户端发送加密值到服务端,服务端用私钥解密,得到Res
服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密
四、ssh加密通讯原理
(1)对称加密
1、概念:
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用
2、常用算法:
在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。
3、特点:
3.1加密方和解密方使用同一个密钥;
3.2加密解密的速度比较快,适合数据比较长时的使用;
3.3密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;
4、优缺点:
对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。 对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担
(2)非对称加密
1、概念 :
非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
2、常用算法
2.1 RSA(RSA algorithm):目前使用最广泛的算法
2.2 DSA(Digital Signature Algorithm):数字签名算法,和 RSA 不同的是 DSA仅能用于数字签名,不能进行数据加密解密,其安全性和RSA相当,但其性能要比RSA快
2.3 ECC(Elliptic curve cryptography,椭圆曲线加密算法)
2.4 ECDSA:Elliptic Curve Digital Signature Algorithm,椭圆曲线签名算法,是ECC和 DSA的结合,相比于RSA算法,ECC 可以使用更小的秘钥,更高的效率,提供更高的安全保障
3、原理:
首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下
5、优缺点 :
相比于对称加密技术,非对称加密技术安全性更好,但性能更慢。
五、ssh黑白名单配置
1、白名单
1、[root@localhost ssh]#vim /etc/ssh/sshd_config
#手动添加
AllowUsers zhangsan@192.168.20.10
#只允许 zhangsan 从192.168.91.101上访问2、[root@localhost ssh]#systemctl restart sshd
#重启服务
2、黑名单
1、[root@localhost .ssh]#vim /etc/ssh/sshd_config
#手动添加
DenyUsers zhangsan@192.168.20.10
#不允许 zhangsan 从192.168.91.101上访问2、[root@localhost ssh]#systemctl restart sshd
#重启服务
六、ssh免密登录配置
1、免密登录:
1、ssh-keygen
#生成一对密钥
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
#密钥的保存路径,root用户默认保存在家目录下,一般不修改
Enter passphrase (empty for no passphrase):
#设置密钥保存文件的密码,也可不设置
Enter same passphrase again:
#确认密码
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:urq+CvRWS/tV1CdTPGE46FIEi+yw/ixfhEgJjpYRb+E root@localhost.localdomain
The key's randomart image is:
#生成的密钥,使用SHA256
+---[RSA 2048]----+
| o.o .o.. o+.|
| B o o . .o.ooo |
| + E + o .o. +...|
|. . . = .... + |
| . = oS... |
|. . + o.. . |
|. o +. o |
| .. .+.o |
| .o=++= |
+----[SHA256]-----+2、cd ~/.ssh
3、ls
id_rsa id_rsa.pub
#生成的密钥文件4、ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.134.20
#将家目录下,隐藏文件ssh的密钥文件传输给192.168.134.20主机
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.134.20's password:
##输入要连接的主机密码Number of key(s) added: 1
Now try logging into the machine, with: "ssh '192.168.134.20'"
and check to make sure that only the key(s) you wanted were added.5、ssh 192.168.134.20
Last login: Thu Nov 16 16:16:11 2023 from 192.168.134.10
2、退出连接:
1、exit
2、logout
#两个命令任选其一即可
3、注意点:
1、以上操作只能test1连接test2时单向免密。
2、若想相互登录免密 需要在test2上面向test1再配置一次。
3、也可以使用脚本,更加方便