简要
基于网络的连接(telnet,ftp)方便高效,但其是基于明文的通信,容易被窃取、篡改和攻击,存在网络安全问题,尤其在进行远程访问时,穿过复杂未知的公网环境非常危险,为此各种加密网络协议,通过加密加密算法保证内容的保密性和安全性。常用的加密网络协议有:ssh,sftp,scp,https 等。
特别说明,加密网络通信功能需要在内核 V3.0.0 之后才支持,且是以中间件方式提供而不是内核自带,需要用 IDE V6.0 才能自动生成。
编译部署加密功能组件
SylixOS中的加密通信服务不是由内核提供而是通过功能组件提供的,创建base时需要添加openssl,openssh和zlib三个相关组件,编译并部署到目标设备中。
这几个库最终提供了SSH,SFTP和SCP等一组加密通信功能。
初始化本机密钥
- 执行/usr/bin/ssh-keygen,生成root用户rsa密钥对。执行过程会有一些配置请求,不进行特殊配置的话一直回车即可,默认配置完成后将在/root/.ssh/下生成公钥与私钥。然后拷贝公钥并命名为authorized_keys。如果需要为其他用户提供加密通信服务,需要在用户主目录下执行相同命令,以生成该用户的密钥对。
[root@sylixos:/root]# /usr/bin/ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #可输入秘钥存储路径,直接回车则使用括号中的默认路径
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):#可选择为rsa密钥对附加密码,直接回车则无密码
Enter same passphrase again:#再次输入密码以确认
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:xw+73n/PIV/ge2tDe2pz2/Shg4mi67KikesEhSEmgFY root@sylixos
The key's randomart image is:
+---[RSA 3072]----+
|B..E |
|=+ |
|o . |
| . . |
|. S + . |
|.. . + . o |
|o. o +.oo+|
|.+ . . . = .*B@|
|=...++o ..o .+*X@|
+----[SHA256]-----+
[root@sylixos:/root]#
[root@sylixos:/root]# ls .ssh/ #查看生成的SRA密钥对
id_rsa id_rsa.pub
[root@sylixos:/root]#
[root@sylixos:/root]# cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys #复制公钥以和程序预期一致
copy complete. size:566(Bytes) time:0(s) speed:566(Bps)
[root@sylixos:/root]# ls .ssh/
authorized_keys id_rsa id_rsa.pub
[root@sylixos:/root]#
- 执行/usr/bin/ssh-keygen -A,将在/etc/ssh目录下生成系统默认密钥。
[root@sylixos:/root]# /usr/bin/ssh-keygen -A
ssh-keygen: generating new host keys: RSA #密钥生成过程执行较久,请耐心等待
ECDSA ED25519
[root@sylixos:/root]# ls /etc/ssh/
ssh_config ssh_host_ed25519_key ssh_host_rsa_key.pub
ssh_host_ecdsa_key ssh_host_ed25519_key.pub sshd_config
ssh_host_ecdsa_key.pub ssh_host_rsa_key
[root@sylixos:/root]#
以上步骤执行完毕,系统就具备加密通信的条件了。
SSH 服务功能
为SylixOS系统部署加密通信组件并初始化本机密钥后,ssh服务默认是没有上电开启的,需要手动启动。执行/usr/sbin/sshd程序即可启动ssh服务,注意必须使用绝对路径。需要开启自启动的话,将该命令加入启动脚本/etc/startup.sh中即可。
ps命令查看有sshd进程则说明ssh服务启动成功。
[root@sylixos:/root]# /usr/sbin/sshd
[root@sylixos:/root]# ps
NAME FATHER STAT PID GRP MEMORY UID GID USER
---------------- ---------------- ---- ----- ----- ---------- ----- ----- ------
kernel <orphan> R 0 0 0KB 0 0 root
sshd <orphan> R 16 16 6564KB 0 0 root
total vprocess: 2
[root@sylixos:/root]#
然后就可以通过各种标准客户端通过ssh来登录目标系统了。
RealEvo IDE通过ssh连接设备。
SecureCRT下ssh登录效果如下:
Windows下powershell登录效果如下:
使用SFTP进行文件传输
RealEvo IDE下通过SFTP连接设备效果。注意,如果ide下创建设备链接使用的是加密模式,则所有和设备间的通信,包括命令行,文件传输,调试,系统监控等都是使用的加密模式。
filezilla软件下进行SFTP传输效果。