网络服务SSH-远程访问及控制

一.SSH远程管理

1.SSH介绍

SSH(Secure Shell)是一种安全通道协议,最早是由芬兰的一家公司开发出来,并且在IETF

(Internet Engineering Task Force)的网络草案基础上制定而成的标准协议。主要用来实现字符

界面的远程登录、远程复制等功能;SSH协议还对通信双方的数据传输进行了加密处理,其中包括

用户登录时输入的用户口令。因此SSH协议具有很好的安全性

拓展:客户端软件 Xshell 界面截图SSH协议默认使用的是22号端口,其他常用的远程连接终端软件还有CRT、MobaXterm 和 Putty 等。

拓展:其他远程连接的方式 telnet (tcp/23端口,明文传输);一般主机上没有下载,需要自己安装

用法:telnet + 目标主机

一般不允许使用 root 用户登录;需要使用其他用户登录后;再切换至 root 用户。

2.OpenSSH 

(1)openssh 介绍

OpenSSH 是服务端软件是实现 SSH 协议的开源软件项目,适用于各种 UNIX、Linux 操作系统。

CentOS 7系统默认已安装openssh相关软件包,并已将 sshd 服务添加为开机自启动;

执行“systemctl start sshd”命令即可启动 sshd 服务;

执行“systemctl enable sshd”命令即可实现开机自动启动 sshd 服务;

sshd 服务默认使用的是TCP的 22端口
sshd 服务的默认配置文件是/etc/ssh/sshd_config

在 /etc/ssh/ 目录下有两个很相似的文件 ssd_config 和 sshd_config 两者ssh服务器的配置文件

二者区别在于 ssd_config 是针对客户端的配置文件, sshd_config 则是针对服务端的配置文件。

 (2)sshd_config 配置文件的常用选项设置

vim /etc/ssh/sshd_config        #服务端配置文件Port 22 						#默认监听端口为 22
ListenAddress 0.0.0.0 			#监听地址为任意网段,也可以指定OpenSSH服务器的具体IP
LoginGraceTime 2m 				#登录验证时间为 2 分钟
PermitRootLogin no 				#禁止 root 用户登录
MaxAuthTries 6 					#最大重试次数为 6
PermitEmptyPasswords no 		#禁止空密码用户登录
UseDNS no 						#禁用 DNS 反向解析,以加快远程连接速度

 (3)配置 sshd 文件  vim /etc/ssh/sshd_config  

