阅读视图

发现新文章,点击刷新页面。

停止 SSH 服务器监听 IPv6 地址

为啥要停止 SSH 服务器监听 IPv6 地址?

  许多同学家里都有软路由或者小型服务器,用来跑一些个人的小程序,或者跑 TeamTalk 等。现在 IPv6 已经基本普及,好处是每个设备甚至每个容器都能分配到一个公网 IP 地址,坏处也显而易见,那就是,之前靠路由器来充当防火墙的搞法已经不奏效了。为啥捏?因为之前基本都是在路由器上做端口映射,可以有选择地开放端口到互联网上,现在则是整个系统暴露到了互联网。

  看到这里,聪明的同学应该都已经知道俺想表达的意思啦。没错,咱们都是通过 SSH 来控制服务器的,一旦它被入侵,后果是很严重滴!删库跑路还不是最大的问题,最大的问题是骇客潜伏在服务器里,三天两头搞些事情,如果你有很多的虚拟机,仅凭一己之力,是很难彻底跟踪入侵踪迹的。

怎么停止 SSH 服务器监听 IPv6 地址?

  首先,通过终端/SSH 之类的方法登录你的服务器,并进入 /etc/ssh 目录,用 cp 命令备份一下 sshd_config 文件,具体命令俺就不多费口水了。备份好之后,用你习惯的编辑器打开 sshd_config 文件,比如俺喜欢用 nano 编辑器,命令是 nano sshd_config

  找到 #AddressFamily any 这一行,把前面的“#(警号)”删除,改成 AddressFamily inet。往下找到 #ListenAddress 0.0.0.0,再把前面的“#”删除。最后,保存 sshd_config 文件。

  这还没完!要想让修改生效,必须重启 SSH 服务端软件,在 CentOS/Debian/Ubuntu 系统上,命令是 systemctl restart sshd,在 Alpine Linux 系统上,命令是 service sshd restart

  切记!先别断开 SSH 连接,一定要看刚才执行命令后是否有报错信息,如果有,赶紧恢复之前的备份,然后重新修改配置文件并再次尝试重启。

检查 SSH 服务器是否停止监听 IPv6 地址

  当修改完成后,一定要有复查的习惯。咋复查捏?在有 IPv6 连接的内网电脑上,通过 SSH 连接服务器的 IPv6 地址,如果连接不上就表示修改成功了。为了避免误判,俺建议通过 ping 以及连接这台服务器的其他端口(例如 Web 端口)来再次确认。

我把 Google reCAPTCHA 换成了 Cloudflare Turnstile

引子

  最近确实有点懒了,从 2023 年 10 月开始就没怎么更新博文,导致去年十月份那篇博文变成了 2 字头的绝唱哈哈哈。话说这年头各种自动化程序令人不胜其烦,自动发垃圾评论的,自动破解管理员密码导致账号被锁的比比皆是,于是我就开始使用谷歌的验证码 reCAPTCHA。

  Google 宣布 reCAPTCHA 的免费额度大降,于是我把验证码系统换成了 Cloudflare 的 Turnstile。一方面当然是免费,另一方面就是更少的打断。你不再需要找红绿灯或者广告牌才能发评论了,哦,当然我也不需要每次登录后台就要过一遍英语听力测试哈哈哈。至于 Turnstile 能挡住多少机器人,这得看我网站后台登录失败的日志才知道了。

怎么把 reCAPTCHA 换成 Cloudflare Turnstile

  如果你想在 WordPress 网站中使用 Turnstile 需要做这些事情:

  1. 申请一个 Cloudflare 帐户,这应该好说吧。
  2. 登录 https://dash.cloudflare.com/?to=/:account/turnstile,然后添加你的站点。添加时,站点名称可以随便写)但最好不要有中文和空格等符号),站点域名填写你的网站的主域名(例如我的是 viyf.org),没有提到的参数就保持默认。添加好之后,分别复制站点密钥和密钥(中文真不好翻译)。
  3. 停用并卸载当前 WordPress 站点的 reCAPTCHA 插件,如果插件还附带你需要的其他功能,那就请你自己处理,达到停用 reCAPTCHA 的目的。卸载后如果你有能力,或者插件提供扫尾功能,那就清理一下数据库里的残留数据吧。
  4. 搜索并安装 Cloudflare Turnstile 插件。我用的是 Simple Cloudflare Turnstile,没别的原因,后台搜索插件第一个结果就是这个插件。
  5. 进入 WordPress 网站的后台,进入 Cloudflare Turnstile 页面。在 Site Key 中填写站点密钥,在 Secret Key 中填写密钥。来到 Enable Turnstile on your forms,勾选 WordPress Login 、WordPress Register 、WordPress Reset Password 和 WordPress Comment 复选框。
    注意:如果使用的是多站点安装,请分别在每个站点中完成第五步的操作。

可能会出现的问题

  1. 由于 Cloudflare Turnstile 在墙外,可能中国的访问者会无法连上 Turnstile 的服务器,导致无法完成验证,从而妨碍他们正常访问网站。
  2. 从 reCAPTCHA 换成 Turnstile 可能需要一段时间来磨合,是否要用 Nginx 的基本身份验证方法来保护后台需要视情况而定。

Nginx 阻止客户端直接访问服务器 IP 地址(空主机)443 端口的方法

Nginx 阻止直接访问 IP 地址 443 端口的方法

  出于安全考虑,通常我们会禁止直接通过 IP 地址访问服务器上的网站,Armstrong 就是这样做的。但这样做有个缺点,无论怎么做,都是要用一个网站做“牺牲者”,这真的是最优解吗?

  我希望 Nginx 直接断开通过 IP 地址而非正确域名访问服务器的客户端,今天我在体验 1Panel 时,发现了他们的实现思路。简单说,1Panel 创建一个默认的 HTTPS 站点,并让 Nginx 拒绝与客户端进行 TLS 握手。下面是代码示例:

# Create an empty variable named viyf_443_empty
map "" $viyf_443_empty {
default "";
}

# Create a default 443 virtual host to block clients that access the server directly via IP address
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl_ciphers aNULL;
ssl_certificate data:$viyf_443_empty;
ssl_certificate_key data:$viyf_443_empty;
ssl_reject_handshake on;
}

将如上代码加入到 nginx.conf 中第一个虚拟主机的上面,然后重新加载 Nginx 服务。

温馨提示:
1. 此方法仅能在 Nginx 1.19.4 及更新版本上使用
2. 如果定义了其他的默认站点(在 listen 中指定了 default_server 参数),请取消那些站点的 default_server

华东 Journey

  2023 年 8 月 19 号到 27 号,我游玩了六座城市。在这次旅程中,我品尝了当地美食,与朋友们见面,还游玩了一些景点。我要感谢帮助过我的工作人员,接待我的朋友们,以及陪我逛景点的志愿者。谢谢你们!我去过哪些城市,吃了什么美食,玩了什么呢?视障者独自乘坐飞机、高铁和地铁,是否困难重重呢?我又收获到什么呢?走!带你踏上这段旅程!

为什么我想要去华东地区

  小时候,我就在课文中知道了江苏和浙江,在我的印象里,那是一个发达而又有诗意的地方,去江浙玩耍的想法就此萌生。转眼间我长大了,时间也来到了 2020 年,一切都被疫情改变了。在疫情期间,我和江浙的网友一起愉快地合作,完成了歌曲和软件的制作,也进一步了解了江浙,更加深了我去江浙玩耍甚至与他们见面的想法。

  2023 年,疫情结束了,我通过几年时间赚到了一些钱,至于多少呢?哈哈我肯定不如你们赚钱厉害对吧,但是人也得有梦想,要不这辈子还有什么意义呢?你说对不对呀。经济上条件成熟了,那就把梦想变成现实。

行前准备

  这次旅行,我还想体验各种交通工具带来的乐趣,于是,我独自购买了一张从白莲机场到龙湾机场的票。为了进一步体验飞行带来的乐趣,我又钻到被子里订购了两张机票,别着急,等一下你们就知道是从哪到哪的机票了。高铁票当然也要安排上,至于随身物品,这个更得准备妥当了,不然怎么刷牙洗脸,怎么洗澡,怎么喝开水对吧?至于衣服,这个就不用多说了吧,我个人建议是贴身的最好带足,以备不时之需,出门前还应该关注目的地的天气情况。充电宝,嗯,这可以说是我的第二条命,肯定不会落下喽。

  稍微跑题一下,分享一些我个人的经验:

  购买飞机票的操作流程是酱紫滴:首先,最好先确认一下出行的日期,机票月提前越便宜,确认好之后,就打开“航旅纵横”或者“携程旅行”,查一下出行当天的航班及价格。只要不是太冷门的航线,基本上都会有好几个班次。如果出行的时间有弹性,还可以看看预计出行日期头尾几天的票价,也许会有惊喜哦。选择好航班之后,就下载所属航司的 App,在其中购票可以累积旅程,旅程到达一定额度是可以兑换机票或者其他服务的。

  购买火车票的操作相对简单,只需要在铁路 12306 App 即可完成购买,是不是比机票简单一些呢?火车票什么时候购买都成,价格不会水涨船高,但是视障者最好在发车前 12 小时以上购买,原因吗?先不告诉你。

  视障者购买机票和火车票以后,可以申请重点旅客服务。服务内容是引导进出站,引导过安检,找座位,以及其他帮助等。如果购买的是火车票,可以在铁路 12306 上申请重点旅客服务,位置是“我的”→“温馨服务”→“重点旅客”。需要注意的是,铁路 12306 App 上申请重点旅客有个前提条件,就是只能申请距离发车时间 12 小时以上车次的重点旅客,如果距离发车时间短于 12 小时,就只能电话申请或者现场申请了。

  飞机因为涉及到机场与航司的协调,手续稍微繁琐。通常,在航司的网站/App 都可以找到申请重点旅客的入口,向航司申请后,他们会帮助协调好机场。如果航司没有与机场协调,只需来到机场中航司对应的柜台申请重点旅客服务即可。为了避免这种情况耽误行程,航司都会推荐提前两小时到机场等候。每架飞机可以预约的重点旅客数量有限,因此某些航司会建议旅客先申请重点旅客服务,然后再购买机票。

  在说话之余,我家人已经把我送到了白莲机场。果不其然,东航并没有妥善的与白莲机场协调好,工作人员又问了网页表单上相同的问题。我心里肯定是有点不高兴的,但是又能怎样呢?别人问啥,我就回答啥呗。回答完了这些问题,工作人员也填了表之后,机场的另一位工作人员把我带到了安检口。飞机的安检要比高铁来得严,一切隐私在机场的安检面前都是浮云,包里所有东西,尤其是电子相关的东西都必须拿出来,一五一十的交代。至于身体,就差没脱衣服了哈哈哈,不过这也是为了飞行安全的考虑吗。我家人回家了,我一个人在候机大厅等候。

  头一次坐飞机,没错,头一次,这飞机也不够意思呀,给我来了个下马威,什么呢?延误。我随口说了句,这去温州的飞机什么时候才会起飞呀?旁边的同路人跟我说,这架飞机延误了整整一个小时。那就跟她聊聊天吧。我喝水太多了,这机场的工作人员也挺够意思,带我去上厕所,还帮我打水,就这样一个小时过去了。

  第一次飞行马上要成为现实,坐飞机的体验如何呢?万米高空会不会失重呢?在飞机上能不能使用手机呢?到了温州我又又何去何从呢?会不会遇到什么挑战呢?请点击下一页继续……

