阿里云轻量应用服务器ubuntu20.04上手体验与基本配置(图形界面,ssh,代理等)

 
Category: Linux-Shell

写在前面

最近通过帅地的公众号get了一个一年的阿里云轻量应用服务器, 2核4GB, 磁盘60GB,流量1100GB, 感觉还是相当够用的. 一开始我就将其当成一个x86_64架构的虚拟机了, 但是后来发现这样实在是有点浪费了, 云服务器能做的事情可真是多. 之前就了解过的内网穿透服务器就可以用云服务器来搭建, 此外还可以做一些个人站点之类的. 话不多说, 我们先来配置一下这座’毛坯房’, 让它能够适应我们的需求.

系统镜像我选择了Ubuntu当前支持的最新版本20.04(focal), 毕竟是最大众化的一款Linux发行版了, 用着顺手.

之后可以通过重置镜像的方式更改.

ssh链接:秘钥文件+密码

由于平台默认已经为我们分配了公网ip, 此时就可以远程连接到云服务器了, 只需要在管理界面配置一下远程登录的密码即可, 但是这样会比较麻烦, 密码8位带字母数字, 每次都要输入一遍. 这里建议通过秘钥文件的方式来连接(确保安全的前提下), 管理面板上有详细的操作流程.

下面我设置了一个快捷命令, 连服务器更加顺手了:

alias ubt='ssh -i /Users/xxx/.ssh/ssh1.pem root@<公网IP>'

需要注意这样设置之后, 密码登录会失效, 需要修改/etc/ssh/sshd_config文件的最后一行, 将PasswordAuthentication no, 改为PasswordAuthentication yes, 然后重启服务sudo systemctl restart sshd, 最后重启服务器:reboot, 这样就能看到生效了, 用手机端termux连服务器, 美滋滋~

后续的操作也基本都是通过ssh链接进行的.

镜像

这里阿里云直接帮我们设置为自己家的软件源镜像了, 速度相当快.

安装基本工具

查看系统信息

apt install neofetch
            .-/+oossssoo+/-.               root@xxx
        `:+ssssssssssssssssss+:`           ----------------------------
      -+ssssssssssssssssssyyssss+-         OS: Ubuntu 20.04.1 LTS x86_64
    .ossssssssssssssssssdMMMNysssso.       Host: Alibaba Cloud ECS pc-i440fx-2.1
   /ssssssssssshdmmNNmmyNMMMMhssssss/      Kernel: 5.4.0-47-generic
  +ssssssssshmydMMMMMMMNddddyssssssss+     Uptime: 12 hours, 36 mins
 /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/    Packages: 2121 (dpkg)
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Shell: bash 5.0.17
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   Resolution: 1024x768
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   Terminal: /dev/pts/1
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   CPU: Intel Xeon Platinum 8269CY (2) @ 2.499GHz
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   GPU: 00:02.0 Cirrus Logic GD 5446
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Memory: 1126MiB / 3748MiB
 /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/
  +sssssssssdmydMMMMMMMMddddyssssssss+
   /ssssssssssshdmNNNNmyNMMMMhssssss/
    .ossssssssssssssssssdMMMNysssso.
      -+sssssssssssssssssyyyssss+-
        `:+ssssssssssssssssss+:`
            .-/+oossssoo+/-.

编译工具链

apt install gdb make

MySQL

apt install mysql-server
apt install libmysqlclient-dev # 解决<mysql/mysql.h>找不到的问题

防火墙工具

这个算是相当重要了, 因为之后的网络服务都要通过防火墙, 不安装当然也可以, 但是会不安全, 之后在内网穿透部分我也会提到这个.

apt install firewalld
apt install iptables-services

开启服务:

systemctl start firewalld

查看版本和当前运行状态:

firewall-cmd --version
firewall-cmd --state

node.js

后面的clash配置要用:

apt install nodejs
apt install npm

npm镜像设置:

npm_config_registry=http://registry.npmmirror.com npx npm-mirror-set taobao

安装pm2(应用管理):

npm install pm2 -g

图形界面

这里虽说云服务器加GUI实属没必要, 不过有时候做一下Webserver的话不开个浏览器实在是看不到效果, 安一个基本的就够了(因为是真的卡, 甚至不如自己本地搭建的multipass). 这里参考了1:

apt install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal ubuntu-desktop

还要安装一个叫做vnc的东西, 有了这个方便的小工具, 我们才能通过vnc-viewer这款软件(在Mac)上查看远程服务器的图形化界面.

apt-get install tightvncserver

或者通过aptitude安装vnc4server, 两者功能是一样的.

  apt-get install aptitude
  aptitude install vnc4server

需要注意镜像的问题2, 修改vi /etc/apt/sources.list, 在第一行加上

  deb http://archive.ubuntu.com/ubuntu/ focal universe

然后更新镜像apt update.

完成之后, 在Mac上安装vnc-viewer:

brew install vnc-viewer

通过输入vncserver启动vncserver, 修改配置文件:vim ~/.vnc/xstartup.如下:

#!/bin/sh

export XKL_XMODMAP_DISABLE=1
export XDG_CURRENT_DESKTOP="GNOME-Flashback:GNOME"
export XDG_MENU_PREFIX="gnome-flashback-"
gnome-session --session=gnome-flashback-metacity --disable-acceleration-check &
vncconfig &

这里我就用了官方给的配置, 最后一行是开启剪贴板支持(不过我感觉好像没起作用).

截屏2022-11-07 14.24.08

防火墙端口开启

这里还有一个重要的步骤, 就是关于防火墙的端口开启设置, 需要开启的端口为59005901, 这个1就是之前vncserver默认的第一个实例. 在管理界面中右上角添加规则:

截屏2022-11-07 12.23.54

由于前面设置过了防火墙, 这里就需要先添加相应的端口, 这里参考了3, 思路都是一样的:

firewall-cmd --zone=public --add-port=5900/tcp --permanent
firewall-cmd --zone=public --add-port=5901/tcp --permanent

查看端口状态:

firewall-cmd --query-port=5900/tcp
firewall-cmd --query-port=5901/tcp

netstat查看服务器是否开启了任务监听对应端口:

sudo netstat -tunlp | grep 5901

这里应该显示如下:

tcp6       0      0 :::5901                 :::*                    LISTEN      5502/Xvnc4

查看防火墙的端口开放情况:(对5900亦然, 下同)

sudo iptables -L -n --line-numbers | grep 5901

若没有, 需要用下面的方法开启:

sudo iptables -I INPUT -ptcp --dport 5901 -j ACCEPT

最后刷新防火墙:

firewall-cmd --reload

端口部分就完成了.


重启vnc:

vncserver -kill :1 && vncserver -geometry 1920x1080 :1

打开Mac本机的vnc-viewer, 输入: <公网IP>:1, 其他默认, 即可连接.

配置代理

方便GitHub等的访问, 这里采用了clash命令行客户端, 参考了4.

wget https://github.com/Dreamacro/clash/releases/download/v1.11.12/clash-linux-amd64-v1.11.12.gz
gzip -d clash-linux-amd64-v1.11.12.gz
mv clash-linux-amd64-v1.11.12 clash
mkdir /opt/clash
mv clash /opt/clash/clash
cd /opt/clash
chmod 755 clash
./clash -v
# Clash v1.11.12 linux amd64 with go1.19.3 Fri Nov  4 05:30:39 UTC 2022

/opt/clash中新建:

vi start_clash.sh
# 加入如下内容:
./clash -d .

然后开启:

chmod 755 start_clash.sh
pm2 start start_clash.sh

此时可以看到:

最后同样, 加个快捷指令:

alias uvpn='pm2 stop /opt/clash/start_clash.sh'
alias vpn='pm2 start /opt/clash/start_clash.sh'

以及:

alias vv="export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890"
alias uv="unset https_proxy http_proxy all_proxy"

终端上GitHub的问题就可以解决了, 下面测试一下(with Google):

curl -vvv google.com
* Uses proxy env variable http_proxy == 'http://127.0.0.1:7890'
*   Trying 127.0.0.1:7890...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 7890 (#0)
> GET http://google.com/ HTTP/1.1
> Host: google.com
> User-Agent: curl/7.68.0
> Accept: */*
> Proxy-Connection: Keep-Alive
...
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
* Connection #0 to host 127.0.0.1 left intact

关闭之后:

也可以通过pm2 list查看运行状态.

开多了运行程序可以用pm2 delete <id>删掉.

ref