[root@192 ~]# vim /etc/ssh/sshd_configPort 1234                    #修改端口号为1234,删掉前面的#号即可
#AddressFamily any
ListenAddress 192.168.10.10 #修改监听地址操作相同修改完,重启sshd服务即可修改成功[root@192 ~]# ss -lntp | grep ssh             #过滤只查看sshd服务的进程信息
LISTEN     0      128          *:22                       *:*                   users:(("sshd",pid=1148,fd=3))
LISTEN     0      128    127.0.0.1:6010                     *:*                   users:(("sshd",pid=1310,fd=9))
LISTEN     0      128       [::]:22                    [::]:*                   users:(("sshd",pid=1148,fd=4))
LISTEN     0      128      [::1]:6010                  [::]:*                   users:(("sshd",pid=1310,fd=8))[root@192 ~]# systemctl restart sshd          #重启sshd服务[root@192 ~]# ss -lntp | grep ssh
LISTEN     0      128    192.168.10.10:1234                     *:*                   users:((sshd",pid=2124,fd=3))
LISTEN     0      128    127.0.0.1:6010                     *:*                   users:(("sshd",pid=1310,fd=9))
LISTEN     0      128      [::1]:6010                  [::]:*                   users:(("sshd",pid=1310,fd=8))#可以从查看信息第一行看见 *:22 改成192.168.10.10:1234
[root@192 ~]# vim /etc/ssh/sshd_configLoginGraceTime 20s				#设置登录验证时间为 20秒,删掉前面的#号即可
MaxAuthTries 4                  #设置最大重试次数为 4PermitRootLogin no				#设置禁止 root 用户登录
PermitEmptyPasswords no 		#禁止空密码用户登录

 【1】登录验证时间设置为20秒

【3】尝试四次密码错误后,服务器断开连接

【2】 禁止root用户登录,换成其他账号可以登录,有时候为了限制sshd服务的用户登录控制,也会禁止空密码账户登录;

【4】白名单和黑名单的使用

允许   AllowUsers
AllowUsers zhangsan lisi wangwu@61.23.24.25禁止   DenyUsers
DenyUsers zhangsan注意:允许和禁止不要同时使用拓展:
@能够让用户只能指定IP进入
多个用户之间用空格分隔

3.使用 SSH 客户端程序

(1)ssh 远程登录

ssh [选项] 用户名@目标主机需要用目标主机的什么用户登录 改变用户名即可
[root@192 ssh]# ssh root@192.168.10.20
[root@192 ssh]# ssh test@192.168.10.20    #在用户存在的情况下如果 SSH 的端口号发生了改变,需要在命令中加入 -p  选项指定端口号
-p:指定非默认的端口号,默认使用 22端口[root@192 ssh]# ssh -p 2345 root@192.168.10.20
[root@192 ssh]# rpm -q openssh           #查看openssh是否安装
openssh-7.4p1-22.el7_9.x86_64[root@192 ssh]# ssh root@192.168.10.20   #登录192.168.10.20The authenticity of host '192.168.10.20 (192.168.10.20)' can't be established.
ECDSA key fingerprint is SHA256:Fw2IK0fZbnTNyDinyZPExCFe7qFpGtzoTY1h9SRzbz8.
ECDSA key fingerprint is MD5:a5:82:97:49:7c:47:84:2a:86:b5:b3:4c:7f:2d:e3:3e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.20' (ECDSA) to the list of known hosts.
root@192.168.10.20's password: 
Last login: Sat Apr 27 20:16:40 2024 from 192.168.10.1[root@192 ~]# ifconfig                    #查看IPens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.10.20  netmask 255.255.255.0  broadcast 192.168.10.255inet6 fe80::1122:13b6:cdab:29e1  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:1b:a9:72  txqueuelen 1000  (Ethernet)RX packets 111  bytes 16588 (16.1 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 154  bytes 19449 (18.9 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

拓展:当用户第一次登录SSH服务器时,必须接受服务器发来的ECDSA密钥(根据提示输入“yes”)后才能继续验证。接收的密钥信息将保存到~/.ssh/known_hosts 文件中。密码验证成功以后,即可登录目标服务器的命令行环境中了

如果要省略这个步骤去  /etc/ssh/ssh_config 客户端配置文件中去修改下面图片中的配置即可

拓展:在 ssh 用户名@目标主机  后面加上命令后可以实现切换到目标主机使用命令后立即退出

[root@192 opt]# ssh root@192.168.10.20 ifconfig
root@192.168.10.20's password: 
Permission denied, please try again.
root@192.168.10.20's password: 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.10.20  netmask 255.255.255.0  broadcast 192.168.10.255inet6 fe80::1122:13b6:cdab:29e1  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:1b:a9:72  txqueuelen 1000  (Ethernet)RX packets 1625  bytes 159986 (156.2 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 1106  bytes 123151 (120.2 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@192 opt]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.10.10  netmask 255.255.255.0  broadcast 192.168.10.255inet6 fe80::cb8c:1559:2416:bfcd  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:6d:59:11  txqueuelen 1000  (Ethernet)RX packets 7081  bytes 655153 (639.7 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 5332  bytes 714983 (698.2 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

(2)scp 远程复制

【1】将目标主机的文件或目录复制到本机

scp [-P 端口] [-r] 用户名@目标主机IP:绝对路径  本机路径 
常用选项
scp -P   #端口号不同的情况下使用
scp -r   #复制目录的时候使用
目标主机下/opt/目录下有文件 123.txt 和目录 abc ;abc目录下有文件a.txt,内容abcdefg[root@192 ssh]# cd /opt/
[root@192 opt]# ls
rh
[root@192 opt]# scp root@192.168.10.20:/opt/123.txt /opt/    #复制文件到本机/opt/目录下
root@192.168.10.20's password: 
123.txt                                         100%    7     2.4KB/s   00:00    
[root@192 opt]# ls
123.txt  rh
[root@192 opt]# scp -r root@192.168.10.20:/opt/abc /opt/    #复制目录到本机/opt/目录下
root@192.168.10.20's password: 
a.txt                                           100%    8     5.0KB/s   00:00    
[root@192 opt]# ls
123.txt  abc  rh
[root@192 opt]# cat abc/a.txt
abcdefg

拓展:如果当前目录中存在文件名一样的文件,将会直接覆盖;不会有提示;一定要注意使用

[root@192 opt]# ls
123.txt  abc  rh 
[root@192 opt]# cat 123.txt                #查看文件内容
123456
[root@192 opt]# scp root@192.168.10.20:/opt/123.txt /opt/   #复制目标主机中的文件
root@192.168.10.20's password: 
123.txt                                100%    7    13.7KB/s   00:00    
[root@192 opt]# cat 123.txt                #查看文件内容
654321#只要复制过程修改复制文件的文件名即可
[root@192 opt]# scp root@192.168.10.20:/opt/123.txt /opt/1234.txt  #修改文件名
root@192.168.10.20's password: 
123.txt                                100%    7     5.0KB/s   00:00    
[root@192 opt]# ls
1234.txt  123.txt  abc  rh

【2】将本地的文件/目录复制到目标主机

scp [-P 端口] [-r] 本机文件/目录路径 ...  用户名@目标主机IP:绝对路径
                      #复制文件和目录到192.168.10.40主机中
[root@192 opt]# scp -r *.txt abc root@192.168.10.40:/opt/The authenticity of host '192.168.10.40 (192.168.10.40)' can't be established.
ECDSA key fingerprint is SHA256:BrrBajtrhef9T6SQ+0qza0JYtNaFoPYobWfI6wvUuQ0.
ECDSA key fingerprint is MD5:14:60:55:d3:76:b4:6c:e8:fd:fd:60:c6:29:f6:7d:00.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.40' (ECDSA) to the list of known hosts.
root@192.168.10.40's password: 1234.txt                                                     100%    7    13.4KB/s   00:00    
123.txt                                                      100%    7     7.3KB/s   00:00    
a.txt                                                        100%    8    21.9KB/s   00:00  [root@192 opt]# ssh root@192.168.10.40         #切换到192.168.10.40主机中
root@192.168.10.40's password: 
Last login: Sat Apr 27 21:12:26 2024 from 192.168.10.1
[root@192 ~]# cd /opt/                         
[root@192 opt]# ls                             #查看文件和目录是否传输过来
1234.txt  123.txt  abc  rh
[root@192 opt]# 

(3)sftp 文件传输

使用了加密/解密技术,传输效率比普通的FTP要低,但安全性更高;操作语法sftp与ftp几乎一样。

sftp  用户名@目标主机
[root@192 opt]# sftp 用户名@目标主机sftp> get 文件名		    #下载文件到ftp目录
sftp> put 文件名		    #上传文件到ftp目录
sftp> quit				#退出
[root@192 opt]# sftp root@192.168.10.20    #切换到目标主机
root@192.168.10.20's password: 
Connected to 192.168.10.20.
sftp> cd /opt/                             
sftp> ls
123.txt  abc      rh       
sftp> get 123.txt                          #下载文件到ftp目录
Fetching /opt/123.txt to 123.txt
/opt/123.txt                               100%    7     6.4KB/s   00:00    
sftp> get abc                              #下载目录,失败,只能下载文件
Fetching /opt/abc/ to abc
Cannot download non-regular file: /opt/abc/                             
sftp> cd abc/                              #需要切换到文件所在的目录
sftp> ls
a.txt  
sftp> get a.txt
Fetching /opt/abc/a.txt to a.txt
/opt/abc/a.txt                               100%    8     4.5KB/s   00:00    
sftp> cd /home/liu/                          #切换到需要上传的目录
sftp> ls
sftp> put 123.txt                            #上传文件到ftp目录 
Uploading 123.txt to /home/liu/123.txt        
123.txt                                      100%    7     3.3KB/s   00:00    
sftp> quit                                   #退出
[root@192 opt]# #验证 sftp 服务是否使用成功 
[root@192 opt]# ls                           #查看本机文件是否下载成功
123.txt  a.txt
[root@192 opt]# ssh root@192.168.10.20       #切换到主机到192.168.10.20
root@192.168.10.20's password: 
Last login: Sat Apr 27 21:37:34 2024 from 192.168.10.10
[root@192 ~]# cd /home/liu/                   #查看文件是否上传到目标目录
[root@192 liu]# ls
123.txt  a.txt
[root@192 liu]# 

4.sshd 服务支持两种验证方式

4.1账号密码登录

对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解

PasswordAuthentication yes

4.2密钥对验证登录

要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可以免交互登录。

PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys    #服务端的公钥文件默认保存路径

拓展1:密码验证和密钥对验证优先级

当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。可根据实际情况设置验证方式。
vim /etc/ssh/sshd_config
PasswordAuthentication yes                      #启用密码验证
PubkeyAuthentication yes                        #启用密钥对验证
AuthorizedKeysFile .ssh/authorized_keys         #指定公钥库文件

 拓展2:公钥和私钥的关系

(1)公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密。
(2)不能根据一个密钥来推算出另一个密钥。
(3)公钥对外公开,私钥本地持有,只有私钥的持有人才知道

4.3密钥对的创建和使用

(1)确保服务端开启了ssh密钥对验证

vim /etc/ssh/sshd_config      #进入到文件中查看密钥对验证是否开启PubkeyAuthentication yes 

(2)在客户端创建密钥对

                            #公钥和私钥文件的存放路径
[root@192 ~]# cd /root/
[root@192 ~]# ls -A
anaconda-ks.cfg  .bashrc  .dbus                 .local    .Xauthority  图片  桌面
.bash_history    .cache   .esd_auth             .ssh      公共         文档
.bash_logout     .config  .ICEauthority         .tcshrc   模板         下载
.bash_profile    .cshrc   initial-setup-ks.cfg  .viminfo  视频         音乐
[root@192 ~]# cd /root/
[root@192 ~]# cd .ssh/
[root@192 .ssh]# ls
id_rsa  id_rsa.pub
[root@192 .ssh]# #id-rsa 为私钥文件   #id-rsa.pub 为公钥文件生成的密钥对默认存放在当前用户家目录的 .ssh/ 目录中,
私钥是留给自己使用的,公钥(XXX.pub)是给服务端使用的

(3)上传公钥至服务端

[root@192 .ssh]# ssh-copy-id -i id_rsa.pub root@192.168.10.10/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
The authenticity of host '192.168.10.10 (192.168.10.10)' can't be established.
ECDSA key fingerprint is SHA256:I6OYY2CvnKXi1ka6D5JqIGc1SlgZkiplUnLT7TUYZk4.
ECDSA key fingerprint is MD5:93:27:ec:d1:d0:6f:eb:2c:7e:6a:2a:db:e4:d6:f2:b4.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.10.10's password: Number of key(s) added: 1Now try logging into the machine, with:   "ssh 'root@192.168.10.10'"
and check to make sure that only the key(s) you wanted were added.[root@192 .ssh]# #到服务端去查看公钥文件位置
[root@192 ~]# ls -A
anaconda-ks.cfg  .bashrc  .dbus                 .local    .Xauthority  图片  桌面
.bash_history    .cache   .esd_auth             .ssh      公共         文档
.bash_logout     .config  .ICEauthority         .tcshrc   模板         下载
.bash_profile    .cshrc   initial-setup-ks.cfg  .viminfo  视频         音乐
[root@192 ~]# cd .ssh/
[root@192 .ssh]# ls
authorized_keys               #公钥文件
[root@192 .ssh]# cat authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCpW2x2LEiWoQVKxnQCRDZnUqn/JCCJsGBPB+kGavnzUt2S1o6mUiZLzS7B/1LnHURns2Q2rzIFleKFZblpXKJ2Z0drHE+bmKtgzl+8V1tKlFXYXLssVL6xBOtIUK2OUEfEfEGZrWTYdRrvnkxrhxr+hGah2pZxHsJ9KCk2wcp4A9b1TRfEcAISxDEbpm8RZ5TRZwvxMuPg9P0hBRQSbN2lomEj9x34e8i/QP42hUq5V2MGe56b9YsIavMztWdpZR4c1aGJXxYO8jw3HvplmfqEh14UPg7AwIqCeJC/KVaX8iYq60atagfDcehftqr07FPmcJ2ZzMnesGbz+WwoiPsr root@192.168.10.20#公钥信息会自动保存到服务端的 ~/.ssh/authorized_keys 文件里

(4)客户端 ssh 远程登录,使用密钥对的密码进行验证

[root@192 .ssh]# ssh root@192.168.10.10         #连接到目标主机
Enter passphrase for key '/root/.ssh/id_rsa':   #输入设置的密钥密码
Last login: Sat Apr 27 22:55:10 2024 from 192.168.10.1
[root@192 ~]# ifconfig                          #查看IP
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.10.10  netmask 255.255.255.0  broadcast 192.168.10.255inet6 fe80::cb8c:1559:2416:bfcd  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:6d:59:11  txqueuelen 1000  (Ethernet)RX packets 2076  bytes 1974859 (1.8 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 875  bytes 103204 (100.7 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

拓展1:注密钥对在客户端是谁创建的,只能谁使用;密钥对上传给服务端的哪个用户,那么就只能使用那个用户去登录。

拓展2:免密登录

1.在客户端创建密钥对的时候不创建私钥密码,正常上传公钥文件到服务区,即可实现免密登录

2.创建ssh会话代理(只能在当前会话中有效)

ssh-agent bash
ssh-add
Enter passphrase for /root/.ssh/id_ecdsa:
Identity added:/root.ssh/id_ecdsa(/root.ssh/id_ecdsa)#即可实现面交互登录

拓展3:一键创建实现密钥对的创建和一键实现公钥文件的上传

ssh-keygen -t rsa -P '' -f  ~/.ssh/id_rsa
sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@192.168.80.20
需要提前安装 sshpass 软件

 二.TCP Wrappers 访问控制

1.TCP Wrappers介绍

TCP Wrappers(TCP封套) 是一个简单的防火墙机制。用来将TCP服务程序“包裹”起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。

2.TCP Wrappers 保护原理

3.TCP Wrappers 保护机制的两种实现方式

(1)直接使用 tcpd 程序对其他服务程序进行保护,需要运行 tcpd 程序。

(2)由其他网络服务程序调用 libwrap.so.* 动态函数库,不需要运行 tcpd 程序。此方式的应用更加广泛,也更有效率。

由于支持 TCP Wrappers 的服务必定包含 libwrap 这一个动态函数库,可以使用 ldd 来查看服务

ldd $(which sshd) | grep libwrap       #sshd的libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f91d0bdb000)ldd $(which vsftpd) | grep libwrap     #vsftpd的libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f4304f3b000)which 查找文件路径     $直接提取 which sshd 的结果

(3)TCP Wrappers 的访问策略

TCP Wrappers 机制的保护对象为各种网络服务程序,针对访问服务的客户端地址进行访问控制。

通过 /etc/hosts.allow,/etc/hosts.deny 这两个文件来管理的一个类似防火墙的机制,分别用来设置允许和拒绝的策略。

/etc/hosts.allow 设置允许访问 tcp 服务程序的策略(白名单)

/etc/hosts.deny 设置禁止访问 tcp 服务程序的策略    (黑名单)

(4)TCP Wrappers 的格式

<服务程序列表>:<客户端地址列表>

【1】服务程序列表
ALL:代表所有的服务。
单个服务程序:如“vsftpd”。
多个服务程序组成的列表:如“vsftpd,sshd”

【2】客户端地址列表
ALL:代表任何客户端地址。
LOCAL:代表本机地址。
多个地址以逗号分隔
允许使用通配符 “*” 和 “?” ,前者代表任意长度字符,后者仅代表一个字符
网段地址,如 “192.168.80.” 或者 192.168.80.0/255.255.255.0 (掩码只支持 netmask 的地址显示方式)
区域地址,如 “.benet.com”匹配 benet.com 域中的所有主机。

 ALL:ALL 表示所有用户和所有客户端

(5)TCP Wrappers 机制的基本原则

首先检查/etc/hosts.allow文件,如果找到相匹配的策略,则允许访问;

否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问;

如果检查上述两个文件都找不到相匹配的策略,则允许访问。

“允许所有,拒绝个别”
只需在/etc/hosts.deny文件中添加相应的拒绝策略

“允许个别,拒绝所有”
除了在/etc/hosts.allow中添加允许策略之外,还需要在/etc/hosts.deny文件中设置“ALL:ALL”的拒绝策略

(6)示例操作

 

三.总结

1.要理解sshd配置文件的用法

2.要知道使用SSH客户端的程序

3.了解 sshd 服务支持的验证登录方式

4.了解 /etc/host.allow 和/etc/hosts.deny 的含义和用法

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

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

相关文章

IP地址的定位精度及其影响因素

IP地址作为互联网通信的基础&#xff0c;其定位精度对于许多应用至关重要&#xff0c;如网络安全、市场营销和用户定位等。然而&#xff0c;IP地址的定位精度受到多种因素的影响&#xff0c;本文将探讨这些因素以及它们对IP地址定位精度的影响。 IP地址查询&#xff1a;IP66_i…

windows ubuntu sed,awk,grep篇,8,Awk 语法和基础命令

目录 51.Awk 命令语法 52.Awk 程序结构(BEGIN,body,END)区域 53.打印命令 54.模式匹配 Awk 是一个维护和处理文本数据文件的强大语言。在文本数据有一定的格式&#xff0c;即每行数据包 含多个以分界符分隔的字段时&#xff0c;显得尤其有用。即便是输入文件没有一定的格式&a…

sCrypt全新上线RUNES功能

sCrypt智能合约平台全新上线一键etch/mint RUNES功能&#xff01; 请访问 https://runes.scrypt.io/ 或点击阅读原文体验&#xff01; 关于sCrypt sCrypt是BSV区块链上的一种智能合约高级语言。比特币使用基于堆栈的Script语言来支持智能合约&#xff0c;但是用原生Script编…

微信小程序实时日志使用,setFilterMsg用法

实时日志 背景 为帮助小程序开发者快捷地排查小程序漏洞、定位问题&#xff0c;我们推出了实时日志功能。开发者可通过提供的接口打印日志&#xff0c;日志汇聚并实时上报到小程序后台。开发者可从We分析“性能质量->实时日志->小程序日志”进入小程序端日志查询页面&am…

《异常检测——从经典算法到深度学习》27 可执行且可解释的在线服务系统中重复故障定位方法

《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Donut: …

AI 工具合集

以下工具来源于互联网&#xff0c;可能会失效&#xff0c;请参考使用 网红工具 名称链接说明GPT-4https://chat.openai.com/ 需要梯子&#xff0c;需要付费。功能最强大的聊天机 器人。 文心一言https://yiyan.baidu.com/welcome 国内版 GPT&#xff0c;需要申请账号。回答问…

ChromaDB教程

使用 Chroma DB&#xff0c;管理文本文档、将文本嵌入以及进行相似度搜索。 随着大型语言模型 &#xff08;LLM&#xff09; 及其应用的兴起&#xff0c;我们看到向量数据库越来越受欢迎。这是因为使用 LLM 需要一种与传统机器学习模型不同的方法。 LLM 的核心支持技术之一是…

IDEA使用技巧(常用设置、快捷键等)

IDEA使用技巧 一、IDEA常用基本设置设置代码背景颜色/主题/字体Ctrl鼠标滚轮缩放字体大小设置字符编码左右两侧的Project&#xff0c;Structure&#xff0c;Maven等按钮消失新增类似sout,psvm的模版切换某个模块编译的JDK版本 二、常用快捷键CtrlAltT包裹代码Alt回车联想补全Ct…

How to solve matplotlib Chinese garbled characters in Ubuntu 22.04

conda create -n huizhou python3.8conda activate huizhouconda install numpy matplotlibpip install mplfontsmplfonts init# 导入必要的库 import numpy as np import matplotlib.pyplot as plt# 创建角度数组&#xff0c;从0到2π x np.linspace(0, 2 * np.pi, 100)# 计算…

七、OSPF特殊区域及其特性

目录 OSPF区域分类 hello报文中option字段 1.末节区域&#xff08;Stub区域&#xff09; 2.完全末节区域&#xff08;Toally Stub区域&#xff09; 3.七类LSA 4.非完全末节区域&#xff08;NSSA区域&#xff09; 5.完全非完全末节区域&#xff08;Toally NSSA区域&#…

Windows Server配置网卡绑定:NIC组合

正文共&#xff1a;1024 字 12 图&#xff0c;预估阅读时间&#xff1a;1 分钟 在网络设备上&#xff0c;为了提高可靠性&#xff0c;一般会配置链路聚合&#xff08;Link Aggregation&#xff09;&#xff08;网络之路28&#xff1a;二层链路聚合&#xff09;&#xff0c;同样…

# 从浅入深 学习 SpringCloud 微服务架构(四)Ribbon

从浅入深 学习 SpringCloud 微服务架构&#xff08;四&#xff09;Ribbon 段子手168 一、ribbon 概述以及基于 ribbon 的远程调用。 1、ribbon 概述&#xff1a; Ribbon 是 Netflixfa 发布的一个负载均衡器,有助于控制 HTTP 和 TCP客户端行为。 在 SpringCloud 中 Eureka …

UE Snap03 启动参数设置

UE Snap03 启动参数设置 UE打包后传入自定义参数及解析。 void UGameInstance::StartGameInstance() {Super::StartGameInstance();UE_LOG(LogTemp, Warning, TEXT("--StartGameInstance--"));FString param;FParse::Value(FCommandLine::Get(), TEXT("-UserN…

【Ant-Desgin 头像上传框】限制数量为1张图片,base64,其他需求可以改我组件中的代码

Ant-Desgin 头像上传框 样式图参数主要代码UpLoad 组件父组件 样式图 图片数量限制为1&#xff0c;当选择了图片后&#xff0c;需要切换图像时需点击头像完成切换 参数 /*** description: 图片上传组件* param {*} action: 上传地址* param {*} width: 宽度* param {*} height…

flink Unsupported operand types: IF(boolean, NULL, String)

问题&#xff1a;业务方存储了NULL 字符串&#xff0c;需要处理为 null select if(anull&#xff0c;null&#xff0c;a); 结果遇到了 Unsupported operand types: IF(boolean, NULL, String)&#xff0c;根据报错反馈&#xff0c;很明显应该是没有对 null 自动转换&#xff…

应用层协议 -- HTTPS 协议

目录 一、了解 HTTPS 协议 1、升级版的 HTTP 协议 2、理解“加密” 二、对称加密 1、理解对称加密 2、对称加密存在的问题 三、非对称加密 1、理解非对称加密 2、中间人攻击 3、CA 证书和数字签名 四、总结 一、了解 HTTPS 协议 1、升级版的 HTTP 协议 HTTPS 也是…

untiy avpro播放超过8K视频的解决方案

安转LAV Filters解码器&#xff0c;然后指定Avpro使用这个解码器播放即可 第一步 安装解码器 下载链接 第二步 AVPro设置 MediaPlayer脚本中一共两处

jasypt组件死锁bug案例分享

事故描述 1、上午9.55发布了一个Apollo动态配置参数&#xff1b; 2、片刻后&#xff0c;服务器接口开始出现大量的超时告警&#xff0c;似乎是某资源被耗尽不足分配&#xff1b; 3、正值业务请求高峰的上午十点&#xff08;平台上午10点会有一些活动会拉一波用户流量&#x…

深入docker-swarm overlay网络模型

目录 1.简介 2.网络模型 3.docker_gwbridge网络 3.1.docker_gwbridge网关地址 3.2.检查docker_gwbridge网络 3.2.1.查找任务容器eth接口 3.2.2.查找ingress-sbox容器eth接口 4.检查ingress网络 4.1.检查ingress网络 4.2.检查ingress网络的命名空间 4.2.1.查找任务容…

VBA技术资料MF147:从Excel运行PowerPoint演示文稿

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…