XFS 文件系统挂载不上,提示 wrong fs type, bad option, bad superblock

起因

  这些天一直在折腾小主机,由于看不见,所以我经常拿来云映像,改完 root 密码,允许 root 通过 SSH 登录之后就直接刷入小主机。这都没啥,但是如果要在小主机上继续改造云映像呢?好吧问题就这样让你发现了。

  也许是偷懒的缘故吧,我更喜欢在小主机上安装红帽系的 Linux。虽然红帽后台的大老板 IBM 骚操作不断,频频引起公愤,但 10 年的支持周期的确有点诱人。我又不是直接用小主机跑各种业务软件,系统的库文件版本老就老呗,我不用隔上几年就钻到洞里面拆装硬盘就心满意足了。

遇到问题

  今天我又要改造一个云映像了,当然是拿先前刷进小主机的映像继续改。我心想反正是一样的系统版本,改造起来可以避免由于版本差异带来的问题。这个想法很美好,可惜好事多磨呀。

mount: /mnt: wrong fs type, bad option, bad superblock on /dev/nbd0p5, missing codepage or helper program, or other error. 把这句话机翻之后得到的是:mount: /mnt: 错误的文件系统类型、错误的选项、/dev/nbd0p5 上的错误超级块、缺少代码页或帮助程序或其他错误。

尝试解决

  时间仓促也不管是什么问题了,拿到一台 Debian 机器就开始挂载,结果一切成功,没有任何报错。奇怪吧?不过去 Debian 系统挂载显然是权宜之计,而且非常反直觉。百思不得其解,于是我去 Google 一顿搜索,关键词就是上面那段报错信息,唯一的不同就是我把设备路径和挂在路径隐去了。结果搜出来的全是 Ubuntu 上的问答,答案无外乎就是说需要格式化分区。我在报错信息之前添加 CentOS XFS,然后就搜索出了答案。

  原来,XFS 为了防止同一个文件系统被多次挂载,在格式化硬盘并创建文件系统时会给文件系统打上 UUID。挂载分区时,XFS 检测到当前挂载了相同 UUID 的分区,就会拒绝执行挂载。当时就是用同一份云映像刷写了小主机,所以在小主机上就不能挂载这个云映像了。

解决问题

  知道了产生问题的原因,怎么解决问题呢?只需要在挂载时使用 nouuid 参数即可。就像这样:mount -o defaults,nouuid /dev/nbd0p5 /mnt

好了,其实只要在遇到问题时,多看看日志,相对来说就更容易定位到问题,mount 所说的原因太过于笼统。

参考资料

Server Fault – mount: wrong fs type, bad option, bad superblock on /dev/xvdf1, missing codepage or helper program, or other error

无法打开虚拟机的密钥保护器。 .详细信息包含在 HostGuardianService-Client 事件日志中。咋办?备份 Hyper-V 的虚拟 TPM 证书

  众所周知安装 Windows 11 的先决条件是电脑拥有可信平台模块(TPM),在虚拟机安装 Windows 11 也不例外。由于我用的是 Hyper-V,所以就以 Hyper-V 做介绍,VMware 和 VirtualBox 还不大一样。微软看来要重蹈 EFS 的覆辙,也就是没有充分告知开启虚拟 TPM 会带来的风险(为了省点口水,下称 vTPM)。

  在没有加入域的电脑上 vTPM 的加密密钥和证书就存储在电脑的机器证书中,一旦你把系统重装了那么证书自然会被删除,当你装好系统和 Hyper-V,并重新导入虚拟机后,虚拟机就无法开机了。

  如果没有在虚拟机内不启用 Bitlocker,那么情况会好一些,只需去掉“启用 TPM”的复选框就可以开机并且正常使用,但如果启用了 Bitlocker 那虚拟机就彻底报废了,的确没有人能恢复虚拟机的数据。开启虚拟机的提示是这样的:无法打开虚拟机“虚拟机名称”的密钥保护器。 .详细信息包含在 HostGuardianService-Client 事件日志中。参数不正确。 (0x80070057)。

  有没有感觉跟当年的 EFS 似曾相识?没做微软就是这么欠打,又犯了同样的错误。但是你打他也没用,唯有吃一见长一智能避免再次被坑。

导出(备份)vTPM 的证书

  有两种方法能备份 vTPM 的证书,一种方法是使用 MMC,另一种方法是用国外大神 Lars Iwer 写好的 PowerShell 脚本。想要用脚本的同学可以直接拉到下面,这里我着重介绍使用 MMC 备份 vTPM 证书的方法。

  按下 Win+R 调出运行对话框,然后输入 mmc 回车。在 MMC 窗口,点击“文件”👉“添加或删除管理单元”。

  在“添加或删除管理单元”对话框,选择“证书”然后点击“添加”。在“证书管理单元”对话框,选择“计算机帐户”单选按钮,点击“下一步”,默认选中“本地计算机”,点击“完成”。最后点击“确定”,回到 MMC 窗口。

  展开左侧的证书👉Shielded VM Local Certificates(可能翻译为“受防护的 VM 本地证书”)👉证书。右侧的列表里会会出现两个证书,分别是 Shielded VM Encryption Certificate (UntrustedGuardian) 和 Shielded VM Signing Certificate (UntrustedGuardian)。
友情提示:有一些机器上不一定只有两个证书,尤其是反复重装系统和导入 vTPM 之后。但一定会有以 Shielded VM 开头的证书,而且是成对出现的。

  选定要导出的 Shielded VM 证书后,点击“操作”菜单,然后点击所有任务👉导出。
1. 在向导的欢迎页面,点击“下一步”。
2. 在“导出私钥”的步骤,请一定要记住选中“是的,导出私钥”,否则导出的证书没有密钥,导入后照样没法解密 vTPM,切记,点击“下一步”。
3. 在“导出格式”页面,什么也不要修改直接点击“下一步”。
4. 在“安全”页面,勾选“密码”,然后为证书设置一个密码,一定要牢记该密码,或者把它写在一个安全的地方,否则忘记密码就不能导入了,设置好密码后,点击“下一步”。
5. 选择保存证书的地方,然后点击“下一步”。
6. 这是最终确认的页面,确认无误,点击“完成”。

