关于SSH

来源:互联网 发布:杠杆交易 知乎 编辑:程序博客网 时间:2024/06/05 04:30

SSH是一种网络协议,用于计算机之间的加密登录。

使用SSH进行远程登录

$ ssh user@host 

使用SSH的风险

使用SSH登录整个过程是这样的:
(1)远程主机收到用户的登录请求,把自己的公钥发给用户。
(2)用户使用这个公钥,将登录密码加密后,发送回来。
(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

这个过程本身是安全的,但是实施的时候存在一个风险:如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。
这就是中间人攻击
中间人通过截获服务器发送的公钥,并转发一个自己的公钥给用户,用户在使用该公钥对自己登录密码进行加密,发送回去时,中间人再次截获并使用自己的私钥解密。这样就可以获得用户的登录密码了。
解决方法有二

口令登录

在用户第一次登录服务器时会有以下警告

$ ssh user@hostThe authenticity of host 'host (12.18.429.21)' can't be established.RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.Are you sure you want to continue connecting (yes/no)?

RSA key fingerprint是公钥指纹,可以通过公钥指纹判断该公钥是否是用户登录的网站的公钥。
遗憾的是,公钥指纹无法自己判别,远程主机只能将其公钥指纹贴在网站上供查阅。

公钥登录

若每次都需要输入密码,将会非常麻烦并且有着很大风险。因此,出现了公钥登录。
公钥登录的原理和过程是
(1)用户必须在远程主机上已经保存了自己的公钥
(2)在用户输入登录命令时,远程主机会发送一串随机字符串过来
(3)用户用自己的私钥对该字符串进行加密,加密后发送给远程主机
(4)远程主机在收到加密后的字符串后,用用户的公钥进行解密,解密后比对,发现一致,证明用户身份。允许登录。

0 0
原创粉丝点击