SSH命令探究:
之前连接远程主机时,记得使用过SSH,但当时只是跟着教程走了一遍,并没有去了解其真正的工作原理。借着这次机会探究一下SSH到底是如何工作的。
-
之前连接云主机过程:
ssh 用户名@服务器IP
之后给出了主机的椭圆曲线加密的公钥的SHA-256的哈希值,自己可以用SHA-256验证其hash值是否正确。然后再输入密码去连接。
登录了之后便可以操作远程主机啦。比如为其安装程序等等之类。
-
原理:
之前登录时也有提示:
The authenticity of host ***.***.***.***can't be established. RSA key fingerprint is 256位的数字。 Are you sure you want to continue connecting (yes/no)?
联想到之前郭燕老师的区块链技术中讲述的非对称加密算法中的RSA。考虑:我这是自己的云主机又不是网站没有CA签名的数字证书,怎么保证身份验证呢? ——————————>SSH是如何避免中间人攻击呢?
-
解释为什么会有中间人攻击:
RSA算法工作流程:
1.客户端与服务器协商一个用来加密的数字。——————————>攻击者可冒充服务器与客户端建立连接,再冒充客户端与服务器进行连接。
2.各自再选择一个私钥并与协商的公钥一起计算得到各自的值。
3.再把该值发送给对方
4.服务器与客户端再拿着对方发来的值与自己的私钥计算便得到了公共的私钥。之后可以使用它来加密信息。
-
接着怎么避免中间人攻击呢?
答案远在天边近在眼前。第一次登录时的信息不就是给我了RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d. 吗? 查询得知是对RSApublickey进行了SHA-256. 原来要手动自己验证啊。怪不得要提示我!
-
之后就是验证过程了。
root@tlxclmm:~# ll /etc/ssh total 588 drwxr-xr-x 2 root root 4096 Nov 24 03:00 ./ drwxr-xr-x 92 root root 4096 Nov 24 03:06 ../ -rw-r--r-- 1 root root 553122 Mar 4 2019 moduli -rw-r--r-- 1 root root 1580 Mar 4 2019 ssh_config -rw-r--r-- 1 root root 3249 Oct 10 06:32 sshd_config -rw------- 1 root root 227 Nov 24 03:00 ssh_host_ecdsa_key -rw-r--r-- 1 root root 172 Nov 24 03:00 ssh_host_ecdsa_key.pub -rw------- 1 root root 399 Nov 24 03:00 ssh_host_ed25519_key -rw-r--r-- 1 root root 92 Nov 24 03:00 ssh_host_ed25519_key.pub -rw------- 1 root root 1679 Nov 24 03:00 ssh_host_rsa_key -rw-r--r-- 1 root root 392 Nov 24 03:00 ssh_host_rsa_key.pub -rw-r--r-- 1 root root 338 Oct 10 06:31 ssh_import_id
就在其中,然而并不是第一次登陆,就没有对比了。 ——————>经过查询确实是这样来防止中间人攻击的。
水平有限,请批评指正。