普通视图

发现新文章,点击刷新页面。
昨天以前首页

华东 Journey

作者 Armstrong
2023年9月5日 16:42

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

为什么我想要去华东地区

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

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

行前准备

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

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

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

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

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

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

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

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

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

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

作者 Armstrong
2023年3月14日 17:40

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

  想想看,买服务器的用途是什么?还不是为了运行网站吗?哦对了,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,这会影响窗口的布局等。

总结

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

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

作者 Armstrong
2023年1月7日 14:51

  最近玩 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,解决问题的方法也都是一样的。同学们一定要举一反三哦。

❌
❌