使用 ssh 服务管理远程主机

配置 sshd 服务

SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理
Linux 系统的首选方式。在此之前,一般使用 FTP 或 Telnet 来进行远程登录。但是因为它们
以明文的形式在网络中传输账户密码和数据信息,因此很不安全。

想要使用 SSH 协议来远程管理 Linux 系统,则需要部署配置 sshd 服务程序。sshd 是基于 SSH
协议开发的一款远程管理服务程序,不仅使用起来方便快捷,而且能够提供两种安全验证的方法:
➢ 基于口令的验证 — 用账户和密码来验证登录;

➢ 基于密钥的验证 — 需要在本地生成密钥对,然后把密钥对中的公钥上传至服务器,
并与服务器中的公钥进行比较;该方式相较来说更安全。

配置

Port 22 默认的 sshd 服务端口
ListenAddress 0.0.0.0 设定 sshd 服务器监听的 IP 地址
Protocol 2 SSH 协议的版本号
HostKey /etc/ssh/ssh_host_key SSH 协议版本为 1 时,DES 私钥存放的位置
HostKey /etc/ssh/ssh_host_rsa_key SSH 协议版本为 2 时,RSA 私钥存放的位置
HostKey /etc/ssh/ssh_host_dsa_key SSH 协议版本为 2 时,DSA 私钥存放的位置
PermitRootLogin yes 设定是否允许 root 管理员直接登录
StrictModes yes 当远程用户的私钥改变时直接拒绝连接
MaxAuthTries 6 最大密码尝试次数
MaxSessions 10 最大终端数
PasswordAuthentication yes 是否允许密码验证
PermitEmptyPasswords no 是否允许空密码登录(很不安全)

sshd 服务的配置信息保存在/etc/ssh/sshd_config 文件中。

# cat /etc/ssh/sshd_config

密码登录

在 RHEL 7 系统中,已经默认安装并启用了 sshd 服务程序。接下来使用 ssh 命令进行远
程连接,其格式为“ssh [参数] 主机 IP 地址”。要退出登录则执行 exit 命令。

[root@linuxprobe ~]# ssh 192.168.10.10
root@192.168.10.20's password:
[root@linuxprobe ~]# exit

命令

状态
# systemctl status sshd
重启
# systemctl restart sshd
开机启动
# systemctl enable sshd

公钥密钥登录

可以实现免输入密码进行登录。

在客户端主机中生成“密钥对”,在.ssh目录。

# ssh-keygen
一直回车

把客户端主机中生成的公钥文件传送至远程主机。

ssh-copy-id -p port user@remotr

# ssh-copy-id 192.168.10.10
Are you sure you want to continue connecting (yes/no)? yes
root@192.168.10.10's password:输入远程服务器密码

在客户端尝试登录到服务器,此时无须输入密码也可成功登录。

远程传输命令

scp(secure copy)是一个基于 SSH 协议在网络之间进行安全传输的命令,其格式为“scp
[参数] 本地文件 远程帐户@远程 IP 地址:远程目录”。

由于 scp 命令是基于 SSH 协议进行文件传送的,上节又设置好了密钥验证,因
此当前在传输文件时,并不需要账户和密码。

[root@linuxprobe ~]# echo "Welcome to LinuxProbe.Com" > readme.txt
[root@linuxprobe ~]# scp /root/readme.txt 192.168.10.20:/home
输入远程root管理员密码

此外,还可以使用 scp 命令把远程主机上的文件下载到本地主机,其命令格式为“scp [参
数] 远程用户@远程 IP 地址:远程文件 本地目录”。例如,可以把远程主机的系统版本信息文
件下载过来,这样就无须先登录远程主机,再进行文件传送了,也就省去了很多周折。

[root@linuxprobe ~]# scp 192.168.10.20:/etc/redhat-release /root
root@192.168.10.20's password: root
redhat-release 100% 52 0.1KB/s 00:00
[root@linuxprobe ~]# cat redhat-release

远程登录客户端

Linux 系统中是通过 ssh 服务实现的远程登录功能,默认 ssh 服务端口号为 22。

