基于加密网络的连接
基于网络的连接(telnet,ftp)方便高效,但是基于明文的通信,容易被窃取、篡改和攻击,存在网络安全问题,尤其在进行远程访问时,穿过复杂未知的公网环境非常危险,为此各种加密网络协议,通过加密加密算法保证内容的保密性和安全性。常用的加密网络协议有:SSH、SFTP、SCP、HTTPS等。
协议介绍
SSH 协议介绍
SSH (Secure Shell) 是一种用于安全远程访问计算机的协议。它提供了强大的加密和身份验证机制,可以确保您的远程访问是安全的。
SSH 协议分两个版本,SSH1 和 SSH2。SSH2 协议是在 SSH1 的基础上发展而来,它使用了更先进的加密算法和更可靠的身份验证机制。SSH2 协议支持以下三种身份验证方式:
- 密码身份验证:即用户输入密码进行身份验证。
- 公钥身份验证:使用公钥和私钥进行身份验证,这种方式更加安全。
- Kerberos 身份验证:使用 Kerberos 认证机制进行身份验证。
SSH2 协议还支持多种加密算法,包括AES、3DES、Blowfish 等,这些算法都是非常安全的。此外,SSH2 协议还支持端口转发和 X11 转发等功能,使得远程访问计算机更加方便和灵活。
SFTP 协议介绍
SFTP(SSHFile Transfer Protocol,也称 Secret File Transfer Protocol)是一种安全的文件传输协议,一种通过网络传输文件的安全方法,它确保使用私有并安全的数据流来安全地传输数据。
SFTP 要求客户端用户必须由服务器进行身份验证,并且数据传输必须通过安全通道(SSH)进行,即不传输明文密码或文件数据。它允许对远程文件执行各种操作,有点像远程文件系统协议。SFTP 允许从暂停传输、目录列表和远程文件删除等操作中恢复。
SFTP 和FTP非常相似,都支持批量传输(一次传输多个文件),文件夹/目录导航,文件移动,文件夹/目录创建,文件删除等。但还是存在着差异,下面我们来看看 SFTP 和 FTP 之间的区别:
安全通道
FTP不提供任何安全通道来在主机之间传输文件;而 SFTP 协议提供了一个安全通道,用于在网络上的主机之间传输文件。
使用的协议
FTP使用 TCP/IP 协议。而 SFTP 是 SSH 协议的一部分,它是一种远程登录信息。
链接方式
FTP使用 TCP 端口 21 建立连接。而 SFTP 是在客户端和服务器之间通过 SSH 协议(TCP 端口 22)建立的安全连接来传输文件。
安全性
FTP密码和数据以纯文本格式发送,大多数情况下是不加密的,安全性不高。而 SFTP 会在发送之前加密数据,二进制的形式传递,是无法 "按原样" 阅读的,安全性较高。
SCP 命令介绍
SCP是Secure Copy Protocol的缩写, SCP
命令是基于SSH安全通信的远程文件拷贝命令。和 CP
命令类似,SCP也是把一个源文件拷贝到目标文件处,但 CP
命令用于本机内部各目录间拷贝,而SCP用于本机和远程主机间文件拷贝,且拷贝是基于SSH安全通信的,保证内容不被窃取、篡改。
SylixOS 加密网络通信前期准备
SylixOS 在内核 V3.0.0 之后才支持加密网络通信,是以中间件方式提供而不是内核自带,需要用IDEV6.0 来创建 base 工程。在 SylixOS 加密网络通信之前需要先部署相关动态支持库和应用程序,并初始化系统和用户密钥。
编译部署加密功能组件
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]#
以上步骤执行完毕,系统就具备加密通信的条件了。
SylixOS 做 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来登录目标系统了。
RealEvoIDE通过 SSH 连接设备。
SecureCRT 下 SSH 登录效果如下:
Windows下PowerShell登录效果如下:
Linux(debian12) 下登录效果如下:
SylixOS 做 SSH 客户端使用
SylixOS 可以使用 ssh
命令作为客户端登录其他主机。
命令基本格式为: ssh user@ip
[root@sylixos:/root]# ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
[-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
[-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
[-i identity_file] [-J [user@]host[:port]] [-L address]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-Q query_option] [-R address] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] destination [command [argument ...]]
[root@sylixos:/root]#
下面是SylixOS系统下登录Linux系统下的scilogyhunter用户。
[root@sylixos:/root]#
[root@sylixos:/root]# ssh scilogyhunter@192.168.196.106
The authenticity of host '192.168.196.106 (192.168.196.106)' can't be established.
ED25519 key fingerprint is SHA256:Vl4CF4Zs753mES3G42ZhSJ2k0d9GKpl9/SuVIA/76PQ.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.196.106' (ED25519) to the list of known hosts.
scilogyhunter@192.168.196.106's password:
Linux debian11 5.15.107-2-pve #1 SMP PVE 5.15.107-2 (2023-05-10T09:10Z) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Jul 21 06:55:26 2023
scilogyhunter@debian11:~$
scilogyhunter@debian11:~$ exit
logout
Connection to 192.168.196.106 closed.
[root@sylixos:/root]#
下面是SylixOS系统下登录另一台SylixOS系统的root用户。
[root@sylixos:/root]#
[root@sylixos:/root]# ssh root@192.168.196.89
The authenticity of host '192.168.196.89 (192.168.196.89)' can't be established.
ED25519 key fingerprint is SHA256:CDvKOBvbRBWNhtcG+ws4WKrr8Z5QRO5bR2sTBYbGrVQ.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.196.89' (ED25519) to the list of known hosts.
[[ (R)
[[[[ [[[[ [[ [[[[ [[[[
[[ [[ [[ [[ [[ [[ [[
[[ [[ [[ [[ [[[[ [[ [[ [[ [[ [[
[[ [[ [[ [[ [[ [[ [[ [[ [[ [[
[[ [[ [[ [[ [[ [[[[ [[ [[ [[
[[ [[ [[ [[ [[ [[ [[ [[ [[
[[ [[ [[ [[ [[ [[[[ [[ [[ [[
[[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[
[[[[ [[[[ [[[[[[ [[[[[[ [[ [[ [[[[ [[[[
[[
[[ KERNEL: LongWing(C) 3.2.1
[[[[ COPYRIGHT ACOINFO Co. Ltd. 2006 - 2023
SylixOS license: Commercial & GPL.
SylixOS kernel version: 3.2.1 Code name: Cen-Ci swords
CPU : Intel(R) Celeron(R) N5105 @ 2.00GHz
CACHE : L1 D-CACHE 32KB L1 I-CACHE 32KB L2 U-CACHE 4MB L3 U-CACHE 16MB
PACKET : Standard PC Compatibles (32-Bits)
ROM SIZE: 0x00100000 Bytes (0x00000000 - 0x000fffff)
RAM SIZE: 0x10000000 Bytes (0x00000000 - 0x0fffffff)
BSP : BSP version 1.2.0 for Cen-Ci swords
[root@sylixos2:/root]#
[root@sylixos2:/root]# exit
Connection to 192.168.196.89 closed by remote host.
Connection to 192.168.196.89 closed.
[root@sylixos:/root]#
SylixOS 做 SFTP 服务端使用
RealEvoIDE下通过SFTP连接设备效果。注意,如果IDE下创建设备链接使用的是加密模式,则所有和设备间的通信,包括命令行、文件传输、调试、系统监控等都是使用的加密模式。
filezilla软件下进行SFTP传输效果。
SylixOS 下使用 SCP 进行文件传输
[root@sylixos:/root]# scp
usage: scp [-346ABCOpqRrsTv] [-c cipher] [-D sftp_server_path] [-F ssh_config]
[-i identity_file] [-J destination] [-l limit] [-o ssh_option]
[-P port] [-S program] [-X sftp_option] source ... target
[root@sylixos:/root]#
从将Debian12系统的scilogyhunter用户主目录下的文件 updateaptsource.sh
拷贝到SylixOS系统的root用户主目录下。
[root@sylixos:/root]#
[root@sylixos:/root]# ls
.ssh
[root@sylixos:/root]# scp scilogyhunter@192.168.196.106:updateaptsource.sh .
scilogyhunter@192.168.196.106's password:
[root@sylixos:/root]# ls
.ssh updateaptsource.sh
[root@sylixos:/root]#
将本机文件 updateaptsource.sh
拷贝到另一台SylixOS系统的root用户主目录下,并以test重新命名文件。
[root@sylixos:/root]#
[root@sylixos:/root]# scp updateaptsource.sh root@192.168.196.89:/root/test
The authenticity of host '192.168.196.89 (192.168.196.89)' can't be established.
ED25519 key fingerprint is SHA256:CDvKOBvbRBWNhtcG+ws4WKrr8Z5QRO5bR2sTBYbGrVQ.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.196.89' (ED25519) to the list of known hosts.
[root@sylixos:/root]#
Windows下PowerShell中使用 scp
命令拷贝数据给SylixOS。
PS C:\> cd .\User\
PS C:\User> ls
目录: C:\User
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2023/7/19 17:09 FileZilla-3.62.2
d----- 2023/7/19 16:22 SecureCRT_Portable
d----- 2023/7/18 19:59 test
d----- 2023/7/21 14:04 x86
-a---- 2023/7/17 14:26 2071882269 RealEvo-6.0.6.exe
-a---- 2023/7/18 19:59 9878 test.txt
PS C:\User>
PS C:\User> scp ./test.txt root@192.168.196.88:/root/test
The authenticity of host '192.168.196.88 (192.168.196.88)' can't be established.
ECDSA key fingerprint is SHA256:/KQE6i/kwwi+IDPiGOFjgVonAfofy+5TYV0nM77bczM.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
root@192.168.196.88's password:
test.txt 100% 9878 617.2KB/s 00:00
PS C:\User>