Linux入门攻坚——24、BIND编译安装、Telnet和OpenSSH

BIND编译安装

对于没有rpm包,需要源代码编译安装。

1、下载源代码:bind-9.12.2-P1.tar.gz,解压:tar -xf bind-9.12.2-P1.tar.gz
2、完善环境:
  1)增加用户组named:groupadd -g 53 named
  2)增加用户named(系统用户):useradd -r -u 53 -g  named named 
3、执行configure:进入加压后的目录,执行
    ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --disable-ipv6 --disable-chroot --enable-threads
    make
    make install
4、编译安装后,没有配置文件,即没有named.conf和named.rfc1912.zones等配置文件;没有rndc相关的配置文件;所以需要手工建立。同时相关命令也不能直接调用,相关库文件、头文件、资料文件需要添加到搜索路径中,即导出这些文件:

1)导出二进制命令路径,需要将路径输出到PATH环境变量中:在/etc/profile.d/下建立named.sh文件,内容如下:  export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH
然后重读一下文件:. /etc/profile.d/named.sh  ,然后就可以直接调用这些命令了。
  2)导出库文件,其他程序用到这些开发库,如果不导出,也无法使用,即找不到,所以要导出:
在/etc/ld.so.conf.d/下新建named.conf文件,内容是bind的库文件位置:
/usr/local/bind9/lib
然后要通知系统重读此配置文件,生成库文件搜索路径:ldconfig -v
  3)导出头文件:ln -sv /usr/local/bind9/include/ /usr/include/named
  4)导出帮助手册,即man目录,即将安装的man目录加入到搜索路径中,编辑/etc/man.config文件:添加MANPATH路径:

  5)创建bind的配置文件/etc/named/named.conf,因为我们编译安装是配置了配置文件路径是/etc/named。

options {directory "/var/named";    //全局配置只配置这一项就可以运行了,其他采用默认配置
};zone "." IN {type hint;file "named.ca";
};zone "localhost" IN {type master;file "localhost.zone";allow-update { none; };
};zone "0.0.127.in-addr.arpa" IN {type master;file "named.local";allow-update { none; };
};

然后这些库文件也需要我们自己创建:/var/named/named.ca、/var/named/localhost.zone、/var/named/named.local
根节点库文件,可以通过:dig -t NS . @ip获得,这里ip是可以连接互联网的机器:
将结果拷贝到named.ca中:dig -t NS . @192.168.138.2 > /var/named/named.ca
创建解析库文件:/var/named/localhost.zone:

$TTL 1d
@	IN	SOA	localhost.	admin.localhost. (20240524011h5m7d1d )IN	NS	localhost.
localhost.	IN	A	127.0.0.1

解析库文件:/var/named/named.local
 

$TTL 1d
@	IN	SOA	localhost.	admin.localhost. (20240524011h5m7d1d )IN	NS	localhost.
1	IN	PTR	localhost.

