列表 上一篇 下一篇

SSH原理和使用

转载:http://biaobiaoqi.me/blog/2013/04/19/use-ssh/

ssh连接的验证、加密方式

ssh 连接是 CS 模型(客户端-服务器),客户端发出连接申请,服务器对客户端进行验证,再考虑是否接受连接申请。
ssh 的安全加密方式的理论基础是非对称加密体系。而非对称加密中,常见的一种就是 RSA 加密算法。在使用 ssh,务必先弄清楚非对称加密和 rsa 的算法流程。详情参见 RSA 加密算法。
ssh 有两种级别的安全验证:账户口令验证、rsa 加密验证。详细参数,可以在 sshd_config 配置文件中设置(Ubuntu 是/etc/ssh/sshd_config,mac下是/etc/sshd_config)

账号口令验证

直接输入所要登陆的用户的口令是默认的方式。不需要修改配置文件。
如果直接从客户端将用户密码传输到服务器,那么密码信息很容易被中间人截获,从而实现重放攻击。ssh 的实现方式是:

1.客户端向 ssh 服务器发出请求,服务器将自己的公钥返回给客户端;
2.客户端用服务器的公钥加密自己的登录密码,再将信息发送给服务器;
3.服务器接收到客户端传送的密码,用自己的私钥解码,如果结果正确,则同意登录,建立起连接。

这种方式还是有漏洞的,中间人可以假扮成服务器,骗取客户端的密码。

RSA 加密验证

rsa 加密验证方式,充分利用了非对称加密体系的优势,不需要在网络传输密码,完全杜绝了中间人攻击的可能。步骤如下:

准备工作

1.客户端先使用 ssh-keygen 命令,生成私钥和公钥。按照默认配置,私钥会被保存在~/.ssh/id_rsa 中,公钥则在~/.ssh/id_rsa.pub 中。(一般别修改这里的文件)
2.客户端通过安全的方式将公钥发送给服务器。在服务器端,将客户端发的公钥写入到~/.ssh/authorized_keys 文件末尾。

建立连接

1.客户端发出申请。服务器产生 session 密钥对,返回通过对应客户端的公钥加密后的 session 公钥。
2.客户端用自己的密钥解密信息,得到 session 公钥。
3.之后的数据交互,都通过对方方公钥加密,对方收到信息后,用其私钥解密,实现安全加密过程。