赞
踩
加密算法分为对称加密算法(私钥算法)和非对称加密算法(公钥算法),其必要两个过程分别是加密和解密。
加密秘钥和解密秘钥相同的算法称为对称加密算法,常用的对称加密算法有以下几个:
除此之外,还有CAST、IDEA以及RC-6以及RC-4等对称加密算法。
非对称加密算法会通过算法生成公钥和私钥一对秘钥,其中公钥可以发送给任何人,而私钥只能自己保留。常见非对称加密算法有RSA算法,该算法长度不定,由人手工指定。并且秘钥的数量是发送数据的人数的两倍,比如2个人使用RSA算法互发数据,那么就得4个秘钥即两对秘钥,其中公钥用来加密,私钥用来解密特定公钥加密的数据。 例如,有两个人A和B互发数据,A必须得先用B的公钥对数据进行加密,然后再由B用自己的私钥进行解密即可。
非对称加密算法在加密大型数据时,速度会很慢,这也是它的缺点。
可以按照如下过程,使用对称和非对称两种加密算法组合来解决数据加密问题,具体过程如下:
为了防止加密数据在传输过程中被篡改,所以需要使用hash算法对传输的数据进行校验,具体内容如下:
为了防止数据发送方抵赖曾发送的数据,增加了数字签名和数字证书,在Linux体系中,数字签名就是将要发送数据的哈希值加上自己的私钥进行加密后的结果。安全的数据传输需要做到以下几点:
针对以上这几个方面,主要有以下解决方案:
ssh是一个协议,全称为secure shell,目前所用的都是ssh2,该协议可以提供远程的连接。并且在windows使用ssh连接Linux或其他远程服务器,必须要指明身份,还需要在/etc/ssh/sshd_config
中将PasswordA......
字段改为yes,具体如下图:
命令格式ssh username@ip地址 -p 端口
,如果不加用户名,直接以ip地址登录,将会默认以当前shell的用户名尝试进行登录,如下:
在rhel8的系统中,ssh相关的配置文件全部在/etc/ssh
目录下,在该目录下面有3对非对称加密秘钥,分别为:
ssh_host_ecdsa_key
ssh_host_ecdsa_key.pub
ssh_host_ed25519_key
ssh_host_ed25519.pub
ssh_host_rsa_key
ssh_host_rsa_key.pub
上面三对秘钥分别是rsa、ed25519、ecdsa,服务端有这些不同的加密算法的文件是为了适配不同种类的客户端所以有多重非对称加密的秘钥。并且该目录下的sshd_config是ssh服务端的配置文件,ssh_config是ssh客户端的配置文件,一般Linux系统自带服务端和客户端,而windows等系统默认不带该客户端。
ssh-keygen -lf ssh_host_ecdsa_key -E 加密算法名
,使用该命令可以生成指定算法的指纹,比如md5就是生成md5格式的指纹。ssh-keygen -lf ssh_host_ecdsa_key -E md5
:生成md5的指纹ssh-keygen -lf ssh_host_ecdsa_key -E SHA1
:生成SHA1的指纹ssh-keygen -lf ssh_host_ecdsa_key -E SHA2
:生成SHA2的指纹ssh-keygen -lf ssh_host_ecdsa_key -E SHA256
:生成SHA256的指纹命令格式:ssh -o StrictHostKeyChecking=no ip地址
,该命令可以跳过主机检验(指纹验证)。
注: ssh在建立连接时会在/家目录/.ssh/known_hosts
文件中保存了对方的公钥,并且还会保存对方的ip地址等信息。也就是说,当使用ssh连接服务端时,会先在自己的家目录下的known_hosts文件中查看是否有相同的地址,如果没有,弹出警示(让用户校验指纹),如果有,直接让用户输入密码,而不需要校验指纹。
例如,当直接进行连接时:
而使用上述命令进行连接时:
ssh配置文件位于/etc/ssh
目录下,名为sshd_config
。在修改为ssh配置文件,需要重启sshd服务,因为修改的配置文件只是在内存里,所以需要重启服务以重新加载配置文件。
ssh配置文件的内容大体如下所示:
# Port 22 //端口号
# ListenAddress 0.0.0.0 //ssh监听的地址0.0.0.0,就表示监听所有的ipv4地址的22端口
#
HostKey /etc/ssh/ssh_host_rsa_key //私钥
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
PermitRootLogin yes //是否允许root通过ssh登录,yes表示允许,no表示不允许
# PubKeyAuthertication yes //如果为yes,表示支持基于公钥的认证(免密登录)
AuthorizedKeysFile .ssh/authorized_keys //表示公钥认证方式开启后,公钥在客户端的存放位置
PasswordAuthentication yes //如果为yes,表示支持密码认证
#X11Forwarding no //如果为yes,表示支持x11转发
在使用vim打开配置文件并修改相应内容并保存退出后,还需要输入以下命令:
setenforce 0
systemctl stop firewalld
systemctl restart sshd
注: /var/log/secure
文件中记录了ssh登录操作的日志。
secure CRT支持密码、公钥键盘交互和GSSAPI四种认证方式,其中基于公钥认证的方式是比密码更为安全的一种方式,并且这种方式可以不用输入密码(但需要注意的是免密登录只是这种认证方式附带的一个属性)。
ssh-keygen
或 ssh-keygen -t 加密方式名称
来生成公钥,具体如下: which to save the key //密钥对的存放目录
Enter passphrase ........ //私钥的密码,可以设置为空
.... agin //重新输入私钥的密码
附: 在sshd配置文件中,AuthorizedKeysFile ./ssh/....
一行指定了基于公钥认证方式的公钥的存放文件。并且只有将公钥传送到具体的某个用户的家目录下,才可以实现该用户的基于公钥的认证。
注: 该配置过程仅针对两个Linux系统而言。
ssh 用户名@ip command
ssh root@12.168.135.63 pwd
:表示以root用户在12.168.135.63上面执行pwd命令,如果命令较为复杂,可以使用双引号将命令引起来。该命令主要用于复制文件,有两种大的用法,具体如下:
scp -P 端口号 本地文件路径 username@ip地址:目标路径
:将本地文件复制到远程Linux系统上scp -P 端口号 username@ip地址:想要copy的路径 本地路径
:将远程Linux系统上指定的文件拷贝到本地-P
:端口-p
:保留原文件的修改时间、访问时间和访问权限该命令可以连接到远程Linux系统上,命令格式为:sftp -p username@ip地址
,进入连接状态后常用的命令如下:
get
:想要下载的路径put
:上传文件windows系统中常用的基于ssh的工具有以下几个:
附: win10已经自带了ssh客户端和服务端了。(需要在应用和功能/可选功能下进行添加,新版本的windows也已经默认自带ssh相关功能)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。