6)修改文件权限:
  /var/named/下的所有文件:chmod 640 ./*   ;  chown :named *
  chmod 640 /etc/named/named.conf   ; chown :named /etc/named/named.conf
5、启动服务,成为缓存名称服务器:
  named -u named -f -g -d 3,运行于前台
  named -u named,运行于后台

启动过程中多次出现某目录或文件权限不够的提示,即permission denied,修改其属组权限后,系统运行正常

6、配置rndc,使用rndc工具时,提示
[root@study610-f2 named]# rndc reload
rndc: neither /etc/named/rndc.conf nor /etc/named/rndc.key was found
使用rndc-confgen产生:

按照提示分别拷贝相关内容到rndc.conf和named.conf中

# 以下为named.conf文件内容
options {directory "/var/named";
};zone "." IN {type hint;file "named.ca";
};zone "localhost" IN {type master;file "localhost.zone";allow-update { none; };
};zone "0.0.127.in-addr.arpa" IN {type master;file "named.local";allow-update { none; };
};zone "mytestcc.com" IN {type master;file "mytestcc.com.zone";allow-update { none; };
};# Use with the following in named.conf, adjusting the allow list as needed:
key "rndc-key" {algorithm hmac-sha256;secret "JS3jsXcMavvFVDGsjokYVhvml8h5dhwnvvrZJElW0F0=";
};controls {inet 127.0.0.1 port 953allow { 127.0.0.1; } keys { "rndc-key"; };
};
# End of named.conf# 以下为rndc.conf文件内容
# Start of rndc.conf
key "rndc-key" {algorithm hmac-sha256;secret "JS3jsXcMavvFVDGsjokYVhvml8h5dhwnvvrZJElW0F0=";
};options {default-key "rndc-key";default-server 127.0.0.1;default-port 953;
};
# End of rndc.conf

重新启动named进程,即可使用rndc进行管理。

远程登录
登录到主机中,经历了 本地终端——>远程终端——>安全远程终端 几个阶段,最开始,主机提供相应的硬件接口,在此接口上连接VGA和键盘,实现登录主机,即本地终端登录,此时主机不需要额外的进程来处理与终端的通讯,随着网络的发展,出现在远端通过网络登录主机的需求,要实现的是同本地终端类似的功能,因为需要通过网络连接,并且要把网络包内容并在主机上解包并并运行其中的内容,就需要额外进程来负责,分为服务器端和客户端,服务器端实现接收客户端的输入内容,与主机交互将内容交给主机执行,将主机执行结果打包反馈给客户端,客户端要实现模拟本地终端的功能,实现内容输入和接收返回内容的展示,这需要双方遵守相同的规则,即需要终端通信协议,此时交互内容是明文在网络上传递;随着网络安全威胁越来越高,上述交互很容易被窃取,于是要求安全的网络交互,就出现了安全的远程终端,随之也就有安全终端协议。

Telnet

一种不安全的远程终端协议telnet协议的实现,C/S架构,监听端口23/tcp。

telnet的使用:
1)安装:yum install telnet-server

安装后有telnet-server.x86_64 和telnet.x86_64 两个程序包,一个是服务器端程序包,一个是客户端程序包。telnet server是一个独特的服务,工作于基于超级守护进程管理的瞬时守护进程模式。

2)telnet server的启动:
  chkconfig telnet on
  service xinetd restart
查看:

xinetd叫超级守护进程,下面的没有运行级别的,像telnet叫瞬时守护进程。xinetd代瞬时守护进程监听,在有用户访问时,唤醒瞬时守护进程。像telnet进程使用的频度不高,不需要时刻监听。

3)登录,因为telnet是明文传输,禁止使用管理员账户登录,使用普通用户登录:
在windows上:

OpenSSH

ssh:secure shell ,Protocol,即是一种协议。监听在tcp的22号端口,实现安全的远程登录。
OpenSSH:ssh协议的开源实现。dropbear是另一种实现。
Telnet:实现远程登录,但是没有安全保护,早期的远程登录。端口23/tcp

SSH协议版本:
  v1:基于CRC-32做MAC,不安全:易遭到man-in-middle攻击
  v2:双方主机协商选择安全的MAC方式。基于DH算法做密钥交换,基于RSA或DSA算法实现身份认证。

两种方式的用户登录认证:  基于password、基于key
  通过ssh host登录服务器,客户端必须认证一下这台主机是不是就是要连接的那台主机,一般使用密钥对方式验证,客户端用主机的公钥解密主机发送的内容验证通过,即证明是需要的主机。关于客户端中主机的公钥,在第一次登录时,主机会发送这个公钥,在客户端会提醒是否保存这个公钥,就是让客户端使用者确定主机,接受保存后下一次访问,就会直接使用这个公钥。

基于密钥登录:客户端生成密钥对,将公钥发送给远程主机中对应登录用户的家目录下的某个文件中,以后此用户再登录时,主机用此公钥解密客户端的信息,依此来判断客户端的合法性,而不需要输入口令。此公钥是不允许公开的。

具体保存在~/.ssh/known_hosts中。

OpenSSH是C/S架构,客户端(C端)有ssh,(scp,sftp),windows客户端有xshell,putty,securecrt;对于Linux下的ssh客户端,配置文件为/etc/ssh/ssh_config;服务器端(S端):sshd,配置文件为/etc/ssh/sshd_config

客户端工具:ssh命令
  ssh [user]@host [command]:没有user,默认使用linux当前登录用户,指定了user,以指定的特定user登录。
  ssh [ -l user ] host [command]: 
  参数  -p port:远程服务器监听的端口;
           -X :支持X11转发
           -Y:支持信任的x11转发;

  客户端配置文件格式,/etc/ssh/ssh_config
    Host PATTERN
        PARAMETER VALUE

# Host *    # *号代表所有主机
#   ForwardAgent no
#   ForwardX11 no
#   RhostsRSAAuthentication no
#   RSAAuthentication yes
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   GSSAPIKeyExchange no
#   GSSAPITrustDNS no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask    # 第一次登录时,会提示是否接受密钥,设置no不提问
#   IdentityFile ~/.ssh/identity
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   Port 22
#   Protocol 2,1
#   Cipher 3des
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
#   MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
Host *GSSAPIAuthentication yes
# If this option is set to yes then remote X11 clients will have full access
# to the original X11 display. As virtually no X11 client supports the untrusted
# mode correctly we set this to yes.ForwardX11Trusted yes
# Send locale-related environment variablesSendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT SendEnv LC_IDENTIFICATION LC_ALL LANGUAGESendEnv XMODIFIERS

基于密钥的认证(不需要密码进行登录):
  (1)在客户端生成密钥对
        ssh-keygen -t rsa [-P ''] [-f "~/.ssh/id_rsa"]
  (2) 把公钥传输至远程服务器对应用户的家目录
        ssh-copy-id [ -i [ identity_file] ] [ user@] machine
  (3)登录验证:ssh 
  (4)安全提醒:不要使用root,可以登录后切换至root

实操:
  1)客户端生成密钥对:


  2)把公钥传输至远程服务器端对应用户的家目录

在服务器中查看:

注意,authorized_keys文件的权限为:-rw-------,即600,这是为了确保安全。
  3)测试:

结果直接登录,没有提示输入密码。

scp命令
  scp [options]  SRC ...  DEST/
  存在两种情形:
    PULL:scp [options] [user@]host:/PATH/FROM/SOMEFILE /PATH/TO/SOMEWHERE
    把远程文件拉到本地来,以哪个用户登录到哪台远程主机上去拉文件,即远程主机的用户
    PUSH:scp [options] /PATH/FROM/SOMEFILE [user@]host:/PATH/TO/SOMEWHERE
    把本地文件推送给(复制给)远程主机。也是远程主机用户。
    常用选项:
        -r :递归复制
        -p :保持源文件的属性信息
        -q :静默模式
        -P PORT:指明remote host的监听的端口;

scp也基于ssh,因为在上一步设置了基于密钥的认证,所以复制过程也不需要输入密码。

sftp命令
  sftp [user@]host
同scp,也是基于ssh

服务器端:sshd
  配置文件/etc/ssh/sshd_config

#	$OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options change a
# default value.
# 以#加空格开头的是注释,以#开头后无空格的是配置项,去掉#就是配置#Port 22    # sshd服务监听的端口,默认22
#AddressFamily any  # IP家族,any表示IPv4和IPv6
#ListenAddress 0.0.0.0  # 监听本机所有IPv4地址
#ListenAddress ::# Disable legacy (protocol version 1) support in the server for new
# installations. In future the default will change to require explicit
# activation of protocol 1
Protocol 2    # 使用协议的哪个版本# Centos6上sshd的配置
# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key# 在7.x版本,即centos7上,配置如下
#HostKey /etc/ssh/ssh_host_rsa_key
##HostKey /etc/ssh/ssh_host_dsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key    # 在用户登录时发送给用户的公钥,即保存在客户端用户家目录.ssh下know_hosts中的公钥
#HostKey /etc/ssh/ssh_host_ed25519_key# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 1h    # 对称密钥重新生成时间间隔
#ServerKeyBits 1024# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV  # 日志使用AUTHPRIV,保存在/var/log/secure
#LogLevel INFO# Authentication:#LoginGraceTime 2m      # 登录的宽限时间(等待输入用户密码时间)
#PermitRootLogin yes    # 是否允许root直接登录,默认是可以的
#StrictModes yes        # 是否严格检查格式
#MaxAuthTries 6         # 最大认证重试次数
#MaxSessions 10         # 最大会话数#RSAAuthentication yes  
#PubkeyAuthentication yes
#AuthorizedKeysFile	.ssh/authorized_keys   # 客户端采用密钥认证时,客户端的公钥在服务器端的保存位置
#AuthorizedKeysCommand none
#AuthorizedKeysCommandRunAs nobody# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication yes  # 允许基于口令认证方式登录# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no    # Kerberos options   # 实现第三方统一认证的一种认证方式
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
#KerberosUseKuserok yes# GSSAPI options 
#GSSAPIAuthentication no
GSSAPIAuthentication yes
#GSSAPICleanupCredentials yes
GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no# Set this to 'yes' to enable PAM authentication, account processing, 
# and session processing. If this is enabled, PAM authentication will 
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
#UsePAM no
UsePAM yes# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
#X11Forwarding no
X11Forwarding yes       # 允许客户端调用服务器端的图形程序
#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#ShowPatchLevel no
#UseDNS yes        # DNS的反向解析功能,默认是开启的,一般设为no,否则,客户端登录时会发生被卡住一会的现象
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none# no default banner path
#Banner none# override default of no subsystems
Subsystem	sftp	/usr/libexec/openssh/sftp-server    # 支持sftp# Example of overriding settings on a per-user basis
#Match User anoncvs
#	X11Forwarding no
#	AllowTcpForwarding no
#	ForceCommand cvs server

在ssh命令中使用 -X选项支持X11转发或-Y选项支持信任的x11转发

ssh服务的最佳实践
  1、不要使用默认端口;
  2、禁止使用Protocol version 1;
  3、限制可登录用户:配置文件中AllowUsers和AllowGroups,白名单;
   实操: 添加两个用户:gentoo和centos,在没配置白名单前都能登录:

在服务器的配置文件/etc/ssh/sshd_config的最后添加:AllowUsers root centos
然后重载服务:service sshd restart
再次测试登录,centos可以登录,但是gentoo无法登录:

  也可以使用黑名单:DenyUsers
  4、设定空闲会话超时时长;
  5、利用防火墙设置ssh访问策略;
  6、仅监听特定的IP地址;
  7、基于口令认证时,使用强密码策略;
        随机密码:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xargs
  8、使用基于密钥的认证;
  9、禁止使用空密码;
  10、禁止root用户直接登录;
  11、限制ssh的访问频度和并发在线数;
  12、做好日志,经常分析;

ssh协议的另一个实现:dropbear
  1)安装:yum install dropbear
  2)生成密钥对,启动服务:        
        dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048
        dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
        dropbear -p [ip:]port -F -E

连接测试:

  3)可以作为客户端连接其他远程主机,工具是dbclient
    dbclient root@host

OpenSSL-重温
  三个组件:
  openssl:多用途的命令行工具;
  libcrypto:加密解密库;
  libssl:ssl协议的实现

PKI:Public Key Instructure,公钥基础设施
  CA、RA、CRL、证书存取库

建立私有CA(一个组织内部使用):两种方式
  OpenCA和 openssl,OpenCA比较专业,使用也比较复杂;openssl简单易用

证书申请及签署步骤:
  1)生成申请请求;
  2)RA核验;
  3)CA签署;
  4)获取证书;

创建私有CA:
  openssl的配置文件:/etc/pki/tls/openssl.cnf  

安装上面配置信息创建对应的文件、目录
  1)创建所需文件,在/etc/pki/CA目录下
    # touch index.txt
    # echo 01 > serial
    确保certs 、crl、 newcerts、 private子目录存在
  2)CA自签证书,要想生存证书,要有密钥对
# (umask 077;openssl genrsa -out private/cakey.pem 2048)   # 生成私钥,-out与配置文件一致
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650  -out /etc/pki/CA/cacert.pem     # 自签证书生成
    -new:生成新证书签署请求
    -x509:专用于cA生成自签证书
    -key:生成请求时用到的私钥文件,证书需要公钥,通过私钥自动生成
    -days:证书有效期限
    -out:证书的保存路径,与配置文件中的配置保持一致
这个文件发送给需要使用证书的客户机,导入到信任的根证书颁发机构中。
  3)发证
    (a)用到证书的主机生成证书请求
      生成私钥、利用私钥生成证书签署请求文件
    (b)把证书签署请求文件传输给CA
    (c)CA签署证书,并将证书发还给用户
    (d)查看证书中的信息:
        openssl x509 in /PATH/FROM/CERT_FILE -noout -text| -subject | -serial
    (e)吊销证书:
        <1>获取要吊销的证书的serial
        <2>CA先根据客户提交的serial与subject,对比检验是否与index.txt中信息一致;
        吊销证书:openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
        生成吊销证书的编号(第一次吊销一个证书时):echo 01 > /etc/pki/CA/crlnumber
        更新证书吊销列表:openssl ca -gencrl -out thisca.crl
        查看crl文件:openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
实操:
  a)、 (umask 077; openssl genrsa -out httpd.key 2048)  # 生成私钥

  openssl req -new -key httpd.key -days 365 -out httpd.csr  # 生成证书签署请求文件

  b)、发送此请求文件至CA:
  scp httpd.csr root@192.168.138.139:/tmp

  c)、CA签发证书
  openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -days 365
出现错误:

原因分析:在前面安装python时,对openssl进行了编译安装,所以现在的openssl使用的是编译安装后的高版本,其配置文件使用的是/usr/local/openssl/ssl目录下的openssl.cnf
错误排除:修改/usr/local/openssl/ssl/openssl.cnf配置文件,将其中的dir = ./demoCA,修改为dir=/etc/pki/CA应该就可以了。排查前面的操作,除了这个配置文件,其他都是在/etc/pki/CA目录下,所以openssl的配置文件只修改ca的目录配置即可。

再次签发:

证书签发成功。

生成的证书应该保存在/etc/pki/CA/certs下。

d)客户端取回证书:scp /tmp/httpd.crt root@192.168.138.138:/tmp

e)查看证书信息:

f)吊销证书:

至此,证书签发完毕。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/338286.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正邦科技(day4)

烧录 一、烧录固件二、 通讯模块升级1&#xff1a;USB的方式升级固件2&#xff1a;通过mqtt的方式升级固件3&#xff1a;切换环境 三、 烧录WiFi1&#xff1a;短接2&#xff1a;烧录脚本 设备注意事项&#xff1a; 第一种方式&#xff1a;通信模组和MCU都可以统一烧录BoodLoade…

Vue进阶之Vue无代码可视化项目(一)

Vue无代码可视化项目 项目搭建初始步骤拓展:工程项目从0-1项目规范化package.jsoncpell.jsoncustom-words.txtts-eslint规则.eslintrc.cjsgit钩子检查有没有问题type-checkspellchecklint:stylehusky操作安装pre-commitpnpm的commit规范package.json:commitlint.config.cjs安装…

11.3 冒泡排序

目录 11.3 冒泡排序 11.3.1 算法流程 11.3.2 效率优化 11.3.3 算法特性 11.3 冒泡排序 冒泡排序&#xff08;bubble sort&#xff09;通过连续地比较与交换相邻元素实现排序。这个过程就像气泡从底部升到顶部一样&#xff0c;因此得名冒泡排序。 如图 11-4 所示…

数据结构与算法笔记:基础篇 - 链表(上):如何实LRU缓存淘汰算法

概述 本章聊聊 “链表” 这个数据结构。学习链表有什么作用&#xff1f; 我们先来讨论一个经典的链表应用场景&#xff0c;那就是 LRU 缓存淘汰算法。 缓存是一种提高数据读取性能的技术&#xff0c;在硬件设计、软件开发中有着非常广泛地应用&#xff0c;比如场景的 CPU 缓…

登录安全分析报告:小米官网注册

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞 …

[12] 使用 CUDA 加速排序算法

使用 CUDA 加速排序算法 排序算法被广泛用于计算应用中有很多排序算法&#xff0c;像是枚举排序或者说是秩排序、冒泡排序和归并排序&#xff0c;这些排序算法具有不同的&#xff08;时间和空间&#xff09;复杂度&#xff0c;因此对同一个数组来说也有不同的排序时间&#xf…

使用Streamlit和MistralAI创建AI聊天机器人应用

大家好&#xff0c;创建交互式和用户友好型的应用程序通常需要复杂的框架和耗时的开发过程。Streamlit是一个Python库&#xff0c;它简化了以数据为重点的网络应用程序的创建过程&#xff0c;使开发人员和数据科学家能够快速将他们的想法转化为交互式仪表盘和原型。本文将介绍使…

使用autodl服务器进行模型训练

1.注册并且选择一个服务器租用 2.点击jupyter lab进入服务器内部 3.把yolov5-master这个的压缩文件上传到jupyter的文件列表中 4.打开终端 (1)查看目录 ls (2)解压yolov5-master(1) unzip "yolov5-master (1).zip" 可以看到解压成功&#xff01; (3)进入yolov5-m…

开源与闭源 AI 模型:发展路径的比较与前瞻

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

VB.net进行CAD二次开发(四)

netload不能弹出对话框&#xff0c;参考文献2 参考文献1说明了自定义菜单的问题&#xff0c;用的是cad的系统命令 只要加载了dll&#xff0c;自定义的命令与cad的命令同等地位。 这时&#xff0c;可以将自定义菜单的系统命令替换为自定义命令。 <CommandMethod("Add…

【如何在日志中输出精确到毫秒的时间戳】

1. 需求 在日志中输出精确到毫秒级的时间戳&#xff0c; 格式为&#xff1a;%Y-%m-%d %H:%M:%S.%MS 如&#xff1a;2024-05-30 22:33:25.821 2. 代码实现 #include <iostream> #include <chrono> #include <iomanip> #include <sstream> #include &…

HTTP请求拦截器链

文章目录 HTTP请求拦截器链需求定义写一个Controller方法接口写三个http请求拦截器把拦截器加入到配置中&#xff0c;并且配置拦截规则在postman里面发送请求&#xff0c;看下测试结果是否正确第三个参数的作用 HTTP请求拦截器链 需求定义 我们写一个包含三个HTTP请求拦截器的…

硬币检测电路设计

一、来源&#xff1a;凡亿教育 第一场&#xff1a;硬币检测装置原理分析、电路设计以及器件选型_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Zh4y1V7Px/?p1&vd_source43eb1cb50ad3175d7f3b9385905cd88f 二、开发软件&#xff1a;KEIL MDK 三、主控芯片&#…

vs2019 c++20 规范 STL库中关于时间的模板

在学习线程的时候&#xff0c;一些函数会让线程等待或睡眠一段时间。函数形参是时间单位&#xff0c;那么在 c 中是如何记录和表示时间的呢&#xff1f;以下给出模板简图&#xff1a; 谢谢

CMake的作用域:public/private/interface

在 CMake 中&#xff0c;public、private和 interface是用来指定目标属性的作用域的关键字&#xff0c;这三个有什么区别呢&#xff1f;这些关键字用于控制属性的可见性和传递性&#xff0c;影响了目标之间的依赖关系和属性传递。 public 如果在一个目标上使用 public关键字时…

mysql去除重复数据

需求描述 doc表有很多重复的title,想去除掉重复的记录 表结构 CREATE TABLE doc (id INT PRIMARY KEY,title VARCHAR(255),content TEXT );去重SQL -- 创建临时表 CREATE TEMPORARY TABLE temp_doc AS SELECT * FROM doc WHERE 10;-- 插入唯一的记录&#xff08;每个title最…

FPGA定点数FFT过后转换为浮点数与Matlab计算的FFT结果进行比对

目录 1.前言2.FPGA的testbench中如何读取数据文件3.FPGA的testbench中如何将输出数据存储在文件中4.Matlab去读取testbench存储的文件数据4.1纯数字不带编码4.2 带编码的数据&#xff0c;如定点数 微信公众号获取更多FPGA相关源码&#xff1a; 1.前言 前面一篇文章讲了&…

基础—SQL—DCL(数据控制语言)小结

一、总结 在SQL分类中的DCL语句部分&#xff0c;主要讲到了两个部分的知识。 1、用户管理 用户管理&#xff0c;主要是管理哪些用户可以访问当前 mysql 数据库。 包括&#xff1a;创建用户、修改用户密码以及删除用户 2、权限控制 权限管理&#xff0c;主要是控制我们当前用户…

iOS App Tech Support(URL)

咪萌是一个语音类交友直播App&#xff0c;分成红艳知己&#xff0c;点唱大厅&#xff0c;歌手驻唱等不同房间分类&#xff0c;广场可以看到其他人发的一些动态&#xff0c;一个非常不错的App 如果您有任何疑问&#xff0c;您可以留言或者将问题发送至我们的邮箱。 我们会第一时…

Python知识点5---字符串的使用

提前说一点&#xff1a;如果你是专注于Python开发&#xff0c;那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了&#xff0c;而如果你和作者一样只是操作其他技术的Python API那就足够了。 Python的字符串在使用上和其他语言的差别不大&#xff0c;常规操作都…