RealVNC: VNC Server has no authentication schemes configured错误

RealVNC连接远程server端的时候,提示:VNC Server has no authentication schemes configured. 错误。

解决方法:

  1. 在server端打开Powershell
  2. 输入以下命令:
New-ItemProperty -Path "HKLM:\Software\RealVNC\vncserver" -Name "Authentication" -Value "VncAuth"
& "C:\Program Files\RealVNC\VNC Server\vncpasswd.exe" -service

按提示输入密码。

重新连接realvnc,输入刚才的密码即可成功连接。

Linux设置IPv4优先

IPv6 VPS套了warp后变成了IPv4和IPv6双栈,如何设置IPv4优先呢?

以debain为例,直接修改 /etc/gai.conf 文件:

vi /etc/gai.conf

#precedence ::ffff:0:0/96 100
把前面的”#”去掉即可。

或者:

echo "precedence ::ffff:0:0/96 100" >>/etc/gai.conf

Debian部署go项目

第一次部署go项目,记录一下过程。

首先update一下:

apt update
apt upgrade

安装nodejs:

apt install nodejs

安装npm:

apt install npm

安装pm2:

npm install pm2 -g

将编译好的go项目文件上传到对应目录之后:

chmod +x golang

运行go项目:

pm2 start golang

查看:

pm2 ls

Linux设置swap交换分区

以debian为例。

创建交换空间文件/swapfile,大小是1G:

fallocate -l 1G /swapfile

默认交换空间文件的权限只有root用户才能写入和读取交换文件的数据。因此我们需要修改交换空间文件的权限为600,并使用mkswap格式化文件。

chmod 600 /swapfile
mkswap /swapfile

启用交换空间:

swapon /swapfile

要在Linux系统启动时自动挂载分区,需要在/etc/fstab文件中定义挂载配置选项:

echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/fstab

运行命令swapon或free命令验证交换空间是否处于活动状态:

swapon --show
free -h

Swappiness

Swappiness是一个Linux内核属性,用于定义系统使用交换空间的频率。Swappiness可以是0到100之间的值。

swappiness=0的时候表示最大限度使用物理内存,然后才是交换空间,swappiness=100的时候表示积极的使用交换空间。

Linux的初始默认设置为60,你可以运行命令cat /proc/sys/vm/swappiness命令查看当前swappiness值的大小。

如果你需要对swappiness的值作出更改,请运行sudo sysctl -w vm.swappiness=10命令。

sysctl命令用于在运行时配置Linux内核的参数,更改仅在当前会话中可用,即重启会恢复为默认值。

为让swappiness的值持久化,则需要将值写入到/etc/sysctl.conf文件中。sysctl.conf是Linux内核的配置文件。在Linux内核启动是将会次配置文件的参数。

运行以下命令持久化Linux内核参数swappiness的值:

echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/sysctl.conf

debian设置ssh密钥登录

1、生成密钥

ssh-keygen

或者:

ssh-keygen -t rsa

一路回车即可。在 root 用户目录中生成了一个 .ssh 目录,内含两个密钥文件。id_rsa 为私钥,id_rsa.pub 为公钥。

2、在服务器上安装公钥

[[email protected] ~]$ cd .ssh
[[email protected] .ssh]$ cat id_rsa.pub >> authorized_keys

如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:

[[email protected] .ssh]$ chmod 600 authorized_keys
[[email protected] .ssh]$ chmod 700 ~/.ssh

3、设置 SSH,打开密钥登录功能