Window 系统上 Linux 远程登录客户端有Xshell ,SecureCRT, Putty, SSH Secure Shell 等

xshell上使用公钥登陆Linux服务器

1.设置连接

设置协议=SSH、IP、端口

2.设置用户身份验证

方法=public key 用户名=root

3.生成公钥

点击浏览生成,一直下一步,输入密码123456

最后保存成文件如:id_rsa_2048.pub,然后填写生成公钥过程中输入的密码 ,文件内容如下

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAn6gjMhvBsm5lghzmWNlQlrL0DByMtslErHbzrmp4l8qCdOgRMhJH8zI3IoBPqnFv+9Vf5+qGlMdG+DfW17HEiz8tnqvhjdjviGK0ZVBANNIjVaTst5GsMVfOdR9pBdudMQa6bffV6wV7UiJ0XLQYD3GSEjBDH+ZTt7cU/zTV5ph8n4evaK301IwGcBU90pQmoMSmkYqu+wnkS8OApyX9OEsoTe4H7l8EImVdzw5nCrnSKBgPMd1JGqo1wpBrK+3ZwdDhc/Q/TNX1TpNd/nbB2JJGdOzBdugVZyW/8hoVAaWt6uVRStq4jWoSRUagmuA1Anrs2lPyIQVEmX/GxUZ9GQ==

4.上传公钥文件到linux服务器的~/.ssh/目录

5.执行命令cat id_rsa_2048.pub >> authorized_keys,如果没有authorized_keys,则自己创建一个

6.修改权限chmod 600 authorized_keys

7.打开之前设置的连接就可以使用公钥连上服务器了

sftp 服务程序

sftp采用的是ssh加密隧道,安全性方面比ftp强,而且依赖的是系统自带的ssh服务,不像ftp还需要额外的进行安装,默认已经安装,可以

# ssh -V
# sftp 127.0.0.1
Connected to 127.0.0.1.
sftp> ls

众所周知sftp账号是基于ssh账号的,所以在默认情况下访问服务器的权限是非常大的,进行sftp用户权限设置

你的openssh-server版本至少得失4.8p1。

1、创建sftp用户组

groupadd sftp

2、创建ftp用户

useradd -g sftp -s /sbin/nologin -M sftpuser
passwd sftpuser

3、创建家目录并指定权限

注释:给家目录更改属主并授权家目录属主必须是root,权限可以是755或者750

mkdir -p /opt/data
usermod -d /opt/data sftpuserchown root:root /opt/data
chmod 755 /opt/data

4、创建可写目录

mkdir /opt/data/file -p
chown sftpuser:sftp /opt/data/file

5、编辑配置文件/etc/ssh/sshd_config

注释掉X11Forwarding yes 这句话,大概在101行
注释掉Subsystem sftp /usr/libexec/openssh/sftp-server 这句话,大概在132行并在文件末尾添加如下语句:
Subsystem sftp internal-sftp
Match User sftpuser
ChrootDirectory /opt/data
ForceCommand    internal-sftp
AllowTcpForwarding no
X11Forwarding no# systemctl restart sshd

6、验证

# sftp sftpuser@127.0.0.1

注释:文件只能删除至/opt/data/file目录下,可以上传和删除。默认端口22

使用 vsftpd 服务传输文件

文件传输协议

今天的互联网是由几千万台个人计算机、工作站、服务器、小型机、大型
机、巨型机等具有不同型号、不同架构的物理设备共同组成的,而且即便是个人计算机,也
可能会装有 Windows、Linux、UNIX、Mac 等不同的操作系统。为了能够在如此复杂多样的
设备之间解决问题解决文件传输问题,文件传输协议(FTP)应运而生。

FTP 是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用 20、21
号端口,其中端口 20(数据端口)用于进行数据传输,端口 21(命令端口)用于接受客户端
发出的相关 FTP 命令与参数。

FTP 协议有下面两种工作模式。
➢ 主动模式:FTP 服务器主动向客户端发起连接请求。
➢ 被动模式:FTP 服务器等待客户端发起连接请求(FTP 的默认工作模式)。

防火墙一般是用于过滤从外网进入内网的流量,因此有些时候需要将 FTP 的工作模式设置为

