SSH协议相关
一、概述
SSH,Secure Shell,建立在应用层和传输层上的安全协议,最大的特点是所有传输数据加密,相比传统的telnet、ftp等明文传输连接方式更加安全可靠。
由传输层协议TRANS、用户认证协议USERAUTH和连接协议CONNECT三部分组成。
二、连接过程
服务端后台常驻守护进程,用于响应客户端的连接请求。
首先,本地客户端向远程服务端发送连接请求。
接下来,服务端检查请求信息并发送密钥给客户端。
最后,客户端再将密钥返回给服务端,最终建立连接。
建立连接后,服务端会对客户端进行身份认证以确定是否向其开放访问权限。
三、加密方法
3.1 口令
使用账号密码登录远程主机,可能会受到“中间人”攻击。
3.2 密钥
3.2.1 对称加密 VS 非对称加密
对称加密的双方使用同一个密钥或一对能够互相推断的密钥对对信息进行加密和解密,对称加密通常用于连接会话session中
非对称加密需要用到公钥和私钥两个密钥,两个密钥间单向加密,公钥加密的信息可以由私钥解密,而私钥加密的信息公钥无法由公钥解密。非对称加密常用于建立连接和身份认证过程中。
3.2.2 密钥的使用
客户端向服务端发起TCP连接,服务端提供自己的公钥以让客户端确认连接对象无误。
接下来,双方使用Diffle-Hellman算法,通过共享私有数据和公有数据生成对称式密钥,进而建立会话加密通道,进入身份验证阶段。
a) 客户端发送自己的密钥ID给服务端
b) 服务端在authorized_keys中查找对应的公钥
c) 服务端使用该公钥加密信息发送给客户端
d) 客户端使用私钥解密信息,做MD5哈希,并返回给服务端
e) 服务端将原信息做MD5哈希,并用对称式密钥加密,与接收到的哈希加密信息进行比对
f) 验证通过,服务端将向客户端开放访问权限
四、常用指令
4.1 生成密钥 ssh-keygen -t(加密算法) -b(密钥长度) -p(私钥加密密码) -f(密钥保存路径)
4.2 建立连接 ssh [options] user@host -p(端口) -i(密钥文件路径)
4.3 向服务端发送公钥 ssh-copy-id [options] user@host -p(端口) -i(密钥文件路径)
4.4 拷贝文件或目录 scp [options] file_source file_target -P(端口) -i(密钥文件路径) -p(保留文件原始信息) -r(递归复制整个目录)
4.5 安全文件传输协议 sftp [options] user@host -p(端口) -i(密钥文件路径); put file_source(上传文件); get file_target(下载文件); exit/quit(退出)
五、known_hosts
客户端首次连接到服务端,服务端会将公钥发送给客户端,此时客户端会将其存入 known_hosts文件中。
之后的每次连接,客户端核对服务端发送的公钥与记录是否相一致,避免受到DNS劫持攻击。
记录格式:IP地址 + 加密方式 + 公钥

浙公网安备 33010602011771号