协议
操作环境:
客户端IP:192.168.150.10
服务器IP:192.168.150.1
框架:
传输阶段
建立连接:
客户端发起tcp连接请求,三次握手建立连接
版本协商:
客户端向服务器发送自己的版本号,服务器向客户端回复自己的版本号并发送本端支持的公钥算法/加密算法等列表,协商出两边都支持的版本,当前主要都是sshv2
**协商:
客户端回复本端支持的公钥算法列表,加密算法列表,消息验证码算法列表(MAC),压缩算法列表
两端通过DH算法协商出会话**和会话ID,用于后面通信数据的加密和解密
The server host key is used during key exchange to verify that the client is really talking to the correct server.
For this to be possible, the client must have a priori knowledge of the server's public host key.
服务器的host_key用于**交换期间,检测客户端是否访问的是正确的服务器
认证阶段
密码认证
客户端将用户名密码加密发给服务器进行验证
公钥认证
客户端生成一对公钥和私钥,将公钥存放在服务器上,即可达成免密登录,github使用该方法可以无需用户密码直接下载代码
会话阶段
基于加密的数据方式进行通信
DROPBEAR
一款适用于嵌入式轻量级的ssh程序,官网:https://matt.ucc.asn.au/dropbear/dropbear.html
移植:
依赖zlib库
执行./configure 生成对应的Makefile,可以执行./confiure --help查看生成Makefile的选项
作为服务器
dropbearkey 程序生成公钥
dropbear 开启加载ssh服务
作为客户端
dbclient 客户端程序用于连接ssh服务器
OPENSSH
移植openssh需要三个包:openssh、openssl 和 zlib,地址如下:
• zlib官方下载:http://www.zlib.net/
• openssl官方下载:http://www.openssl.org/source
• openssh官网下载:http://www.openssh.com/portable.html
执行./configure 生成Makefile,执行./configure可指定交叉编译工具链,openssl库、zlib库路径、安装bin文件的路径,具体可以执行./configure --help
应用
环境:windowns10
- 开启ssh服务
设置>应用>应用和功能>可选功能
添加安装OPENSSH服务器
在CMD中输net start ssh即可启动SSH服务,net stop sshd则是停止ssh服务
- 配置免密登录
修改C:\ProgramData\ssh\sshd_config文件,使用公钥认证而不需进行密码认证,如下:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
确保以下2条有注释掉
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
将客户端的公钥内容粘贴至C:\Users\usrname\.ssh\authorized_keys文件中即可。