编辑 /etc/ssh/sshd_config 文件,进行如下设置(删除这两行前面的注释#):

AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2
PubkeyAuthentication yes

168itw注:AuthorizedKeysFile不启用,貌似也不影响,没明白这里的作用!

确保允许root 用户通过 SSH 登录:

PermitRootLogin yes

重启ssh服务:

service sshd restart

切换为root用户和密码登录后,下载 .ssh 目录下的私钥文件id_rsa,导入ssh客户端。

确保root用户能够通过密钥登录。

当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录:

PasswordAuthentication no

最后,重启 SSH 服务:

[[email protected] .ssh]$ service sshd restart
继续阅读

常用的数据库管理软件收集

phpmyadmin经常爆出漏洞,而且装在服务器上会占用资源。

收集了一些常用到数据库管理软件,可以直接安装在本地Windows或者Mac。

一、navicat

收费,支持的数据库最全,不过可以教育邮箱学生版激活,网上也有注册机/注册码/破解版,GitHub上也有无限重置试用 navicat premium所有版本的脚本。

https://github.com/malaohu/reset-navicat-premium

https://github.com/yhan219/navicat_reset_mac

二、DBeaver

免费,支持的数据库也很全,我目前就是用的这个。

三、HeidiSQL

免费开源,用的人也很多。

四、TablePlus

收费,网上也能找到序列号。

NAT VPS自建DDNS的几种方法

一、Cloudflare API

这种方法应该是用的最多的。

前提条件:

  • 自有域名
  • 域名已接入Cloudflare

1.获取Global API Key

登入Clooudflare查看:https://dash.cloudflare.com/profile/api-tokens

2.设置DDNS域名

在Cloudflare DNS面板中新建A 记录,例如myddns 指向1.1.1.1 并关闭CF代理开关让云朵灰色。

3.下载cf-ddns脚本

wget -N --no-check-certificate https://raw.githubusercontent.com/yulewang/cloudflare-api-v4-ddns/master/cf-v4-ddns.sh

也可以用GitHub另外2个脚本:

https://github.com/jeessy2/ddns-go

https://github.com/NewFuture/DDNS

4.编辑cf-ddns脚本

vi cf-v4-ddns.sh

或者

​nano cf-v4-ddns.sh

修改脚本中,对应的信息。

# API key, see https://www.cloudflare.com/a/account/my-account,
# incorrect api-key results in E_UNAUTH error
CFKEY=您的Global API Key

# Username, eg: [email protected]
CFUSER=您Cloudflare的帐户名称

# Zone name, eg: example.com
CFZONE_NAME=您的域名

# Hostname to update, eg: homeserver.example.com
CFRECORD_NAME=你的二级域名

保存并退出编辑界面

5.修改cf-ddns脚本权限

chmod +x cf-v4-ddns.sh

6.测试运行脚本

./cf-v4-ddns.sh

##如果上面的步骤无误,您会看到Cloudflare DNS面板中。

##刚才您新建的A 记录IP已更新为VPS的公网IP

7.设定定时任务自动更新ddns的IP

crontab -e

##有些系统会提示让您选择vi或nano编辑定时脚本,选择您熟悉的编辑工具即可

##插入下面一下,表示每分钟更新ddns

*/1 * * * * /root/cf-v4-ddns.sh >/dev/null 2>&1

保存退出。

二、he.net DDNS

he.net的DDNS非常方便,不需要任何脚本,curl请求即可,添加crontab定时任务。

具体参考:https://dns.he.net/docs.html

crontab参考:

*/1 * * * * curl -4 "https://dyn.example.com:[email protected]/nic/update?hostname=dyn.example.com"

he.net会获取当前vps的IP地址更新到dns记录。

三、Dynu.com、ChangeIP.com等

这种很简单,直接注册,然后根据官方提供的脚本更新DNS记录即可。

上面三种方法,都会有一个问题,DDNS生效时间和DNS缓存时间,会导致NAT更换IP后中断几分钟不等。比如cloudflare免费用户DNS TTL是1分钟,he.net是5分钟,dynu是30s。

所以就有了第四种方法,也是最优解决方案。

四、Cloudflare Tunnel

借助cloudflare tunnel实现内网穿透,不受ddns影响,而且完全免费。

cloudflare runnel功能很强大,具体参考官方教程:https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/

Python错误:UnicodeEncodeError: ‘latin-1’ codec can’t encode

Python部署一个项目,运行的时候提示错误:

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-9: ordinal not in range(256)

网上查询说是环境变量问题,python默认编码是  latin1,更改下环境变量。运行以下代码顺利解决。

export PYTHONUTF8=1

顺便记录下Python安装、及过程。

Debian 10安装Python

Debain 10是包换python 2和 python 3的。只需要:

apt update && apt upgrade

查看python版本:

python --version
python3 --version

或者用 python -V查看。

安装pip

apt-get install python3-pip
继续阅读

查看Linux服务器硬盘是固态硬盘(SSD)还是机械硬盘(HDD)

方法一,cat /sys/block/{fs_name}/queue/rotational

Linux 可以自动判定硬盘是否是 SSD,从 2.6.29 的内核版本之后,可以通过如下命令查看硬盘是不是 ssd:

cat /sys/block/{fs_name}/queue/rotational

其中,{fs_name} 是你的硬盘设备名称,例如 vda、vdb、sda 等等。

若上述命令返回 1 表示机械硬盘(hard disk),若返回 0,则表示固态硬盘(ssd)。

需要注意的是,如果设备是例如 RAID 这样的逻辑设备,上述命令可能不可用。

示例如下:

[[email protected] ~]$ cat /sys/block/vdb/queue/rotational
1
[[email protected] ~]$ grep ^ /sys/block/*/queue/rotational
/sys/block/vda/queue/rotational:1
/sys/block/vdb/queue/rotational:1

方法二,利用 lsblk 命令

使用 lsblk 命令进行判断,该命令属于 util-linux(一个 Linux 标准软件包)的一部分,参数 -d 表示显示设备名称,参数 -o 表示仅显示特定的列。

[[email protected] ~]$ lsblk -d -o name,rota
NAME ROTA
vda     1
vdb     1

其中 ROTA 表示 rotational device,1 代表是机械硬盘,0 则就是 ssd 了。

方法三,使用 fdisk 命令

使用 fdisk 命令,后面加 -l 选项表示查看磁盘详细信息,如果输出的详细信息中包含机械硬盘中有的 heads(磁头)、track(磁道)、cylinders(柱面)等概念,那表示是该磁盘是 HDD,否则很有可能是 SSD。

下面分别列出了 HDD 和 SSD 的示例:

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00074f7d
Disk /dev/nvme0n1: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos

方法四,使用第三方工具 smartctl

smartctl 是管理和监控存储硬件工具 smartmontools 的两个程序工具之一,另一个是 smartd 程序工具,可以通过如下命令查看磁盘信息:

smartctl -a /dev/{fs_name}

示例如下:

[[email protected] ~]$ smartctl -a /dev/disk1s1

如果看到如下一行信息,表示是固态硬盘(SSD)。

......
Rotation Rate:    Solid State Device
......
继续阅读

图片反盗链(外链图片出现403的解决方法)

解放方法:

在网页html代码head中添加如下代码:

<meta name="referrer" content="no-referrer" />

原理:

  • http请求体的header中有一个referrer字段,用来表示发起http请求的源地址信息,这个referrer信息是可以省略但是不可修改的,就是说你只能设置是否带上这个referrer信息,不能定制referrer里面的值。
  • 服务器端在拿到这个referrer值后就可以进行相关的处理,比如图片资源,可以通过referrer值判断请求是否来自本站,若不是则返回403或者重定向返回其他信息,从而实现图片的防盗链。上面出现403就是因为,请求的是别人服务器上的资源,但把自己的referrer信息带过去了,被对方服务器拦截返回了403。
  • 在前端可以通过meta来设置referrer policy(来源策略),具体可以设置哪些值以及对应的结果参考这里。所以针对上面的403情况的解决方法,就是把referrer设置成no-referrer,这样发送请求不会带上referrer信息,对方服务器也就无法拦截了。

参考:

继续阅读