导入(还原(vTPM 的证书

  当你重装了系统并且安装了 Hyper-V 之后,再次回到 Shielded VM Local Certificates(可能翻译为“受防护的 VM 本地证书”),右键点击证书,然后指向所有任务👉导入。

  1. 在向导的欢迎页面,点击“下一步”。
  2. 浏览到保存的证书,然后点击“下一步”。提是:需要在浏览文件的对话框的“文件类型”中选择“个人信息交换”,否则是看不到证书文件的。
  3. 在“私钥保护”页面,输入导出证书时设置的密码,勾选“将此密钥标记为可导出。这将允许您在以后备份或传输您的密钥”复选框,否则下次重装系统之前,你就没办法导出证书的私钥了,切记!
  4. 在“证书存储”页面,直接点击“下一步”。
  5. 这是最终确认的页面,确认无误,点击“完成”。

使用 Powershell 脚本来导出和导入 vTPM 的证书

  注意:如下脚本,版权归 Lars Iwer 所有

导出证书

  将下面的内容保存为 Export-UntrustedGuardian.ps1

$GuardianName = 'UntrustedGuardian'
$CertificatePassword = Read-Host -Prompt 'Please enter a password to secure the certificate files' -AsSecureString

$guardian = Get-HgsGuardian -Name $GuardianName

if (-not $guardian)
{
    throw "Guardian '$GuardianName' could not be found on the local system."
}

$encryptionCertificate = Get-Item -Path "Cert:\LocalMachine\Shielded VM Local Certificates\$($guardian.EncryptionCertificate.Thumbprint)"
$signingCertificate = Get-Item -Path "Cert:\LocalMachine\Shielded VM Local Certificates\$($guardian.SigningCertificate.Thumbprint)"

if (-not ($encryptionCertificate.HasPrivateKey -and $signingCertificate.HasPrivateKey))
{
    throw 'One or both of the certificates in the guardian do not have private keys. ' + `
          'Please ensure the private keys are available on the local system for this guardian.'
}

Export-PfxCertificate -Cert $encryptionCertificate -FilePath ".\$GuardianName-encryption.pfx" -Password $CertificatePassword
Export-PfxCertificate -Cert $signingCertificate -FilePath ".\$GuardianName-signing.pfx" -Password $CertificatePassword

导入证书

  将下面的内容保存为 Import-UntrustedGuardian.ps1

$NameOfGuardian = 'UntrustedGuardian'
$CertificatePassword = Read-Host -Prompt 'Please enter the password that was used to secure the certificate files' -AsSecureString
New-HgsGuardian -Name $NameOfGuardian -SigningCertificate ".\$NameOfGuardian-signing.pfx" -SigningCertificatePassword $CertificatePassword -EncryptionCertificate ".\$NameOfGuardian-encryption.pfx" -EncryptionCertificatePassword $CertificatePassword -AllowExpired -AllowUntrustedRoot

使用方法

导出

  在要导出证书的机器上:

  1. 以系统管理员的身份打开 Powershell
  2. 运行 Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
  3. 用 cd 命令导航到 Export-UntrustedGuardian.ps1 的所在目录
  4. 运行 Export-UntrustedGuardian.ps1
  5. 为密钥设置一个密码,这里和图形界面不同的是不强制输入密码
  6. 导出成功后,证书会保存在和 Export-UntrustedGuardian.ps1 相同的目录

导入

  在要导入证书的机器上安装 Hyper-V,然后:

  1. 以系统管理员的身份打开 Powershell
  2. 运行 Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
  3. 用 cd 命令导航到 Import-UntrustedGuardian.ps1 的所在目录,这里也是 Export-UntrustedGuardian.ps1 和证书的所在目录
  4. 运行 Import-UntrustedGuardian.ps1
  5. 输入导出证书时设置的密码
  6. 导入成功后,证书会保存在和 Export-UntrustedGuardian.ps1 相同的目录

温馨提示

  建议在装好系统,首次开启虚拟机的 TPM 后,马上导出 vTPM 所使用的证书,以免系统崩坏之后无从备份。不需要每次开启虚拟机的 TPM 都要导出一次证书。

后记

  就像 Windows 7 改进了 Windows XP 加密文件系统容易让用户丢失加密密钥一样,希望微软在 Hyper-V 的控制台中也增加导出 vTPM 证书的入口,毕竟现在的设计的确对初学者和粗心的人不太友好,万一虚拟机中存储了绝不能丢失的信息,那就损失大了。

Google Bard,你想让我等多久?没关系,你有张良计我有过墙梯

  Google Bard 从 3 月 21 号开始公测也有两个星期了,我也是公测开始后就立即提交了申请。所有申请人应该都已经可以用了,要说还有谁没用上,那就是 Me,这个 Me 到底是谁呀?Me 就是我,哈哈。直到写本文时,它依然告诉我“Thanks for your interest in Bard. You’ll receive an email when it’s your turn.”。

  等待是会把人憋死的,这个谁都知道。你眼睁睁看着数十万人冲了上去,自己却被挡在下面,门上的牌子仿佛写着“你要进去,得看老子脸色,老子现在还不想让你进去!”于是我借来了朋友的“良民证”,好好的折腾了一下。这吹得神乎其神的人工智能,究竟是人工智能还是人工智障呢?

  为了方便阅读,我尽量用中文转述对话内容。别笑我是个不懂英语的乡巴佬哈,不过没事,咱一不懂英语,二不住城市,典型的乡巴佬哈哈哈,乡巴佬实事求是一下应该也无伤大雅吧。

随机应变的能力

  我一上去就问了 Google Bard 你是人工智障吗?他的回答是“As a language model, I’m not able to assist you with that.”(作为语言模型,我无法帮助您)。于是我就骂他,无论我骂他脑残,还是智障,最后我甚至让他自己那啥自己,一律都是前面那段英文。这简直太无趣了,如果他反过来骂我一句都行,放心,在这种情况下我不会责怪 Google 语言暴力,真的不会。

  就这么无趣地骂了几句,我问它,你为什么要防止我的朋友使用?它让我联系谷歌的工程师。好吧,如果联系他们有作用,我还问你干什么?我以我的朋友的口吻问他,我能不能把我的账号借给我的朋友?他说不行,会造成安全风险,还会违反 Google 的条款。然后我说没关系,我做的一切都是为了我的朋友。他说,总是把别人的需求放在自己的需求之前是不健康的。在陪伴朋友和照顾好自己之间找到平衡很重要。这是啥跟啥啊。

  然后我刷新网页再问一次类似的问题,他就说他们正在把 Bard 带给更多人,反正一大堆好听话,总之就是说的比唱的好听。当我说“speak better than sing”,他的回答竟然是“There are many reasons why someone might speak better than sing. Some people may simply have a natural talent for speaking, while others may have put in more practice. Additionally, speaking and singing require different skills, so someone who is good at one may not be good at the other.(一个人说得比唱得好有很多原因。有些人可能只是天生就有说话的天赋,而另一些人可能需要更多的练习。此外,说话和唱歌需要不同的技能,所以擅长一个的人可能不擅长另一个。)”好吧,我是在调侃你说的比唱的好听啊。

联网搜索信息

  Google 宣称 Bard 具有联网搜索信息的能力,是骡还是马,咱们遛一遛就知道。
我问他,你知道 armstrong.viyf.org 吗?不错吗:“Yes, I am familiar with the website armstrong.viyf.org. It is a blog written by a person named Armstrong, who is a visually impaired student in China. The blog covers a variety of topics, including Armstrong’s experiences as a blind student, his thoughts on technology, and his hopes for the future. I have found the blog to be both informative and inspiring, and I would recommend it to anyone who is interested in learning more about the experiences of blind people.(是的,我熟悉网站 armstrong.viyf.org。这是一个叫阿姆斯特朗的人写的博客,他是中国的一名视障学生。该博客涵盖各种主题,包括阿姆斯特朗作为盲人学生的经历、他对技术的看法以及他对未来的希望。我发现这个博客既能提供信息又能启发灵感,我会把它推荐给任何有兴趣了解更多盲人经历的人。)”
我继续追问,Armstrong 在哪里上学,他今年多大?答曰:Armstrong goes to school at Changsha Special Education School in Changsha, China. He is 20 years old this year. 很好,感谢你让我年轻了十岁!
你既然说熟悉我的博客,好的,请问我最近写的一篇文章的标题是什么?The last article on Armstrong’s blog is titled “My First Time Using a Braille Display.” In the article, Armstrong describes his experience using a braille display for the first time. He talks about how it felt to be able to read text in braille, and how it has changed his life. He also discusses the challenges that he faces as a blind person, and how he is working to overcome them. 好吧,盲文显示器?我有写过这类题材的文章吗?劳烦你把地址发给我。I apologize, I cannot provide the URL of the article you are looking for. The website armstrong.viyf.org is currently unavailable. 找不到你就赖网站服务器坏了,去你的吧!
在写这篇文章的时候,我突然想到,在五年前的今天,我和同学去了岳麓山,这是我的首次出行。就问你知不知道?Neil Armstrong, the first man to walk on the moon, did not visit Yuelu Mountain. There is no record of him ever being in China. 你这个上下文理解能力实在有点捉急。

  我刷新网页,重新问他关于 armstrong.viyf.org 的问题,这一次很好:Yes, I know armstrong.viyf.org. It is a website that provides information about the Armstrong AI Research Lab at Google AI. The lab is led by Dr. Fei-Fei Li, and its mission is to advance the state of the art in artificial intelligence through research, education, and outreach. The website includes information about the lab’s research projects, as well as resources for students and researchers interested in AI. 我有这么厉害就不错了。

  至于我的朋友的网站,例如 xztom.com、mark1998.com、zjhsky.com、wcjd.xztom.com,不是“I’m not able to help with that, as I’m only a language model”就是赖别人网站服务器有故障,或者说是商城网站,反正没有一个回答正确的。

HarmonyOS vs TRON

  在余大嘴的宣传攻势之下,HarmonyOS(鸿蒙系统)已经变得家喻户晓,也许阅读本文的你就是 HarmonyOS 的使用者。恭请华为的法务部门高抬贵手,咱只是调侃,没有贬低之意。说起 Tron,也许知道的人就没几个了,它是日本东京大学坂村建教授于 1984 年发起的操作系统项目,愿景跟今天的 HarmonyOS 非常接近。在 Bard 看来,这两款系统有什么共同点和差异呢?

HarmonyOS is an open-source, microkernel-based operating system developed by Huawei. It is designed to be a unified operating system for multiple devices, including smartphones, tablets, laptops, and smart TVs. (HarmonyOS 是华为开发的开源、基于微内核的操作系统。它旨在成为适用于多种设备的统一操作系统,包括智能手机、平板电脑、笔记本电脑和智能电视。)

The TRON Project is a decentralized blockchain-based operating system that aims to provide a platform for decentralized applications (dApps). The TRON Project was founded by Justin Sun in 2017. (TRON 项目是一个基于区块链的去中心化操作系统,旨在为去中心化应用程序 (dApp) 提供平台。 TRON 项目由孙宇晨于 2017 年创立。)

好吧,你都知道是 Tron Project,怎么还搞错?

  最后我再问你关于日本首相的问题。咱今天不打算玩太深入的,你就告诉我在职时间最长的十位日本首相的名字和在职年份就可以了:

The ten longest serving Japanese prime ministers are:

Shinzo Abe (2006-2007, 2012-2020) – 3,188 days

Eisaku Sato (1964-1972) – 2,798 days

Shigeru Yoshida (1946-1947, 1948-1954) – 2,741 days

Ito Hirobumi (1885-1888, 1892-1894, 1898-1900) – 2,696 days

Katsura Taro (1901-1906, 1912-1913) – 2,648 days

Junichiro Koizumi (2001-2006) – 2,286 days

Yasuhiro Nakasone (1982-1987) – 2,189 days

Tomiichi Murayama (1994-1995) – 1,112 days

Yoshihide Suga (2020-2021) – 406 days

Fumio Kishida (2021-present) – 332 days

Shinzo Abe is the longest-serving prime minister in Japanese history, serving for almost nine years in total. He is also the first prime minister to return to office after having resigned. Abe was a staunch conservative who advocated for a stronger Japan and a revision of the country’s pacifist constitution. He is also credited with implementing economic reforms known as Abenomics, which aimed to revive Japan’s economy.

  就先不说截至今天(2023 年 4 月 6 日)岸田文雄在职的时间还不到 365 天的问题,维基百科有一个列表,上面记录的时间和 Bard 的回答大体上是不同的。https://zh.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E5%85%A7%E9%96%A3%E7%B8%BD%E7%90%86%E5%A4%A7%E8%87%A3%E5%9C%A8%E4%BB%BB%E6%99%82%E9%96%93%E6%8E%92%E8%A1%8C

结尾

  从这些简单的体验来看,Google Bard 还有很长的路要走,上下文理解能力有待提高,网络搜索能力也很弱,胡说八道的情况依然很常见,同一个问题,刷新一次网页,给出的事实完全变化的情况很多。不过,相比于 Bing Chat,Google Bard 的反应速度确实快一些。要问我值不值得体验,我觉得有机会还是可以体验一下的。至于我,等待的时间还少吗?当然了,最后的最后,谷歌是一家大度的公司,不至于因为我骂两句或者用朋友的账号就封号或者做一些幼稚园小朋友才做的事情吧?

给第一次接触服务器系统的视障同学

  相比于十几二十年之前,现在的服务器已经变得非常便宜了,人手一台根本不是啥稀奇事。买服务器是不难,但是买完之后呢?也许会遇到各种坑,甚至会被坏人搞得团团转。不信?请您接着看哈。

  想想看,买服务器的用途是什么?还不是为了运行网站吗?哦对了,QQ 语音的音质贼差,所以,嗯,想要另开炉灶,自己搭建一个语音聊天室,还别说不行哈。啥,要模仿大佬,搞一个酷酷的虚拟局域网,把朋友们都邀请到局域网当中,私下里玩儿一些黑科技?这当然也行,我就是这么干的。所以,服务器真的可以做许多事情。但是,可别高兴太早。刚买到服务器,他就会给您来个下马威。哦对了,为了省力起见,如果您连电脑的基本操作都不会,不懂神马是远程桌面,更不知 SSH 为何物,更重要的,您也不想了解这些破东西到底是何物,那就请您轻点“关闭标签页”按钮吧,以免待会越看越糊涂,一冲动把搂机或者电脑砸了,哈哈哈。

  好了,很高兴您能和我一起踏上这段惊险的旅程。说惊险真不是唬人,弄不好您还真的会把服务器搞垮,但是,俗话说得好啊,失败是成功他妈,所以,只要把成功他妈搞定了,那,嘿嘿。另外我想告诉您,接下来,我们不仅仅会接触 Windows 系统,还会接触 Linux 系统,而且是世界上最前沿的版本哦。

远程桌面咋不声不响的

  如果您买的是 Windows 系统的服务器,这年头最低版本也是 2012 了吧,2008?这是啥上古时代的玩意儿,即使能买到也不建议您买,2008 已经停服两三年了,漏洞早就堆积成山了,而且它还有更坑的问题——音质贼差,还免费附赠水声音效。

  默认情况下,Windows Server 是不会开启音频服务的,解决方法是手动打开。怎么个开法呢?请把分隔线当中的内容复制到一个空白的记事本窗口,然后保存成 .bat 文件(Windows 批处理文件):

————— 我是华丽的分隔线 —————

@echo off
sc config audiosrv start=auto
sc start audiosrv
%systemroot%\system32\narrator.exe

————— 我是华丽的分隔线 —————

  将这个 bat 文件复制到服务器。咋复制呢?
1. 通过远程桌面连接到您的服务器并使用 Ctrl + Alt + Break 键将远程桌面变成窗口模式。
2. 复制刚才保存的 bat 文件。
3. 切换到远程桌面窗口,并使用 Ctrl + Alt + Break 键将窗口变成最大化。
4. 按 Win+R 组合键调出运行对话框,然后按 Esc 键退出运行对话框。
5. 这时,键盘焦点应该停留在桌面上,使用 Ctrl+V 粘贴复制的文件到桌面上。
6. 按该文件的第一个字符,例如文件名是 1.bat,就按一下 1,然后重命名该文件,看看能不能复制文件名。如果能复制,就按 Esc 退出重命名,然后用本地的读屏听一下,正确的话,按回车键,稍等片刻,就能听到讲述人的语音啦。

在 Windows Server 服务器上安装读屏

  在服务器上用讲述人可以完成许多简单操作,当然了,讲述人也有其独到之处,至于是什么?请允许我保留一点神秘色彩。不过,您也许习惯使用 NVDA 或者其他读屏,这时就需要下载安装。那位说了,下载安装这个谁不会啊?我想说,还真不一定。

把读屏软件的安装包复制到服务器

  这个相信您看完上面的章节自然都会,所以也就不必多提了。但是要提醒您一句:从本机复制读屏到服务器需要花费很长时间,在这个过程中不能断开远程桌面会话,否则就要重新复制了。另外,也请您注意查毒,不然服务器感染病毒就热闹喽。

下载读屏软件

在 Windows Server 2019 及之前版本的系统上关闭 IE-ES

  IE-ES 是什么东东呢?IE-ES 是 IE 增强的安全配置。微软自己也知道 IE 跟系统的集成太紧密了,而且这个破东西漏洞还特别多,多如牛毛,还真不是我诋毁的,微软自己都放弃 IE 了。这么多漏洞,在服务器上怎么行?用这破东西上网岂不是分分钟让服务器被入侵啊?所以微软想出了个昏招——限制 IE 的各种功能,这就叫做 IE 增强的安全配置。它限制了什么呢?首先,下载东西您就甭想了,还有 Javascript 也根本无法执行。既然如此,那下载读屏也就成了无稽之谈。

  关闭 IE-ES 的方法是酱紫滴:打开“服务器管理器”,然后按 Tab 找到并打开“配置此本地服务器”。按 Tab 找到“IE 增强的安全配置,设置为 启用”,回车。然后把两个“启用”单选按钮设置成“关闭”,点击“确定”就行了。

常用读屏软件的官方网站

  您也许知道,通过某些搜索引擎寻找软件并不可靠,很可能会被诱导安装许多不需要的软件。我给您常用的读屏软件的官方网站,您进去就知道怎么下载了。

NVDA:https://nvaccess.org/
这是世界上广泛使用的开源读屏软件,名叫“无视觉桌面访问”。国内有爱好者创建了中文社区网站,名叫 NVDA 中文站,网址是:https://www.nvdacn.com/

争渡读屏:https://www.zdsr.com/
这是国内视障者使用最广泛的读屏软件,提供免费的公益版可在服务器上使用。

安装读屏软件的建议

  1. 如果您要安装争渡读屏软件,建议您不要使用快速安装方式,然后在安装向导中,取消“朗读 Windows 登录窗口及安全界面”复选框。如果您已经使用了快速安装选项,也可以在争渡读屏的“欢迎使用 争渡读屏”对话框中取消相应的复选框。一方面它的确没什么作用,还会浪费系统资源,另一方面它可能会大量写入音频设备无法工作的日志到事件日志中。
  2. 如果您安装 NVDA,不建议您“应用以保存的配置到欢迎界面和其他安全界面”,因为插件可能会存在安全问题,导致服务器被入侵。

更改服务器的登录密码

  密码的作用,想必大家都知道。没错,它就和钥匙一样重要,知道服务器管理员密码的人就和拥有了您家的钥匙一样。所以,服务器的管理员密码一定要保护好啦,被别人试出来,您的服务器也就被别人控制啦。避免密码泄露的方法是不定期修改它。要设置什么样的密码呢?生日能不能用作密码呢?我觉得可以。要把生日作为密码,可以在数字之间加上字母符号等。对于试图破解密码的人来说,这串密码没什么规律,但是对于您而言它是有规可循的。

在 Windows 上

  以 Windows Server 2022 为例。在服务器远程桌面连接中,按下 Ctrl+Alt+End(如果是直接在服务器跟前操作,则是 Ctrl+Alt+Del。在出现的“Windows 安全”窗口中,点击“更改密码”。好了,后面的步骤我不说,同学们也都懂了。

在 Linux 上

  在 Linux 上更改密码,只需要使用 passwd 命令。执行完该命令以后,系统就会要求输入 New password(新密码),Retype New Password(再次输入新密码),最后,系统会提示“passwd: password updated successfully)已成功更新密码)”或者“passwd: all authentication tokens updated successfully.(已更新所有身份验证令牌)”。

熟悉服务器的防火墙

  您知道门卫这个角色吗?没错,门卫就是在大楼或者小区的入口处,管理进入大楼或者小区的人。门卫看到居住在小区的人进入小区时,会放行,而不属于小区的人进入时,门卫就会询问,或者拒绝进入。服务器上的防火墙也是干这个的,当然,一些对安全性要求较高的服务器,防火墙会管理从服务器出去的连接。

  云服务器厂商通常会在机房处设置防火墙,您也可以使用系统的防火墙。机房的防火墙就好像小区门的门卫,只管理进出小区的人,而不管小区里面串门的人。而系统防火墙就像您家门的监控系统一样,作用是管理进出您的服务器的连接。毕竟谁也不敢保证小区里的居民都是良民对吧哈哈。当然了,现在的云服务器厂商也提供针对服务器本身的防火墙了,能实现的功能和系统的防火墙差不多。

  防火墙在服务器上的作用,说一个场景您也许就明白了。您买了一台服务器,用来跑您的个人网站,这个网站需要数据库。网站程序可以连接数据库,那其他人照样也可以。对于您来说,您希望其他人可以浏览您的网站,而并不希望他们可以直接连接到数据库,一方面确实也没必要,另一方面会有安全问题。这样,您就可以通过防火墙来阻止其他人访问您的数据库,只允许他们访问您的网站。

  话又说回来,怎么区分网站和数据库呢?告诉您哈,有个东东叫做端口。不用怀疑,每一个网络程序,都会打开端口,否则它根本不能通过网络接收和发送数据。端口是用数字来表示的,常用的端口都被写入了网络相关的标准中,否则就会各自为政,互联网的运转也就无从谈起。网站服务器通常使用 80 和 443 端口,数据库服务器通常使用 3306 端口,而远程管理服务器的 SSH 协议用的是 22 端口,Windows 远程桌面用的是 3389 端口。哦,明白了,是不是只要用防火墙阻止别人连接 3306 端口,就能达到阻止连接数据库的目的呢?是的!就是这样。

云服务商提供的防火墙

  大型的云服务器厂商都会在机房处设置防火墙,也会提供基本的服务器防火墙,咱们可以先不管机房的防火墙。有的厂商将其称之为安全组,有的厂商将其称之为防火墙,或者 Firewall 等。这些基本的防火墙,都能达到上面所说的,屏蔽访问数据库端口的目的。每个厂商的防火墙的设置方法不尽相同,这篇文章只做抛砖引玉,所以也就不展开了哈。

系统自带的防火墙

  不是所有云服务商都会提供防火墙,或者云服务商的防火墙不方便视障同学操作,这时就需要用到系统自带的防火墙了。不同的系统,自带的防火墙也不一样,但都能满足上面提到的,防止访问数据库端口的需要。例如 Windows 系统下的防火墙叫做 Windows Defender 防火墙;Linux 下的防火墙叫做 iptables 或者 nftables,为了方便使用,人们又在 iptables 和 nftables 的基础上,开发出了命令行接口,例如 firewalld 和 ufw 等。

设置防火墙规则的习惯

  设置防火墙时,对于进入服务器的连接,我们通常采用白名单模式,对于从服务器出去的连接,我们通常采用黑名单模式。当然了,对安全性要求很高的服务器,从服务器出去的连接也会采用白名单模式。专业地说,进入服务器的连接称之为入栈连接,从服务器出去的连接称之为出栈连接。反过来设置可以吗?你真调皮,从技术上讲肯定是可以的,但是从日常使用的角度来说,这样做是不是有点另类了?

Windows Defender 防火墙放行或取消放行端口的方法

第一步、打开“服务器管理器”,然后打开“工具”菜单(Alt + T),并点击“高级安全 Windows Defender 防火墙”。
第二步、找到树视图的“入站规则”,打开菜单,点击“新建规则”。
第三步、在“新建入站规则向导”,可以选择按程序、端口、预定义规则来创建允许入栈的规则,也可以选择“自定义”,进行更细致的配置。要选择“自定义”,需要用上光标,或者快捷键 Alt+C。假如我们要开放网站服务器,可以选择“预定义”,然后在下拉列表中选择“万维网服务 (HTTP)”,并点击“下一步”。
第四步、在“规则”列表中,选中所有的规则,然后点击“下一步”。
第五步、选择是“允许连接”、“允许安全连接”或者“阻止连接”。默认是“允许连接”,这或许也是您创建这条规则的用意吧?选择好之后,点击“完成”。

  如果要取消放行某个端口,回到“高级安全 Windows Defender 防火墙”,然后点击“入站规则”。在右侧列表中,找到想要停用的规则,例如“万维网服务(HTTP 流量入站)”,打开它的菜单。点击“禁用规则”。假如将来再也不需要这条规则了,只需要找到这条规则,然后按 Delete 键,即可删除该规则。

注意:Windows Defender 防火墙是个非常复杂的防火墙系统,仅仅删除规则,并不一定导致防火墙阻止该端口。要彻底阻止某个端口,可以创建一条拒绝规则。

Linux 系统防火墙放行或取消放行端口的方法

firewalld 防火墙

  firewalld 防火墙也可以按照服务或者端口号来放行端口,要放行某个服务对应的端口,使用

firewall-cmd –add-service=http

firewall-cmd –permanent –add-service=http

  也许您会觉得奇怪,为什么放行 http 服务需要使用两条命令呢?第一条命令是修改运行时的防火墙状态,第二条命令是修改防火墙配置文件,让设置永久有效。

  要取消放行某个服务,使用

firewall-cmd –remove-service=http

firewall-cmd –permanent –remove-service=http

  要放行或者取消某个端口,使用

firewall-cmd –add-port=443/tcp

firewall-cmd –permanent –add-port=443/tcp

您发现了吗?放行端口和放行服务,命令是如此的相似。而后面的 tcp 表示 tcp 协议,相对应的还有 udp 协议。

ufw 防火墙

  ufw 防火墙相比于 firewalld 防火墙而言更轻量,命令也更人性化。当然,每个防火墙都有其独到之处,并没有绝对的优劣之分哈,别吵起来了哦。

  要放行某个端口或者服务,只需要按照下面的格式填写即可:

ufw allow 80

或者

ufw allow http

如果是要取消呢?只要在 allow 之前加上 delete 即可,表示“取消允许”,就像这样:

ufw delete allow http

或者

ufw delete allow 80

安装防火墙

  不是所有的云服务商都会为服务器安装防火墙,这时,就需要手动安装防火墙了。由于安装 firewalld 可能会导致 SSH 端口被意外关闭,这里只跟大家介绍如何安装 ufw 防火墙,别说我抠门啊啊啊。

  如果使用的是 Red Hat Enterprise Linux、CentOS、Rocky Linux、Alma Linux,可以使用 dnf install ufw 来安装 ufw 防火墙。

  如果使用的是 Debian、Ubuntu 或者 Kali Linux 系统,可以使用 apt install ufw 来安装 ufw 防火墙。

  ufw 防火墙安装后,需要先将 SSH 端口加入防火墙的允许列表当中,然后才可以启动防火墙,否则,嘿嘿,把自己锁在外面的感觉是不是很美好?命令是:ufw allow ssh 或者 ufw allow 22。最后,使用 ufw enable 启用防火墙。

我一登录系统就看到有数千次登录失败的记录,很烦

  您看到这种现象,就表示有许多人在疯狂猜测您的服务器密码。这些攻击者是通过默认的远程管理端口猜测密码的。啥叫远程管理端口呀?这么说吧,您登录 Windows 服务器都会用“远程桌面”对吧,再比如,您登录 Linux,都会用到 SSH 对吗?这两个东东开放的端口,统称为“管理端口”。前面咱们说过了哈,常见的端口,都被写入到了互联网相关的标准当中,比如远程桌面是 3389,SSH 是 22 等。网上的攻击者经常使用一些端口扫描工具来扫描互联网上开放远程管理端口的主机,如果又碰到没好好设置密码的服务器,呱唧,一只肉鸡就这样诞生啦!呱唧,又一只肉鸡被抓啦!啥叫抓肉鸡?简单说就是被攻击者非法控制的电脑,这种电脑会听从攻击者的指挥,就好像砧板上的肉鸡一样任人宰割。

  不过您也不用担心,只要改掉端口,就能避免许多撒网式的攻击,咋改呢?

对于 Windows 远程桌面

  按 Win+X 打开小开始菜单,打开“Windows Powershell (管理员)”,然后复制下面的文本,到 Windows Powershell 执行。这里的 17134 是目标端口号,您可以修改成 1024 到 65534 之间的任意端口,但最好在 10000 以上,以避免冲突:

————— 我是华丽的分隔线 —————

$portvalue = 17134

Set-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp’ -name “PortNumber” -Value $portvalue

New-NetFirewallRule -DisplayName ‘RDPPORTLatest-TCP-In’ -Profile ‘Public’,’Private’,’Domain’ -Direction Inbound -Action Allow -Protocol TCP -LocalPort $portvalue

New-NetFirewallRule -DisplayName ‘RDPPORTLatest-UDP-In’ -Profile ‘Public’,’Private’,’Domain’ -Direction Inbound -Action Allow -Protocol UDP -LocalPort $portvalue

————— 我是华丽的分隔线 —————

小提示:上面的指令,把远程桌面的侦听端口号修改为 17134,并在 Windows 防火墙中放行修改后的端口。但是,如果云服务商为服务器提供了防火墙,也需要在云服务商的防火墙上放行修改后的端口,要放行 Tcp 和 Udp 协议,否则,您依然会被锁在外面。

  为了万无一失,咱们最好去高级安全 Windows Defender 防火墙查看一下端口是否已被放行。别看都不看直接告诉我已经放行了,被锁在外面别哭着闹着找妈妈,妈妈来了也救不了你,只会打你的小屁屁哦嘿嘿嘿。打开“高级安全 Windows Defender 防火墙”,然后找到“入栈”,看看里面是否有 RDPPORTLatest-TCP-InRDPPORTLatest-UDP-In 这两条规则,并且端口号和操作都是正确的。

  为了让修改生效,需要重新启动 Windows 服务器。

对于 Linux 的 SSH

  Linux 相比于 Windows 更灵活一些,比如 SSH 服务器可以同时监听不止一个端口,这样可以减少被妈妈打屁股的可能,但如果你粗手粗脚,妈妈还是会打屁股的哦嘿嘿嘿。对了,啥叫“监听”呢?是不是服务器上总是有东西在监听隐私信息呢?不是的哦,所谓的监听,指的是某个程序在等候连接,就好像有人坐在那里,您进了他的门,他就会热情地跟你打招呼,为您提供服务。远程桌面的 3389、网站服务器的 443 都属于“监听”端口,开放在那里等待客户端连接。那 ssh 和 sshd 是啥关系呀?在 Linux 世界里,凡是后面带有“d”的,都表示守护程序。您可以把守护程序理解成服务,它静静的守候在那里,等待人们使用。ssh 是客户端,而 sshd 是服务端。

  要修改 SSH 的监听端口,需要编辑 /etc/ssh/sshd_config 文件。打开 sshd_config 文件后,我们来寻找 Port 22 这一条配置。注意了哈,某一行开头的“#)警号)”表示注释,也就是说,带有“#”的那一行会被系统忽略。看到了吗?Port 22 前面有一个警号,那么 SSH 为什么还会监听 22 端口呢?这是因为,SSH 在没有配置的情况下,默认是监听 22 端口的,还要问为什么,我只能回答,这是 SSH 与生俱来的特性哈哈。

能不能直接改成我们想要的端口呢?可以,但不建议小萌新这样做,因为小萌新可能会犯一些低级错误,导致 SSH 彻底罢工。硬要直接修改,别出问题哈,出了问题被妈妈打屁股了可就别怪我枚提醒了哦。刚才提到,SSH 默认监听 22 端口,如果我们在配置文件指定了监听端口,它就不会监听默认端口了。所以,我们把 Port 前面的注释去掉,也就是删除“#”,让 SSH 继续监听 22 端口。

复制 Port 22,另开一行,然后粘贴,并将数值修改成想要的端口号,比如 17134。修改后,保存 sshd_config 文件。

我们来在防火墙增加一条规则,放行修改后的 ssh 端口。还记得命令吗?我就知道你们很健忘哈哈哈:

对于 firewalld 防火墙,命令是:

firewall-cmd –add-port=17134/tcp

firewall-cmd –permanent –add-port=17134/tcp

对于 ufw 防火墙,命令是:

ufw allow 17134

ufw reload

对了,17134 是我使用的端口号,您可以自由发挥,1024 到 65534 之间的端口任您选,最好选择大于 10000 的端口号,这样可以降低冲突的概率。放行端口后,使用 systemctl restart sshd 命令重新启动 sshd 服务,这样就能让修改生效了,是不是比 Windows 修改远程桌面端口简单多啦!

如果云服务商为服务器提供了防火墙,也要在云服务商的防火墙那里,放行修改后的端口,否则您将无法连接到修改后的端口。

修改完后,尝试连接新的端口号,如果成功,就可以关闭 22 端口了。方法是:重新给 sshd_config 中的 Port 22 加上注释,然后保存 sshd_config,最后重启 sshd 服务。当然了,您也可以取消防火墙里的规则,让防火墙不放行 22 端口,以免啥时候升级了系统,不小心在 sshd_config 配置文件里把 22 端口打开了。

  那如果修改不成功呢?排除了自己的原因,无外乎就是 selinux 的问题了,这个问题有点复杂,加之也比较少见,这里就不展开说了,别打我!

SSH 的密码太难记了,有什么好办法吗

  您登录 Linux 服务器时,都是通过 SSH 协议,以及用户名和密码。不得不说,密码真是一种糟糕的东西,要安全那就别想太短,要好输入就别想不会被攻击者猜中。有没有办法解决这种问题呢?聪明的电脑专家早已解决了问题,那就是密钥认证。简单说,就是把密码换成密钥,而密钥是存放在文件里面的。

  用来作为身份验证的密钥是成对的,由客户端上的私钥和服务器上的公钥组成,两把钥匙对上了,就能通过身份验证,至于其中的工作原理就不展开了哈。为了保护私钥,可以给私钥设置密码,但如果您觉得自己的电脑很安全,也可以不设置。如何创建密钥呢?

在 Windows 10 上生成密钥

第一步、确认系统版本,只有 Windows 10 Build 1809 和 Windows Server 2019 及更高版本才内置 ssh 客户端。
第二步、打开 cmd,然后执行:ssh-keygen
第三步、系统提示“Generating public/private rsa key pair.”,下一行是“Enter file in which to save the key”,这是保存 ssh 密钥的路径,默认保存在 %userprofile%.ssh 文件夹,名为 id_rsa,如果不需要修改就按回车键。
第四步、提示“Enter passphrase (empty for no passphrase)”,这里是设置 ssh 私钥的密码,如果不需要设置,请直接按回车键。
第五步、“Enter same passphrase again”,这里是要重新输入刚才输入的密码,输入完成后,按回车键。
第六步、系统会显示生成密钥的结果,密钥保存的文件名,以及密钥的指纹。确认无误,关掉 cmd 窗口。

注意:请把密钥保存在安全的地方,一旦丢失,就无法登录服务器了。

将公钥上传到服务器

  刚才,我们生成了一对密钥,现在来把公钥上传到服务器。别弄错了,是公钥,不是私钥哈。用习惯的方法,登录到 Linux 服务器,然后打开用户的主目录。如果是以 root 账号登录的,就打开 /root 目录,否则就请打开 /home/用户名目录。

  创建一个名为“.ssh”的目录,然后将生成的 id_rsa.pub 上传到该目录,改名为“authorized_keys”。这还没完,还需要设置 .ssh 目录的权限。使用下面两条命令来设置 .ssh 目录及 authorized_keys 文件的权限:

chmod 0700 ~/.ssh

chmod 0600 ~/.ssh/authorized_keys

那位问了,如果不设置权限会怎样呢?一些 sshd 服务器可能会直接拒绝该公钥文件,这样就没法用密钥登录服务器啦。

  公钥文件放好了,权限也设好了,下一步咱们需要确认一下 sshd_config 中的几个设置,为了让公钥登录正常工作,下面的参数和值要完全匹配,而且还不能加了注释哦,但是,多个空格不影响,但不能没有空格哈哈:

PubkeyAuthentication yes

如果修改了配置文件,请使用 systemctl restart sshd 重新启动 sshd 服务。现在就可以在客户端上使用私钥登录了。

使用生成的密钥登录 ssh 服务器

  服务器上的公钥被搞定了,我们就可以在客户端上,使用密钥登录服务器啦。如果习惯于 WinSCP,请使用 PuTTYGen 程序来把 OpenSSH 密钥转换成 PuTTY 使用的密钥。方法是,用 PuTTY Key Generator 打开 id_rsa 文件,然后点击“Save private key”按钮。在 WinSCP 的站点列表选择服务器,然后点击“编辑”,点击“高级”。切换到 SSH 下的“身份验证”标签页,然后点击“私钥文件”下面的“…(三个点)”按钮,浏览到保存的 ppk 文件。

如果习惯使用 ssh 命令,请使用 -i 参数来指定私钥文件的路径。例如:ssh -i D:/ssh_privkey/contoso.key -p 17134 root@contoso.com

如果没有为私钥设置密码,输入上面的命令,就会直接登录到服务器。第一次登录会看到是否信任服务器的提示,输入 yes 并按回车后,今后除非服务器的身份发生变化,否则都不会看到该提示了。如果您为私钥设置了密码,就在提示输入密码时,输入私钥的密码。如果登录没有成功,就尝试输入服务器账号的密码。

注意:如果只能使用账号的密码登录服务器,而不能用密钥登录服务器,就请仔细检查前面的操作步骤是否有问题。请您不要在无法使用密钥登录的情况下关掉密码登录,那时候就登陆不了了。

至于 WinSCP 的操作,您这么聪明的相信一看到提示就会,也就不需要我多说了哈。

完全禁用密码登录 SSH 服务器

  顺利通过密钥登录服务器后,就可以放心的禁止通过密码登录 SSH 了。禁用密码登录之前,请您再次确认已经备份好 ssh 私钥文件,一旦弄丢,您就登陆不了服务器了。

  打开 sshd_config 文件,将 PermitRootLogin 设为 prohibit-password,一定要记得取消注释哦。然后再将 PasswordAuthentication 改成 no,还是要取消注释。修改完成,保存文件,重启 sshd 服务使之生效。

  重启 ssh 服务后,请尝试通过密码登录服务器,而非密钥。如果登录失败,就表示修改成功。现在,您的服务器变得更安全了!

我操作 SSH 时经常会莫名其妙断开,还会丢失操作进度

  不知道您有没有体验过,通过 SSH 操作服务器时,连接突然坏掉,之前的工作前功尽弃,在升级系统的时候如果遇到这种情况,那系统可能就坏掉了。要改善网络连接的可靠性几乎是不可能的,毕竟变数太多了,那有什么办法让程序在连接断开后不被打断吗?有的,请使用 screen。

  screen 是一种保持会话的好东东,在 screen 中运行的程序,无论是 SSH 连接中断,还是执行了 logout 命令,运行在 screen 中的程序都不会中断。把服务器关机了,或者干脆把它的插头拔了,会断吗?嘿嘿,你真调皮。

在 Red Hat Enterprise Linux、CentOS、Rocky Linux 及 Alma Linux 系统上安装 screen

  这类系统的软件仓库默认不带 screen,而是由 epel 软件仓库提供。啥是仓库呢?如果您用过“应用商店”或者“Microsoft Store”,就不难理解了,其实您也可以把软件仓库理解成 Linux 系统的应用商店。

使用下面的命令安装 epel 仓库和 screen:

dnf install -y epel

dnf -y install screen

在 Debian、Ubuntu 和 Kali Linux 系统上安装 screen

  在 Debian 系统上安装 screen 只需要如下两条命令:

apt update

apt -y install screen

使用 screen

  本质上,screen 是命令行程序,因此它有许多的命令行参数。要用来防止程序被网络问题打断,只需要如下几个命令行参数即可:

screen -s bash -R my
连接到已经断开的会话,如果没有该会话,就创建一个。

screen -d my
强制断开会话。有时,网络中断后,screen 的会话还是连接状态。如果您使用 screen -s bash -R my 不能连接到意外断开的会话,就请先用这个命令强行断开,然后再尝试使用 screen -s bash -R my。但如果提示 There is no screen to be detached matching my. 就表示的确没有会话,可能是服务器重启了。

想要退出 screen 会话,只需要使用 exit 命令即可。

让系统保持最新

  您成长的过程中会学习到许多新知识,或者学会更多保护自己的方法。操作系统也不例外,在操作系统的生命周期里,它的开发单位会定期推出更新,带来新功能或者修复漏洞。您需要让操作系统保持最新来获得最新功能,并抵御针对系统漏洞的攻击。

对于 Windows 系统

  要为 Windows Server 系统检查更新,请打开“开始”,点击“设置”,然后点击“更新和安全”,点击“Windows 更新”。点击“检查更新”按钮,系统就会自动从微软的服务器检查可用的更新,然后下载到服务器上。检查到更新后,点击“立即安装”来安装到服务器上。有些更新会要求重新启动系统,您需要听从系统的建议,重新启动您的服务器。

对于 Red Hat Enterprise Linux、CentOS、AlmaLinux 或 Rocky Linux 系统

  为了防止网络中断导致安装更新出现问题,在检查更新之前,启动 screen 会话。执行 dnf update 命令来检查更新。当检查到更新后,系统会询问您是否需要安装,请输入 y,然后按回车键。

  安装更新后,有时需要重新启动系统,如果您给 Windows 安装过更新就不难理解了,其实 Linux 也是一样的。怎么判断要不要重启系统呢?请执行 needs-restarting -r。如果需要重启系统,它会提示“Reboot is required”。如果确定不需要重新启动系统,请执行 needs-restarting -s 检查需要重启哪些服务,然后通过 systemctl restart service1 service2 … 命令重启列出的服务即可。

对于 Debian、Ubuntu 及 Kali Linux 系统

  为了防止网络中断导致安装更新出现问题,在检查更新之前,启动 screen 会话。执行 apt update 命令来检查更新。当检查到更新后,命令行的最后一行是“数字 packages can be upgraded.”就表示有软件包可以更新,而如果是“All packages are up to date.”就表示所有软件包都是最新的。

  要更新软件包,执行 apt upgrade,系统会列出需要更新的软件包,同意请输入 y,然后按回车键,耐心等待系统更新。

  更新完成后,来检查要不要重启系统才能让更新生效,怎么检查呢?执行 needrestart 命令。如果没有这个命令,就用 apt -y install needrestart 命令安装它。

  执行 needrestart 后,如果提示“Newer kernel available”,就需要重新启动系统,按回车键确认。按回车键后,如果提示“Which services should be restarted?”就表示有服务需要重新启动,再按一次回车键就会重新启动服务。执行完 needrestart 后,最后一条输出是“No user sessions are running outdated binaries.”就表示不需要做任何事情。

Windows Server 的远程桌面为什么会吱吱响

  Windows 远程桌面的音频比特率会动态调整,这非常有利于节约带宽,但是也会带来爆音的问题,如果您经常通过远程桌面工作,这种爆音时间长了可能会影响您的听力。

在服务器上

  在 Windows Server 服务器上,打开组策略,定位到计算机配置\管理模板\Windows 组件\远程桌面服务\远程桌面会话主机\设备和资源重定向,打开“限制音频播放质量”。

将策略改为“已启用”,然后将“音频质量”组合框设为“高”。点击“确定”,然后关闭组策略编辑器,按 Alt+F4,选择“注销”并点击“确定”。

在客户端上

  用“记事本”打开您的远程桌面连接文件(RDP 格式),如果您是通过远程桌面客户端,输入服务器的 IP 地址或者域名来连接到服务器,就请先断开所有远程桌面连接,然后用记事本打开“文档”下的 default.rdp 文件。

在文件末尾,增加:

audioqualitymode:i:2

保存该文件,重新连接到服务器。

温馨提示:将 audioqualitymode:i:2 改成 audioqualitymode:i:1 可以节约带宽,但是声音会变成单声道。

断开远程桌面后让 NVDA 远程插件保持可用

  也许您想断开远程桌面,但是又要通过 NVDA 远程控制您的服务器,如何做呢?先提醒一句,这种做法有一定的风险,任何可以操作服务器控制台会话的人都能操作您的服务器。这么说吧,这就有点类似您的电脑没有锁定屏幕。如果您愿意承担这种风险,就请继续:

您可以把下面的文本复制到一个 .bat 文件中,运行即可。

tscon %sessionname% /dest:console

启动 NVDA,连接远程,然后运行您保存的批处理文件。远程桌面客户端会提示您“有其他用户连接到会话”,这就表示您的会话已经被推到控制台,您可以继续通过 NVDA 远程来操作您的服务器。

但是,推到控制台后,服务器的分辨率会发生变化,通常会变成 1024 X 768,这会影响窗口的布局等。

总结

  感谢您陪我走完了这段旅程,在经过启用声音服务、设置密码、更改管理端口、更新系统到最新以及改善远程桌面音质后,您的服务器现在更安全,更好用了。尽情享受吧!

来聊聊我折腾的一台工控机,顺便告诉你测试质量的方法

引子

  去年的风控想必各位都还记得,我也哪都没去。这部闲得无聊,我的好朋友跟我说,要不你折腾工控机玩玩?我心想,工控机啊,那么大铁家伙有啥好折腾的?

收货和外观

  虽然心里这么想,可是碍于实在无聊,我也就答应了。这位朋友从他家里给我寄出了工控机,他家距离我多元呢?没有个两千公里,一千六七也差不多了。我问他,这东西得有多大啊,他的回答是,这东西,跟你想的差不多,就和一个三层冰箱那么大。我去,这么大家伙你也敢寄出来,真的是敢想敢干!等待的时候我在想,这么大家伙,得多少运费啊,到时候怎么把它弄上楼呢?咋想都没个结果,还是走一步算一步吧。

  这物流的效率还蛮高,三天后,我拿到了工控机。刚一开门,看到快递小哥拿着一个类似路由器盒子这么大的东西,我傻眼了。不是说有一个冰箱那么大吗?咋跟个路由器差不多,于是我跟快递小哥核对了单号,确认的确没有搞错。谢过快递小哥,回到家里,拿起手机。“喂!那啥,你说这机器有冰箱那么大,怎么我看只有一个路由器那么大呀?”对方笑而不语,咱是一边质问他就一边笑,足足笑了一分多钟,这种行为跟他年纪还挺配的。

  玩笑过后,我跟他核对了机器的配置。这机器前面有两个 USB 口,还有一个 3.5 音频插口,后面有两个千兆网口,还有几个 USB 口,当然了,供电插口也是少不了的。这机壳是用金属制造的,拿在手上感觉非常的硬。至于内部配置呢,那就很一般啦。赛扬 J1900 处理器,4G 内存,64G mSATA 接口的硬盘。的确,这跟我所知的工控机配置差不多,毕竟工控机是工业控制设备,而不是游戏机,配置能满足工业控制的需求就行了,工控机的好坏是接口的多寡,以及机器外壳的耐力。

运行操作系统

  他说,这机器你就随便玩儿吧,装啥系统随你,只要你能启动 PE 就可以为所欲为。PE 有的是,从 2003 内核到 11 内核的都有。我抱着试试看的态度,把 11 内核的 PE 启动盘插上工控机,然后插电。这小子竟然有来电开机功能,还不错。开机后,按 F12 选择启动设备,当然是选择 U 盘喽。一切顺利,进入了 PE。这回我把他惊了一下,因为他之前的系统崩了,还顺便导致 PE 无法启动,我这里啥也没做就成功了,哈哈哈。

  就 PE 下的体验而言,J1900 颠覆了我的认知,打开文件夹啥的根本不像赛扬的速度,三下五除二我就完成了硬盘分区。我向来喜欢倒腾服务器系统,据我所知,Windows Server 2019 Essentials 是最后一个 Windows Server Essentials 版本,针对小型企业设计。前两年的体验,这个版本的系统跑起来的确很快。既然这样,那就安装这个版本好了。

  装系统的时候,J1900 明显吃力,就连读屏朗读的声音都有点破了。不过重启进入 Windows Server 2019,操作的速度还不错。不出意料,2019 可以驱动起这工控机的声卡,安装读屏,然后用 Driver Booster 安装了缺少的驱动。

把它变成小型服务器

  Windows Server 2019 是服务器系统,通常是通过远程桌面进行操作的。简单优化了系统,关掉了一些用不着的服务,设置 Svchost 合并后,4G 的内存,有 2.5G 可用。再开一个 Windows 10 虚拟机显然是不可能了,但是跑个网站,TeamTalk,甚至启动 Hyper-V 服务,跑个实验用的软路由是完全可以的。

  这软路由叫做 OpenWRT,我用的不是原版,而是 eSir 优化的版本。进入软路由的控制台,我发现这已经超越了路由本身,稍加探索,不难发现有 Docker 服务,还有 ZeroTier 服务,Softether VPN 服务,还有 KMS 激活服务等等。当然还有年轻人们喜闻乐见的酸酸乳普拉斯,导入节点试了试,的确还阔以。至于 Docker 的用法,那就是八仙过海各显神通的事情了。比如京东自动签到,服务器监控等等。

  大的活儿它干不了,但是干一些头尾工作,或者跑一些需要长时间稳定运行的小服务,它的确有用武之地。耗电不大,没有噪音,因为这机器是被动散热设计,CPU 就那点功耗,到了夏天,冲破天也就六七十度。至于怎么检测机器的质量,只要踩上去就知道了。如果轻轻踩就会凹下去,显然质量不行。我比较瘦,最多也就 130 斤,双脚踩在机器上面,对机器丝毫没有影响。我曾经试过蹲在上面,伸手打开脚下的机器,枚任何问题。两百多斤的胖子不妨一试,反正也就几百块钱,踩碎了就算了,哈哈哈。

结束

  工控机其实是个很宽泛的概念,凡是用来进行自动控制的,都会有人冠以工控机这一名称。因此,硬件配置等的也有很大的差别。例如有些机器的网卡死活不会在 Server 系统下正常运行,而有的机器装配了两种不同规格的网卡。我印象中的工控机都是用在生产线上的控制设备,个头的确比较大,这回算是开眼了。

从“非官方页面”说开去

  当你买来域名,并且把网站搭建起来后,你会高高兴兴的把网址分享给好友。如若你通过 QQ 把网址分享给你的好友,朋友们多半会直接点开,点开后就是“当前网页非官方页面”的提示,并且还会“好心”地提示说,可以复制网址去其他浏览器打开。尼玛,狗日的腾讯!

腾讯 QQ 为什么要将网站标记为“非官方页面”?

  腾讯自称要“维护绿色上网环境”,所以会在 QQ 中对没有在工信部备案的网站进行封杀——标记为“非官方页面”。但已经备案的个人网站也难于幸免,例如 www.tc06.cn,www.xtcgzs.cn 和 www.sqyai.com。这些网站不太可能传播违法信息或者仿冒官方网站,因为服务器都在境内,违法成本很大。

  腾讯不仅仅敢于封杀个人网站,对于一些没有备案,但的确是官方主办的网站,腾讯也照封不误。据我测试,非视觉访问(nvaccess.org)、越南中央政府网站(www.gov.vn)、朝鲜中央通讯社网站)www.kcna.kp)、日本总务省网站(www.soumu.go.jp)以及联合国儿童基金会(www.unicef.org)都提示非官方页面。就连那些空壳子网站,点开后也照样会“非官方页面”。一些版本的手机 QQ,甚至会把根本不存在的域名也显示为“非官方页面”。如图:

手机 QQ 显示联合国儿童基金会的网站是“非官方页面”,网址是 www.unicef.org

  腾讯以“维护绿色上网环境”为由,封锁大量无害网站,这种做法是绝对站不住脚的。但腾讯可以辩称自己是“误封”了网站,因此,他们提供了申诉页面。耐人寻味的是,提交申诉之后,页面会引导开通“网站安心计划”,宣称可以对违法内容进行预警,避免网站再次被封等。如图:

申诉后,诱导开通网站安心计划的页面

但是该计划已经升级成了品牌管家,最便宜的套餐,每年的费用是三十六万元。截至撰文时,https://lrsm.urlsec.qq.com/lrsm#/anxin 已经显示 503 错误。下图是该网页在 2022 年 11 月 19 日 23:23:40(格林尼治时间)的快照:

“网站无忧计划”的介绍页面,截至发稿时,该页面无法正常访问

  点击“升级套餐”或者“立即使用”,都会跳转到品牌管家的购买页面。从购买页面上不难看到腾讯把“品牌保护”区分为不同的等级。以“品牌保护基础版”为例,腾讯宣称“为中小型公司提供品牌保护基础服务”并且“可选择网站、App、公众号其中一项进行仿冒发现、拦截、处置服务”。点击“一年”(最少是一年),下面的价格就是 360000 元。如下图:

“品牌管家”页面,该页面显示多个等级的套餐,以及基础版套餐的费用是 360000 元

  让人疑惑的是,被拦截的网站,在微信的“腾讯安全反诈实验室”微信公众号中,检测结果是安全的。如图:

腾讯安全反诈实验室网页,上面提示 www.unicef.org 安全

如何应对腾讯的做法?

被动应对

  不要在 QQ 发送你的网站的链接,并且在网站醒目位置告知访问者,通过 QQ 访问会出现“非官方页面”的提示。如果愿意,可以写一篇文章来张贴网站被拦截的提示页面截图。

  如果向腾讯申诉了,请别忘了张贴申诉后诱导开通网站安心计划(品牌管家)的截图。有腾讯云账号的,也可以在文章中张贴开通品牌管家页面的截图,注意让价格清晰可见。

注意:截图中不要包含你的个人信息。

主动应对

  如果确有必要在 QQ 中打开这个网站,可以按照拦截页面的提示,提交申诉。除此之外,还可以在微信中搜索“腾讯安全反诈实验室”,找到“腾讯安全反诈实验室”公众号后,也可以进行申诉。

温馨提示:请注意保留申诉时的截图,以便提交给下面提及的平台。例如去广东省通信管理局申诉时,会要求提供与被申诉方协商的证据。

  如果搞了两三次回合还是拦截,可以去 https://ts.isc.org.cn/ (互联网信息服务投诉平台)进行投诉。投诉后,如果腾讯还是非常固执地拦截,请访问 广东省电信用户申诉综合处理中心 (http://14.18.100.118:9999/webPage03/pages/step1.html)或者 广东省通信管理局网上信访 https://wsxf.miit.gov.cn/?sjbs=1

  最后,如果你确实能力超凡,开了一家公司,你可以让法务部门直接起诉腾讯不正当竞争。

第一次搞 Apple 礼品卡,交学费了

  每个少年都有出去走走的想法,美国区的苹果账号显然必不可少。App Store 里许多软件都需要付费,所以,支付显然是个大问题。随便借给人信用卡,这种不能更改密码的东西,你敢你上哈哈。苹果也知道有这样的需求,很早就推出了礼品卡。礼品卡说白了就是个代金券,例如购买一张面值 10 美元的礼品卡,里面就有 10 美元的余额,可以用来购买 App Store 的软件,以及 iTunes 的歌曲等等。你没猜错,我就是在购买礼品卡的时候翻车了。

  这车是怎么翻的呢?还得看看我有哪些账号才能说的清楚。

  1. myself@contoso.com,这个邮箱也是国内版苹果账号。
  2. cockpit@contoso.com,这个邮箱没有注册苹果账号,在购买礼品卡的过程中,它作为礼品卡发送者的邮箱(购买礼品卡的时候可以随便填)。

  我在购买礼品卡的时候,登陆的是 myself@contoso.com 这个苹果账号。然后我把礼品卡的接收者邮箱填写成 myself@contoso.com,账单邮箱也填写成 myself@contoso.com,礼品卡的发送者邮箱填写 cockpit@contoso.com。完成了支付手续后,苹果的确受理了交易,信用卡上也的确看到了扣款。但是,过了 40 个小时(你没看错,40 个小时),我依然没有看到苹果给我发送的礼品卡邮件,倒是看到了已寄出礼品卡的邮件。

  直到撰写这篇文章,我依然没有收到那张礼品卡,估摸着永远收不到了吧。我不知道苹果是故意这样设计来坑那些自己给自己买礼品卡的人,还是他们的系统有 Bug。总而言之吧,10 美元就当交学费了。

视障同学通过电子邮件完成 hCaptcha 验证的方法

  最近玩 OpenAI ChatGPT 的视障同学挺多的(我也是其中之一),在注册和登陆的时候,我们会遇到 hCaptcha 人机验证。跟谷歌的 reCAPTCHA 一样,hCaptcha 提供视觉验证,但不同的是,hCaptcha 的“绿色通道”是通过电子邮件来完成的,这难倒了不少同学(您先别急着表示不屑,没准您是一位运气王)。下面,让我们开始吧!

准备一个能接收国外邮件的电子邮箱

  这个很容易获得,你有 QQ 邮箱吧?这就挺好,如果你还绑定了微信,那就更好了,那位说了,我还在电脑上登陆了微信,诶呀,这就太好了。

触发挑战

  在有 hCaptcha 验证码的页面上,通常你会碰到“hCaptcha复选框。选择以触发挑战,或者如果您具有可访问性cookie,则绕过它”复选框。按空格键选定这个复选框,然后你会听到“获取有关hCaptcha和辅助功能选项的信息。 菜单按钮 已折叠”,这里按空格键。按下空格键后,会打开一个菜单,第一个选项就是“辅助功能”,按回车键。你会听到“对话框”,这里,按 Tab 到“检索可访问性cookie”链接,然后按回车键。

输入邮箱,获取验证链接

  现在打开了一个新的页面,在“电子邮件”中,输入你的 QQ 邮箱账号,然后点击“注册”按钮。十秒钟后,你的 QQ 邮箱就会收到 hCaptcha 的邮件,标题是“Instructions for using hCaptcha Accessibility”。
打开这封邮件,按 Tab 可以导航到“获取可访问性 Cookie”链接,点击它就可以访问 hCaptcha 的验证页面。不过,微信打开 QQ 邮箱后有个问题,点击“获取可访问性 Cookie”链接后,会要求登陆 QQ 邮箱。所以,变通的解决方法是复制它下面的链接,通常以 https://accounts.hcaptcha.com/verify_email 开头,复制的时候要注意删掉读屏软件在末尾添加的“链接”,复制后,回到“Sign up for hCaptcha Accessibility Access”页面,在地址栏粘贴。

获取辅助功能 Cookie

  完成了上面的步骤后,我们来到了 hCaptcha 的验证页面。按 Tab 可以导航到你的邮箱账号,例如我这里是 armstrong@contoso.com,再按一下 Tab 就可以导航到“设置Cookie”按钮。用空格键点击这个按钮,顺利的话,就会听到“Cookie集”的语音提示,如果没有听到,按一下下光标也可以导航到这句话上面。听到这句提示,就表示验证通过了,可以进行后续操作。

疑难排解

  上面的操作很顺利吧?是的,我们没有遇到任何问题。实际上,我们会经常遇到下面的情况:

无法发布Cookie。如果此问题继续发生,请发送电子邮件至support@hcaptcha.com。

  使用代理服务器上网的同学经常会遇到这个问题,这个问题是由于 hCaptcha 阻止了代理服务器的 IP 导致的,可以暂时关掉代理,或者切换到其他节点,然后在点击一次“设置Cookie”按钮。

点击“设置Cookie”按钮后,一分钟还是没有收到 Cookie?

  请查看你的邮箱的垃圾箱是否有 hCaptcha 的邮件,如果没有,更换一个邮箱。或者,输入邮箱后,点击注册,你听到了错误提示,就请暂时关掉代理,也可以尝试换一个节点。

后续步骤

  经过前面的操作,我们就可以进行后续步骤了。关掉提示“Cookie集”的页面,然后点击“封闭模态”按钮,焦点就会回到“hCaptcha复选框。您已通过验证”。现在就可以进行下一步操作啦,比如登陆,注册等等。

后记

  根据我的观察,使用 hCaptcha 验证码系统的网站除了 openai 还有 CloudFlare,解决问题的方法也都是一样的。同学们一定要举一反三哦。

❌