SSH ( Secure Shell )
SSH协议是基于应用层的协议,为远程登录会话和其他网络服务提供安全性的协议。SSH使用最多的是远程登录和传输文件,实现此功能的传统协议都不安全(ftp,telnet等),因为它们使用明文传输数据。而SSH在传输过程中的数据是加密的,安全性更高。
工作原理
-
初始化阶段
采用非对称加密算法完成通信双方进行会话密钥的协商。
-
传输阶段
采用对称加密算法,用初始化阶段协商的密钥来对称加密传输。
具体过程:
- client:发起一个连接
- server:收到连接后,将关键信息(服务器公钥、支持的加密算法等)发给client
- client:在known_hosts验证server的公钥。没找到则
continue connecting (yes/no)?
,决定采用支持哪种算法。 - 生成会话密钥。此时,客户端已经拥有了服务端的公钥。接下来,客户端和服务端需要协商出一个双方都认可的密钥,并以此来对双方后续的通信内容进行加密。 密钥协商是通过
Diffie - Hellman
算法 - client:发送公钥id给server
- server:根据
authorized_keys
验证公钥,加密随机数给client - client: 解密消息后获得随机数,之后随机数和当前会话密钥共同生成MD5值(校验数据完整性)
- server:解密MD5值,通过会话密钥结算MD5值,验证相等通过,连接建立
操作
A要登陆到B服务器
-
B服务器生成密钥,目录
~/.ssh/
ssh-keygen -t rsa ls ~/.ssh/ id_rsa.pub id_rsa
-
A服务器获取B的公钥到
~/.ssh/authorized_keys
scp B@user:~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
-
A服务器验证登陆
ssh B-ip 首次登陆要确认
网友评论