主动模式,才可以传输数据。

vsftpd(very secure ftp daemon,非常安全的 FTP 守护进程)是一款运行在 Linux 操作系
统上的 FTP 服务程序,不仅完全开源而且免费,此外,还具有很高的安全性、传输速度,以
及支持虚拟用户验证等其他 FTP 服务程序不具备的特点。

# yum install vsftpd

vsftpd 服务程序的主配置文件(/etc/vsftpd/vsftpd.conf)

[root@linuxprobe ~]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
[root@linuxprobe ~]# grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf
[root@linuxprobe ~]# cat /etc/vsftpd/vsftpd.confdirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

配置参数说明:

listen=[YES|NO]  是否以独立运行的方式监听服务
listen_address=IP 地址  设置要监听的 IP 地址
listen_port=21  设置 FTP 服务的监听端口
download_enable=[YES|NO]  是否允许下载文件
userlist_enable=[YES|NO]
userlist_deny=[YES|NO]
设置用户列表为“允许”还是“禁止”操作
max_clients=0  最大客户端连接数,0 为不限制
max_per_ip=0  同一 IP 地址的最大连接数,0 为不限制
anonymous_enable=[YES|NO]  是否允许匿名用户访问
anon_upload_enable=[YES|NO]  是否允许匿名用户上传文件
anon_umask=022  匿名用户上传文件的 umask 值
anon_root=/var/ftp  匿名用户的 FTP 根目录
anon_mkdir_write_enable=[YES|NO] 是否允许匿名用户创建目录
anon_other_write_enable=[YES|NO]
是否开放匿名用户的其他写入权限(包括重命名、删
除等操作权限)
anon_max_rate=0  匿名用户的最大传输速率(字节/秒),0 为不限制
local_enable=[YES|NO]  是否允许本地用户登录 FTP
local_umask=022  本地用户上传文件的 umask 值
local_root=/var/ftp  本地用户的 FTP 根目录
chroot_local_user=[YES|NO]  是否将用户权限禁锢在 FTP 目录,以确保安全
local_max_rate=0  本地用户最大传输速率(字节/秒),0 为不限制

vsftpd 服务程序

vsftpd 作为更加安全的文件传输的服务程序,允许用户以三种认证模式登录到 FTP 服务
器上。
➢ 匿名开发模式 :是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录
到 FTP 服务器。
➢本地用户模式 :是通过 Linux 系统本地的账户密码信息进行认证的模式,相较于匿名
开放模式更安全,而且配置起来也很简单。但是如果被黑客破解了账户的信息,就可
以畅通无阻地登录 FTP 服务器,从而完全控制整台服务器。
➢ 虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为 FTP 服务单独
建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在
服务器系统中实际上是不存在的,仅供 FTP 服务程序进行认证使用。这样,即使
黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。
ftp 是 Linux 系统中以命令行界面的方式来管理 FTP 传输服务的客户端工具。

# yum install vsftpd
# systemctl restart vsftpd.service # 重启服务
# systemctl start vsftpd.service  # 启动服务
# systemctl status vsftpd.service  # 服务状态查看

匿名开放模式

无需密码验证而直接登录到 FTP 服务器。这种模式一般用来访问不重要的公开文件。

vsftpd 服务程序默认开启了匿名开放模式,我们需要做的就是开放匿名用户的上传、下
载文件的权限,以及让匿名用户创建、删除、更名文件的权限。添加配置

