17.ssh服务 - xiaoxiaoxuegao/rhcsa GitHub Wiki

telnet 不安全的shell 所有的信息都在报文里 抓包可以看见密码,而且很难。

一.安全

1.数据的私密性(数据必须得是加密的):加密的数据被黑客获取后,黑客不能破解

2.数据的完整性(得到的数据不能是被篡改过的数据):如果数据被黑客获取到了,黑客更改了内容,用户必须能发现数据被改动过

3.数据的不可抵赖性(得到的数据,必须确定是对方本人发送的,对方不可抵赖)

4.数据发送者的身份认证:用户在收到数据之后,必须确定该数据是对端用户发送过来的,不是其他人冒充对端用户给我发送的数据

如何保证(对应上面四条):

1)必须得有加密算法(解决数据的私密性):

a.对成加密算法:有一个key

A+key=B B+key=A :A是加密前的数据,B是加密后的数据(一个秘钥能加密也能解密即钥匙能把锁锁上也能把锁打开)

存在问题:A如何把秘钥给B传过去?

随着人数增场,需要的秘钥成指数增长n(n-1)/2

重放攻击:仅仅是加密的数据,例如去银行取钱,输入密码,可以把密码截获再发送一次

常用的对称加密算法:DES 3DES AES …….

b.非对称加密算法:会生成俩个key一个叫做公钥(public key)可以公开,一个叫做私钥(private key)本地唯一的,不能丢失的

A+pubkey=B,B+prikey=A; A+prikey=C,C+pubkey=A(即,公钥加密必须私钥解开,私钥加密,必须公钥解开)

每个人都生成自己的公钥和私钥,再给对方发数据时,用对方的公钥加密数据发给对方,对方用自己的私钥解开数据。

存在问题:虽然能实现数据安全,但是加密效率非常低,一般数据加密没有使用它的

中间人攻击:黑客冒充对方,把自己的公钥发给别人,别人发送数据时截获用自己的私钥解密,(身份认证必须有的)

常用的非加密算法:RSA (三个人) DSA …….

c.现在使用非对称加密算法来加密对称秘钥,再用对称秘钥加密数据

2)哈希算法hash(解决数据的完整性问题)

md5(128bit) sha-1 sha-256 sha-384 sha-512(512bit) 越长越安全

哈西算法能将任何数据都使用该算法生成(信息摘要)

哈西算法的源文件不发生变化,哈西结果就不会发生变化(对比源哈西和发送之后的哈西值,不一样就说明篡改了)

例:2亿字的小说(md5) 128bit

2万字的小说(md5) 128bit

3)数字签名

4)数字证书,或者预共享秘钥

二.SSH = Secure Shell 安全的shell

ifconfig查看ip

ssh ip地址 会有一个唯一的指纹(其实就是哈西值)

cd /etc/ ssh 下的ssh_host_ecdsa_key 里 : ssh-keygen -l -f ssh_host_ecdsa_key 提取指纹

ssh连接必须指定用户名和密码 ssh 用户名@ip地址

第一次连接会有指纹,第二次连接就不用了,用公钥就可以

ssh可以不用密码登录采用公钥验证方式登录:B用A的秘钥多次给A发送随机数,看能不能解开,能解开说明A有私钥,那认为就是A,只要输入密码就不安全,易受重放攻击,随机数防止重放攻击

ssh-keygen -t 秘钥类型

cd /etc/ ssh 下 id_rsh 私钥 , id_rsh.pub 公钥

密码禁用:cd /etc/ ssh 下的 sshd_config 里的密码验证yes改成no,退出ssh再重新登录,就不能用密码登录了,只能用公钥登录,应用场景:服务器刚建立时

实现公钥验证方式具体步骤:

客户端操作:

1).ssh-keygen 一路回车,生成RSA的非对称密钥

2)更改远程服务器cd /etc/ ssh 下的 sshd_config 里的密码验证(PasswordAuthentication yes)yes改成no, PermitLocalCommand no 改成yes,退出ssh再重新登录(systemctl restart sshd)

3).该密钥在当前用户的家目录下的.ssh目录里

4).然后通过ssh-copy-id -i ~/ .ssh/公钥 用户名@地址(远程服务器的域名)

5).然后客户端就可以远程登录服务器,且不需要输入密码

.装一个字符界面的系统-》测试基于秘要的认证方式登录服务器

ssh命令:

ssh username@远程地址 就可以远程登录

ssh -X username @地址 就可以调用图形界面