华为云服务器配置
华为云服务器配置
最近把几个月前买的华为云服务器翻出来了,然后总是搞着搞着就把环境搞得一团糟干脆重装,反正就几分钟的事。顺便写个教程以后自己想再重装回来翻下。
MFA配置
如果你用过github,相信对2FA一定不陌生,而MFA和2FA差不多。简单来说,就是一个定时刷新的验证码。我们在进行一些敏感操作,如重设密码等需要频繁验证,这时MFA就会比收短信验证码或者邮箱验证码这类更方便些,当然MFA不是必须的,使用传统验证方式也行。 在安全设置-敏感操作中绑定MFA。管理MFA可以使用华为云的官方app。我个人是Google爱好者,使用的是google authenticator,同时管理github在内多项MFA和2FA。
安全组配置
安全组配置简单来说就是允许哪些ip访问以及开放哪些端口。这个其实刚开始不用管,用默认安全组就行。之后如果添加了某些服务再加上就行。例如你在服务器上装了个,mysql就要开放3306。细节可以参考官方文档。
要检查某个端口是否开放可以使用netstat -an | grep 80
命令。
重置密码
如果你不记得你的密码,可以在【实例概览-服务器操作-更多】中重置密码,只不过会有一个验证,这时之前设的MFA就排上用场了。如果没设MFA可以用手机或邮箱验证码。
ssh登录&免密
使用ssh [用户名]@[服务器公网地址]
命令就可以远程登录服务器了。默认用户名是root,如果忘了密码可以重置密码。
如果觉得每次输密码太麻烦,可以配置免密登录。在本地计算机(不是服务器)上启动终端(window用cmd或powershell),cd ~
来到用户目录下,一般为C:\User\用户名,cd .ssh
进入.ssh文件夹,使用ssh-keygen -t rsa
生成密钥,中途要求保存地址和密码不输直接回车也行。
查看可以发现多出了id_rsa
和id_rsa_pub
两个文件,分别是私钥和公钥。
此时可以使用ssh-copy-id
命令再次登录服务器将会将生成的公钥复制到服务器,但会覆盖源文件。也可以记事本打开公钥文件将内容手动粘贴到/root/.ssh/authorized_keys
文件中。如果不会linux的文件操作,可以使用华为云网页自带的远程登录,自带一个文件树,双击打开后粘贴就行。
或者也可以使用echo命令写入,即echo "你的公钥内容" >> ~/.ssh/authorized_keys
。
如上配置完成后再使用ssh命令登录就不需要输入密码了。
宝塔面板登录
我买的Flexus L实例默认镜像是Ubuntu 22.04+宝塔面板。当然宝塔不是必要的,完全可以ssh登陆后自己敲命令装软件,不过为了方便还是先用着宝塔,以后可能会换别的管理软件。
宝塔面板的默认账密在credentials/password.txt
中,可以使用cat
命令查看。
登录后会要你装些软件,选默认配置就行。之后要装什么也可以在软件商店装。
防火墙开放端口
我在使用宝塔面板中安装了mysql,并在ssh登录的终端中成功登录。但是尝试使用公网ip外部登录时失败。这是因为除了安全组配置,还需要在服务器上开放防火墙对应端口。对于Ubuntu系统可以使用ufw命令管理防火墙。如下是一些常用命令。
- sudo ufw enable/disable 启用/禁用ufw
- sudo ufw allow 80/tcp 开放特定端口,如果省略协议类型则同时允许tcp和udp
- sudo ufw status 查看防火墙开放的端口 加个numbered可以看序号
- sudo ufw delete [rule number] 删除某条规则
- sudo ufw reload 重启防火墙
如果开放端口还是无法连接,可能是mysql本身设置的问题,可以参考这里,修改访问权限。不建议直接更改root,可以新建一个用户再赋权。
其他配置
mysql
除了开放对应端口还需修改user表的host。
- 使用
mysql -u root -p
登录。 use mysql;
选择mysql数据库。select host,user from user
查看user表的host。一般这里root的host是localhost,也就是不允许从外部登录。这里个人不建议直接修改root。可以新建一个用户再赋权。CREATE USER 'newuser'@'%' IDENTIFIED BY 'mypassword';
新建用户。GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%';
赋予新用户所有权限。FLUSH PRIVILEGES;
刷新权限。
完成如上操作后,就可以使用新用户远程登录mysql数据库了。
RustDesk
RustDesk在宝塔的应用商店里有。先装Docker和Docker Compose,之后就可以一键安装RustDesk了。
安装RustDesk后要开放对应端口,21115:21119/tcp
和21116/udp
。防火墙和安全组都要配置。
服务安装后在docker-容器-hbbs-日志查看api key,ID服务器地址填自己服务器的公网地址就行。
Redis
开放端口老生常谈了,略。
在redis的配置文件中也有一行bind 127.0.0.1
,限定只能本地登录。可以注释掉这行或者换成自己的ip。
因为redis默认是不设账号密码的,所以一定要设置一下密码。在配置文件/redis/redis.conf
中添加一行requirepass mypassword
。如果还想设置用户名,可以使用requireuser username
。
如果使用的是宝塔面板,也可以直接在设置中修改。
localtunnel
localtunnel可以很方便地将本地服务暴露到公网。默认会使用localtunnel官方服务器,为了隐私和效率选择自建服务器。
拉取项目:服务端的gitbub地址,使用git clone https://github.com/localtunnel/server.git
命令拉取时报错如下:
error: RPC failed; curl 16 Error in the HTTP2 framing layer
fatal: expected flush after ref listing
在stackoverflow上看到解决方法,使用git config --global http.version HTTP/1.1
强制git使用HTTP 1.1,之后可以使用git config --global http.version HTTP/2
改回来。
刚打算试试,发现又好了。看来是github日常抽风,有空配下代理。
安装并启动项目:拉取后的文件夹名为server
,我为了方面管理改成了localtunnel-server
。cd到这个目录下,使用npm install
安装依赖,然后使用node -r esm bin/server --port 1234
启动项目。端口可以自定义。
使用nohup
可以在后台不挂起运行程序,退出终端不影响。
gotify
gotify是一个简单易部署的消息服务。
服务端:使用docker部署gotify很方便。只需要一行命令就能完成。不过我们为了可用性还是使用docker-compose。首先新建一个文件夹作为项目位置,然后新建文件docker-compose.yml
:
services:
gotify:
image: gotify/server
container_name: "gotify"
restart: always
ports:
- 28818:80 #可以自定义要映射的端口
environment:
- GOTIFY_DEFAULTUSER_NAME=admin #默认账号
- GOTIFY_DEFAULTUSER_PASS=admin #默认密码,记得修改一下
volumes:
- "./gotify_data:/app/data"
然后sudo docker-compose up -d
就行。记得开放设置的端口和安全组,之后就可以登录<ip>:<port>
查看消息了。
客户端:因为我的需求是转发验证码短信,使用的客户端为SmsForwarder-短信转发器。
在导航栏的apps标签中新建应用获取token,然后拼接服务器地址:http://<ip>:<port>/message?token=<apptoken>
填入WebServer,测试成功。