[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
......
[root@linuxprobe ~]# systemctl restart vsftpd
[root@linuxprobe ~]# systemctl enable vsftpd

现在就可以在客户端执行 ftp 命令连接到远程的 FTP 服务器了。在 vsftpd 服务程序的匿
名开放认证模式下,其账户统一为 anonymous,密码为空。而且在连接到 FTP 服务器后,默
认访问的是/var/ftp 目录。我们可以切换到该目录下的 pub 目录中,然后尝试创建一个新的目
录文件,以检验是否拥有写入权限

[root@linuxprobe ~]# ftp 192.168.10.10
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
550 Permission denied.

下面将目录的所有者身份改成系统账户 ftp 即可

[root@linuxprobe ~]# ls -ld /var/ftp/pub
drwxr-xr-x. 3 root root 16 Jul 13 14:38 /var/ftp/pub
[root@linuxprobe ~]# chown -Rf ftp /var/ftp/pub
[root@linuxprobe ~]# ls -ld /var/ftp/pub
drwxr-xr-x. 3 ftp root 16 Jul 13 14:38 /var/ftp/pub

本地用户模式

相较于匿名开放模式,本地用户模式要更安全,而且配置起来也很简单。

anonymous_enable=NO 禁止匿名访问模式
local_enable=YES 允许本地用户模式
write_enable=YES 设置可写权限
local_umask=022 本地用户模式创建文件的 umask 值
userlist_enable=YES 启用“禁止用户名单”,名单文件为 ftpusers 和 user_list
userlist_deny=YES 开启用户作用名单文件功能

[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
[root@linuxprobe ~]# systemctl restart vsftpd
[root@linuxprobe ~]# systemctl enable vsftpd

vsftpd 服务程序所在的目录中默认存放着两个名为“用户名单”的文件(ftpusers 和 user_list)。

在采用本地用户模式登录 FTP 服务器后,默认访问的是该用户的家目录。而且该目录的默认所有者、所属组都是该用户自己,因此不存在写入权限不足的情况。可以采用如下属性修改默认更目录。

local_root=/var/ftp  本地用户的 FTP 根目录

虚拟用户模式

虚拟用户模式是这三种模式中最安全的一种认证模式

数据库文件创建

创建用于进行 FTP 认证的用户数据库文件,其中奇数行为账户名,偶数行为密
码。例如,我们分别创建出 ftpuser1和 ftpuser2两个用户,密码均为 ftpuser2

# cd /etc/vsftpd/
# vi vuser.list
ftpuser1
ftpuser2
ftpuser2
ftpuser2

但是,明文信息既不安全,也不符合让 vsftpd 服务程序直接加载的格式,因此需要使
用 db_load 命令用哈希(hash)算法将原始的明文信息文件转换成数据库文件,并且降低
数据库文件的权限(避免其他人看到数据库文件的内容),然后再把原始的明文信息文件
删除。

# db_load -T -t hash -f vuser.list vuser.db
# file vuser.db
vuser.db: Berkeley DB (Hash, version 9, native byte-order)
# chmod 600 vuser.db
# rm -f vuser.list
建立linux用户

创建 vsftpd 服务程序用于存储文件的根目录以及虚拟用户映射的系统本地
用户。FTP 服务用于存储文件的根目录指的是,当虚拟用户登录后所访问的默认位置。

由于 Linux 系统中的每一个文件都有所有者、所属组属性,例如使用虚拟账户“张三”
新建了一个文件,但是系统中找不到账户“张三”,就会导致这个文件的权限出现错误。为此,
需要再创建一个可以映射到虚拟用户的系统本地用户。简单来说,就是让虚拟用户默认登录
到与之有映射关系的这个系统本地用户的家目录中,虚拟用户创建的文件的属性也都归属于
这个系统本地用户,从而避免 Linux 系统无法处理虚拟用户所创建文件的属性权限。

为了方便管理 FTP 服务器上的数据,可以把这个系统本地用户的家目录设置为/var 目录
(该目录用来存放经常发生改变的数据)。并且为了安全起见,我们将这个系统本地用户设置
为不允许登录 FTP 服务器,这不会影响虚拟用户登录,而且还可以避免黑客通过这个系统本
地用户进行登录。

# useradd -d /var/ftproot -s /sbin/nologin virtual
# ls -ld /var/ftproot/
drwx------. 3 virtual virtual 74 Jul 14 17:50 /var/ftproot/
# chmod -Rf 755 /var/ftproot/
建立用于支持虚拟用户的 PAM 文件。

PAM(可插拔认证模块)是一种认证机制,通过一些动态链接库和统一的 API 把系统提
供的服务与认证方式分开,使得系统管理员可以根据需求灵活调整服务程序的不同认证方式。

通俗来讲,PAM 是一组安全机制的模块,系统管理员可以用来轻易地调整服务程序的认
证方式,而不必对应用程序进行任何修改。PAM 采取了分层设计(应用程序层、应用接口层、
鉴别模块层)的思想。

新建一个用于虚拟用户认证的 PAM 文件 vsftpd.vu,其中 PAM 文件内的“db=”参数为
使用 db_load 命令生成的账户密码数据库文件的路径,但不用写数据库文件的后缀:

# vi /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
配置PAM认证

在 vsftpd 服务程序的主配置文件中通过 pam_service_name 参数将 PAM 认证
文件的名称修改为 vsftpd.vu,PAM 作为应用程序层与鉴别模块层的连接纽带,可以让应用程
序根据需求灵活地在自身插入所需的鉴别功能模块。当应用程序需要 PAM 认证时,则需要在
应用程序中定义负责认证的 PAM 配置文件,实现所需的认证功能。
例如,在 vsftpd 服务程序的主配置文件中默认就带有参数 pam_service_name=vsftpd,表
示登录 FTP 服务器时是根据/etc/pam.d/vsftpd 文件进行安全认证的。现在我们要做的就是把
vsftpd 主配置文件中原有的 PAM 认证文件 vsftpd 修改为新建的 vsftpd.vu 文件即可。该操作中
用到的参数以及作用如表 11-4 所示。

anonymous_enable=NO 禁止匿名开放模式
local_enable=YES 允许本地用户模式

guest_enable=YES 开启虚拟用户模式
guest_username=virtual 指定虚拟用户账户
pam_service_name=vsftpd.vu 指定 PAM 文件
allow_writeable_chroot=YES允许对禁锢的FTP 根目录执行写入操作,而且不拒绝用户的登录请求

[root@linuxprobe ~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YES
pam_service_name=vsftpd.vu
为虚拟用户设置不同的权限

为虚拟用户设置不同的权限。虽然账户 ftpuser1和 ftpuser1 都是用于 vsftpd 服务程
序认证的虚拟账户,但是我们依然想对这两人进行区别对待。比如,允许ftpuser1上传、创建、修
改、查看、删除文件,只允许ftpuser2查看文件。这可以通过 vsftpd 服务程序来实现。只需新建
一个目录,在里面分别创建两个以 ftpuser1和 ftpuser2命名的文件,其中在名为 ftpuser1的文件
中写入允许的相关权限(使用匿名用户的参数):

# mkdir /etc/vsftpd/vusers_dir/
# cd /etc/vsftpd/vusers_dir/
# touch ftpuser1
# vi ftpuser1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

也可以分别设置需求用户登录后看到不同的目录,要设置权限

# cd /etc/vsftpd/vusers_dir/
# vi ftpuser1
local_root=/var/ftproot/ftpuser1# mkdir -p /var/ftproot/ftpuser1/
# chown -R virtual:virtual /var/ftproot/ftpuser1/

然后再次修改 vsftpd 主配置文件,通过添加 user_config_dir 参数来定义这两个虚拟用户
不同权限的配置文件所存放的路径。

# vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir
# systemctl restart vsftpd
# systemctl enable vsftpd
测试
[root@linuxprobe ~]# ftp 192.168.10.10
ftpuser1/ftpuser2
ftp> mkdir files
257 "/files" created
ftp> rename files database
350 Ready for RNTO.
250 Rename successful.
ftp> rmdir database
250 Remove directory operation successful.
ftp> exit
221 Goodbye.

附录:vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd.vu
userlist_enable=YES
tcp_wrappers=YES
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YES
user_config_dir=/etc/vsftpd/vusers_dir

Linux系列教程(13)- 使用 ssh 服务管理远程主机相关推荐

  1. 使用SSH服务管理远程主机

    使用SSH服务管理远程主机 配置网络参数 这里使用的是nmtui命令来配置网络 执行nmtui命令运行网络配置工具 选中Edit a connection并按下回车键 在RHEL7中网卡的名称变成了类 ...

  2. 20201025firewall-config以及ssh服务管理远程主机以及双网卡实现网络均衡负载

    >>>>firewall-config 这个默认在redhat8中没有安装,我们需要去注册系统然后使用yum安装 dnf 是yum的升级版好处是, 1 这个对软件的依赖关系进行 ...

  3. [linux学习](linuxprobe课程)九 使用ssh服务管理远程主机

    配置网卡(2) nmcli(尼玛克烈) 真的好用,可以配置多套网卡信息(即网络会话),根据实际情况切换,适合自己的电脑,对服务器貌似没啥大用,原理是增加了几个配置文件在/etc/sysconfig/n ...

  4. 第9章 使用ssh服务管理远程主机。

    章节简述: 学习使用nmtui命令配置网卡参数.手工将多块网卡做绑定.使用nmcli命令查看网卡信息和使用ss命令查看网络及端口状态. 完整演示sshd服务配置方法并详细讲述每个参数的作用,实战基于密 ...

  5. 使用SSH服务管理远程主机(RHEL8)

    内容概要: 配置网络服务 远程控制服务 不间断会话服务 检索日志信息 1.配置网络服务 1.1 配置网卡参数 在RHEL8中至少有五种配置网络的方法: 第①种配置网络的方法(vim编辑网卡配置文件): ...

  6. Ten 使用ssh服务管理远程主机

    配置网络服务 配置网卡的4种方法: 修改网卡配置文件/etc/sysconfig/network-scripts/ifcfg-enoXXXXXXXX,配置完重启网卡服务: nmtui(旧版UI界面) ...

  7. Linux就该这么学(使用 ssh 服务管理远程主机)第9章

    远程控制服务(第206页) sshd 服务配置文件中包含的参数以及作用 参数 作用 Port 22 默认的 sshd 服务端口 ListenAddress 0.0.0.0 设定 sshd 服务器监听的 ...

  8. Linux基础(使用ssh服务管理远程主机1)

    配置网络参数 使用nmtui命令配置网络参数,以及通过nmcli命令查看网络信息并管理网络会话服务. 执行nmtui命令运行网络配置工具 进入主界面 选中编辑连接并按下回车键 选中要编辑的网卡名称,然 ...

  9. linux 下的 service 和systemctl 服务管理方式

    linux 下的 service  和systemctl 服务管理方式 man service 得到:执行一个system V 风格的启动脚本 service - run a System V ini ...

最新文章

  1. 收下这份来自GitHub的神器,一图搞定Matplotlib!
  2. python diango 并发_利用gunicorn提高django的并发能力
  3. 【深度学习】基于Pytorch的softmax回归问题辨析和应用(一)
  4. python练习册 每天一个小程序 第0013题
  5. Python调用茉莉机器人API接口
  6. .tcl文件_TCL电视如何安装第三方软件?当贝市场分享最新教程
  7. TensorFlow2-简介
  8. 各自然带代表植被_必备知识:植被与地理环境
  9. JavaScript享元模式
  10. Framework Design Studio 发布了
  11. TWiki 语法格式(TWiki语法教程及TWiki使用技巧)
  12. csv格式清洗与转换python_实例详解Python中 CSV格式清洗与转换
  13. python 四足机器人运动学_撸了个四足机器人
  14. Spark内核解析1
  15. 软考网络规划设计师考试要求
  16. 疫情下的创业品牌如何逆风翻盘?
  17. bs和php,BSPHP - WEB源码|源代码 - 源码中国
  18. 复试导师问题——前沿科技
  19. 定时自动关机计划命令
  20. 用 js判断 一个数是否是素数(质数)_js 基础算法题(二)

热门文章

  1. CleanMyMac X2023电脑深度清理软件
  2. 51Nod 1013-3的幂的和
  3. 智科1912刘嘉文的人工智能协会作业
  4. 如何从数据生命周期的角度做好数据资产管理?
  5. RNN实践之唐诗创作
  6. 物联卡一直显示待激活怎么办_电信物联卡的亲身使用经历分享
  7. java山海经之轩辕_《山海经》中所说的轩辕国在哪,是否就是华夏文明的起源?...
  8. 云计算、边缘计算与雾计算
  9. python商业数据分析报告范文_python案例分析之电商销售数据分析
  10. homeassistants应用2-输入文字翻译为语音