{"version":"https://jsonfeed.org/version/1.1","title":"奇诺分享 | blog.ccino.cc - 重在分享","home_page_url":"https://blog.ccino.cc","feed_url":"https://blog-ccino-cc.pages.dev/json/","description":"","icon":"https://cdn-blog-ccino-cc.ccino.cc/blog-ccino-cc/production/images/channel-6ebae07c242a357bee27d74ca3e4b3ce.png","favicon":"https://cdn-blog-ccino-cc.ccino.cc/blog-ccino-cc/production/images/favicon-bdc56a1bbdd3d9f75032075380339348.jpg","authors":[{"name":"奇诺分享"}],"language":"zh-cn","items":[{"id":"ez56GfIVr5S","title":"VPS 基本配置：新买的 VPS 怎么整备和调教？","attachments":[{"url":"https://www.guai.win/notes/0003-new-vps","mime_type":"text/html"}],"url":"https://blog.ccino.cc/i/new-vps","external_url":"https://www.guai.win/notes/0003-new-vps","content_html":"<p>拿到新机器，咱们二话不说，先 ping 一下 IP，能否连通。连不通的话，可能是被封锁了，新机一般可以免费换 IP，换完接着 ping。</p><p>连通后看看延迟和丢包，延迟太大就得考虑。可能这个机房，它不适合你。</p><p>大家的地区，运营商，节点线路都不大一样，冷暖自知。</p><p>能接受的话，就 ssh 上去，开始跑测试脚本，是骡子是马，还得看数据。跑完测试觉得机子不行，应该还能赶在截止时间之前退单退款。</p><p><em>有些鸡贼的商家，使用流量超过 10G，就不给退单退款，这种就别跑测速了。</em></p><p>测速脚本一跑，几十个 GB 就没了，到时候退不了，只能砸自己手里。</p><p><strong>· · ·</strong></p><p><br></p><h2><strong>一、脚本测试</strong></h2><p>先别急着装什么面板，测完性能再说，直接上脚本。</p><h3>1. yabs 脚本</h3><p>yabs 是一个比较常用的综合测试脚本，权威性比较高，一般用来看最后的 cpu 得分。</p><pre class=\"ql-syntax\" spellcheck=\"false\">wget -qO- yabs.sh | bash\n\n</pre><h3>2. bench.sh 一键测试脚本</h3><p>bench.sh 也是一个综合测试脚本，历史比较久，大佬一直在维护。</p><p>原作者链接：<a href=\"https://github.com/teddysun/across/blob/master/bench.sh\" rel=\"noopener noreferrer\" target=\"_blank\">github.com/teddysun/across</a></p><pre class=\"ql-syntax\" spellcheck=\"false\">wget -qO- bench.sh | bash\n\n</pre><h3>3. 线路测试</h3><p>besttrace 是专门测试回国线路的脚本，可以看到连接国内几大城市的节点线路和对应延迟。</p><pre class=\"ql-syntax\" spellcheck=\"false\">wget -qO- git.io/besttrace | bash\n\n</pre><h3>4. 网速测试</h3><p>network-speed，测试 vps 到全球的连接速度，节点比较多，比较耗流量，成功测完得 20G 往上。</p><pre class=\"ql-syntax\" spellcheck=\"false\">wget -qO- network-speed.xyz | bash\n\n</pre><h3>5. 硬盘测试</h3><p>这条测试是调用系统的命令，看看到底是 HDD、SSD 还是 NVME 硬盘。</p><pre class=\"ql-syntax\" spellcheck=\"false\">dd if=/dev/zero of=256 bs=64K count=4K oflag=dsync\n\n</pre><p>测试结果参考：1-2M/s 的是 HDD；20-30M/s 就普通的 SSD；80M/s 以上的是好机子。</p><h3>6. 内存超售检测</h3><p>部分商家会超售内存，可以用该脚本检测。</p><p>至于超售 CPU、带宽，这个就比较稀松平常了。</p><p>（脚本的安全性未知，建议看完重装系统部分，再决定要不要跑。）</p><pre class=\"ql-syntax\" spellcheck=\"false\">curl https://raw.githubusercontent.com/uselibrary/memoryCheck/main/memoryCheck.sh | bash\n\n</pre><h3>7. 流媒体解锁和 OpenAI 解锁测试</h3><p>检测 VPS 的 IP 是否能够用来开通流媒体、OpenAI 等订阅服务。（同上，脚本安全性未知。）</p><pre class=\"ql-syntax\" spellcheck=\"false\">bash &lt;(curl -L -s https://netflix.dad/detect-script)\n\n</pre><h3>8. IP 检测</h3><p>如果对 IP 这个比较看重，怪文再推荐两个小工具，简单调查一下手上的 IP。</p><h4>1) IP 位置</h4><p><a href=\"https://whatismyipaddress.com/ip\" rel=\"noopener noreferrer\" target=\"_blank\">whatismyipaddress.com</a></p><p>whatismyipaddress 这个网站可以查到你 VPS 的 IP 所在地，数据比较精准。</p><h4>2) IP 纯净度</h4><p><a href=\"https://scamalytics.com/ip\" rel=\"noopener noreferrer\" target=\"_blank\">scamalytics.com</a></p><p>这个网站会返回一个分数和一个风险等级，欺诈风险分数一般低于 50 就好。当然，分数越低越好，0 分最好。</p><p><em>scamalytics 可以查到 IP 的纯净程度，这点很重要！</em></p><p>IP 越干净，越容易过流媒体等服务的订阅风控，也不容易弹 Google 和 Cloudflare 的人机验证弹窗和过渡页，代理的时候体验会更好。</p><p>比如，注册 OpenAI 账号，开通 Plus 订阅，都是很看重 IP 欺诈分的，分数太高的话，申请 API 和 Plus 可能不给通过。</p><p>当然，也可以选择其他方式进行代偿，比如套 wrap，或者用其他优质节点开通服务，后面换回原 IP 继续用，基本没啥问题，除非原 IP 被墙了。</p><p><strong>· · ·</strong></p><p><br></p><h2><strong>二、更新系统</strong></h2><h3>1. 重装系统</h3><p>建议先跑完测试脚本，再重装系统，也是为了规避脚本的安全性问题。可别以为大家用的脚本就很安全哦，还是别轻信外部脚本的好。</p><p>有些人喜欢跑各种整合过的一键脚本，也不看脚本里面写的啥，难搞。</p><p>一般来说，VPS 厂商给你的默认操作系统，很可能不是你想要的发行版或者版本号，建议用厂商的面板重装下系统。</p><p>不太建议自己装些厂商没提供的系统，容易被抓到把柄。</p><h4>系统的选择</h4><p>服务器端发行版选择很多，Debian，Ubuntu，Rocky Linux，AlmaLinux，Fedora 等等，甚至 CentOS，OpenSUSE Leap 都行，选自己熟悉的就好。</p><p>关于各个发行版的特点和取舍，这里先占个坑，后面来填吧。</p><p>反正有条件的直接上 Red Hat Enterprise Linux（RHEL）就好，免费的哪有这个好啊。</p><p>Ubuntu 因为资料好找，使用起来方便，稳定性也不错，所以怪文一直用 Ubuntu。</p><p>但自从 Canonical 往 Ubuntu 22.04.3 LTS 里面塞广告，有些广告还无法被移除，吃相有点难看，这种行径和国内厂商有得一拼了。</p><p>目前还在寻找平替，因为系统还没换，下面的 shell 命令，基本都是基于 Ubuntu 的版本。</p><p>如果装的是 Fedora 和 RHEL 系的发行版，比如 CentOS 之类的，请将下面命令中的 apt 用 yum 替换。</p><h3>2. 更新列表升级应用</h3><pre class=\"ql-syntax\" spellcheck=\"false\">apt update &amp;&amp; apt upgrade &amp;&amp; apt full-upgrade &amp;&amp; apt autoremove\n\n</pre><h3>3. 基础工具包</h3><pre class=\"ql-syntax\" spellcheck=\"false\">apt install vim curl unzip ufw\n\n</pre><p><strong>· · ·</strong></p><p><br></p><h2><strong>三、安全配置</strong></h2><p>小白最容易忽略的就是安全配置，弱密码什么的就不说了，说一下核心的配置。</p><h3>1. 添加新用户</h3><p>不建议每次都用 root 账号登录，创建新用户并给 root 权限比较好。</p><p>首先，添加新用户，并自动创建对应的组，然后根据提示设置密码：</p><pre class=\"ql-syntax\" spellcheck=\"false\">adduser 新用户名\n\n</pre><p>设置新密码之后，继续。除了用户名，其他敲回车默认即可。</p><p>添加新用户到 sudo 用户组，就可以使用 sudo 命令了：</p><pre class=\"ql-syntax\" spellcheck=\"false\">usermod -aG sudo 新用户名\nCopy\n// 相关补充\nexit            // 用户退出登录\npasswd p        // 重设密码\n\n</pre><h3>2. 修改 SSH 登录端口</h3><p>更改端口前，建议先把 22 端口也添加上，等 ssh 能通过其他端口连接后，再注释掉22端口。</p><p>先打开配置文件：</p><pre class=\"ql-syntax\" spellcheck=\"false\">vim /etc/ssh/sshd_config\n\n</pre><p>找到这行：</p><blockquote><em>Port 22</em></blockquote><p>然后在后面追加想要的端口号：</p><blockquote><em>Port 端口号</em></blockquote><p>端口号的范围是 0 到 65535，数字别超了。</p><p>加完端口重启 SSHD 服务，让配置生效：</p><pre class=\"ql-syntax\" spellcheck=\"false\">systemctl restart sshd.service\n\n</pre><p>如遇到 ssh 连接总自己断开，还可以继续添加添加配置：</p><blockquote><em>ClientAliveInterval 30</em></blockquote><blockquote><em>ClientAliveCountMax 6</em></blockquote><h3>3. SSH 免密登录</h3><p>Windows 用户在 /.ssh 目录生成公钥和私钥：</p><pre class=\"ql-syntax\" spellcheck=\"false\">ssh-keygen\n\n</pre><p>再在 vps 上的生成用户的公钥和私钥：</p><pre class=\"ql-syntax\" spellcheck=\"false\">ssh-keygen\n\n</pre><p>创建 authorized_keys 文件，把 Win 上的公钥复制进 authorized_keys：</p><pre class=\"ql-syntax\" spellcheck=\"false\">cd /当前用户目录/.ssh\nvim authorized_keys\n\n</pre><p>给 authorized_keys 文件设置权限：</p><pre class=\"ql-syntax\" spellcheck=\"false\">chmod 600 /当前用户目录/.ssh/authorized_keys\n\n</pre><p>重启 ssh：</p><pre class=\"ql-syntax\" spellcheck=\"false\">systemctl restart sshd\n\n</pre><p>最后，在本地测试配置是否成功：</p><pre class=\"ql-syntax\" spellcheck=\"false\">ssh 用户名@IP\n\n</pre><p>再在 SSH 工具里配置一下登录凭证，就可以免密登录了。</p><h3>4. 限制 root 用户直接 ssh 登录或者密码登录</h3><p>修改配置文件：</p><pre class=\"ql-syntax\" spellcheck=\"false\">vim /etc/ssh/sshd_config\n\n</pre><p>加入内容（限制 root 用户直接 ssh 登录，换言之，后面得用新用户登录）：</p><blockquote><em>PermitRootLogin no</em></blockquote><p>如果只是想限制 root 用户密码登录，只能用密钥登录，则需要修改配置文件内容为：</p><blockquote><em>PermitRootLogin without-password</em></blockquote><p>使修改生效：</p><pre class=\"ql-syntax\" spellcheck=\"false\">systemctl restart sshd\n\n</pre><p>修改文件权限，把 .ssh 目录设为 700：</p><pre class=\"ql-syntax\" spellcheck=\"false\">chmod 700 /root/.ssh\n\n</pre><h3>5. 启用防火墙</h3><p>检查防火墙的状态：</p><pre class=\"ql-syntax\" spellcheck=\"false\">ufw status verbose\n\n</pre><p>所有可用的应用程序配置：</p><pre class=\"ql-syntax\" spellcheck=\"false\">ufw app list\n\n</pre><p>查找指定配置文件包含的防火墙规则：</p><pre class=\"ql-syntax\" spellcheck=\"false\">ufw app info 'Nginx Full'\n\n</pre><p>启用防火墙之前，先允许 ssh 应用的默认端口：</p><pre class=\"ql-syntax\" spellcheck=\"false\">ufw allow ssh\n\n</pre><p>如果 ssh 监听其他端口，就打开那个端口：</p><pre class=\"ql-syntax\" spellcheck=\"false\">ufw allow 端口\n\n</pre><p>还可以指定协议：</p><pre class=\"ql-syntax\" spellcheck=\"false\">ufw allow 端口/协议\n\n</pre><p>启用防火墙（启用之前一定要保证，SSH 的端口已经开了，不然登出之后就登不进来了！）</p><pre class=\"ql-syntax\" spellcheck=\"false\">ufw enable\n\n</pre><p>删除防火墙规则：</p><pre class=\"ql-syntax\" spellcheck=\"false\">ufw delete allow 端口/tcp\nufw delete 防火墙规则编号\n\n</pre><p>关闭防火墙：</p><pre class=\"ql-syntax\" spellcheck=\"false\">ufw disable\n\n</pre><p>重置防火墙设置并停止：</p><pre class=\"ql-syntax\" spellcheck=\"false\">ufw reset\n\n</pre><p><strong>· · ·</strong></p><p><br></p><h2><strong>四、基本配置</strong></h2><h3>1. 设置时区</h3><p>先看下系统的时区：</p><pre class=\"ql-syntax\" spellcheck=\"false\">timedatectl show\n\n</pre><p>再按需修改，下面东八区的代号：</p><pre class=\"ql-syntax\" spellcheck=\"false\">timedatectl set-timezone Asia/Shanghai\n\n</pre><h3>2. 修改登录欢迎语（可选项）</h3><p>Ubuntu 20.04 登录总提示 New release '22.04.3 LTS' available，如果不想升级，可以关掉登录后的动态消息。</p><pre class=\"ql-syntax\" spellcheck=\"false\">vim /etc/pam.d/sshd\n\n</pre><p>然后注释掉下面这两行：</p><blockquote><em>session optional pam_motd.so motd=/run/motd.dynamic</em></blockquote><blockquote><em>session optional pam_motd.so noupdate</em></blockquote><p>Ubuntu 22.04 每次登录都弹个很长的欢迎语，里面还有广告，难受。</p><p>好消息是，动态消息也可以像上面 Ubuntu 20.04 那样彻底禁止掉。</p><p>坏消息是，其他夹在 apt 命令中的广告就不那么好弄了。</p><p>不想完全关闭动态消息的话，也有些能做的事，比如欢迎语里面的 K8S 推广内容倒是可以手动关闭。</p><pre class=\"ql-syntax\" spellcheck=\"false\">vim /etc/default/motd-news\n\n</pre><p>把文件里的 ENABLED=1 改成 ENABLED=0 就行。</p><h3>3. 装面板（可选项）</h3><p>如果手上的机器多，或者对命令行终端不感冒，也可以考虑装个面板，比如：1Panel、宝塔之类的。</p><p>面板安装和使用，又可以写一篇长文了，有需要的手动搜一下吧。</p><p><strong>· · ·</strong></p><p><br></p><h2><strong>五、科学配置（可选项）</strong></h2><h3>1. BBR 加速</h3><p>如果系统不支持 BBR2 或者 BBR Plus，配置 BBR 加速就行了。</p><pre class=\"ql-syntax\" spellcheck=\"false\">echo \"net.core.default_qdisc=fq\" &gt;&gt; /etc/sysctl.conf\necho \"net.ipv4.tcp_congestion_control=bbr\" &gt;&gt; /etc/sysctl.conf\nsysctl -p\n\n</pre><p>验证是否成功：</p><pre class=\"ql-syntax\" spellcheck=\"false\">sysctl net.ipv4.tcp_available_congestion_control\nlsmod | grep bbr\n\n</pre><p>如果系统支持 BBR2 或者 BBR Plus 的话，可以用一键脚本装内核，开启 BBR2，至于安全性，那就不清楚了。</p><h3>2. WARP</h3><p>WARP 是 Cloudflare 提供的网络流量安全及加速服务，它基于 WireGuard，能够帮你通过连接到 Cloudflare 的边缘节点，实现隐私保护及链路优化。</p><h3>3. WireGuard</h3><p>如果要用 WARP，那肯定要装 WireGuard。</p><p>WARP 的安装，又可以写一篇博文了，有需要的手动搜一下吧。</p><h3>4. V2Ray</h3><p>这个之前整过，就写出来把，用的是官方脚本：<a href=\"https://github.com/v2fly/fhs-install-v2ray\" rel=\"noopener noreferrer\" target=\"_blank\">https://github.com/v2fly/fhs-install-v2ray</a></p><p>V2Ray 的安装倒是很简单：</p><pre class=\"ql-syntax\" spellcheck=\"false\">bash &lt;(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)\n\n</pre><p>安装后就可以启动了，但是建议先改下配置文件。（配置内容根据官方的模板，做下调整就好）</p><pre class=\"ql-syntax\" spellcheck=\"false\">vim /usr/local/etc/v2ray/config.json\n\n</pre><p>改好配置后，先启动测试下：</p><pre class=\"ql-syntax\" spellcheck=\"false\">sudo systemctl daemon-reload\nsudo systemctl start v2ray\n\n</pre><p>查看服务状态：</p><pre class=\"ql-syntax\" spellcheck=\"false\">systemctl status v2ray\n\n</pre><p>开机自启，让系统启动时引导 v2ray 启动：</p><pre class=\"ql-syntax\" spellcheck=\"false\">sudo systemctl enable v2ray\n\n</pre><p>反悔了，不让系统启动时引导 v2ray 启动：</p><pre class=\"ql-syntax\" spellcheck=\"false\">systemctl disable v2ray\n\n</pre><p>停止服务：</p><pre class=\"ql-syntax\" spellcheck=\"false\">systemctl stop v2ray\n\n</pre><p>重新加载：</p><pre class=\"ql-syntax\" spellcheck=\"false\">systemctl reload v2ray\n\n</pre><p>v2ray 默认的配置路径：</p><blockquote><em>/usr/local/etc/v2ray/config.json</em></blockquote><p>v2ray 默认的日志路径：</p><blockquote><em>/var/log/v2ray/access.log</em></blockquote><blockquote><em>/var/log/v2ray/error.log</em></blockquote><p>当然，如果嫌手动配置麻烦的话，也可以选择一键安装和引导配置的脚本，比如下面的这个（安全性未知）：</p><pre class=\"ql-syntax\" spellcheck=\"false\">bash &lt;(wget -qO- -o- https://git.io/v2ray.sh)\n\n</pre><p><strong>· · ·</strong></p><p><br></p><h2><strong>六、推荐软件（可选项）</strong></h2><h3>1. Docker 安装</h3><p>现在干点啥都喜欢上 Docker，服务基本都扔 Docker 里面了，有需要的建议先安上，挺省心的。</p><pre class=\"ql-syntax\" spellcheck=\"false\">curl -fsSL https://get.docker.com -o get-docker.sh\nsudo sh get-docker.sh\n\n</pre><p>看看安装是否成功：</p><pre class=\"ql-syntax\" spellcheck=\"false\">docker --version\n\n</pre><p>补充一下，这个脚本是官方的，会自动安装 Docker Compose 组件，调用命令是 docker compose。</p><p>如果看到别人用的命令是 docker-compose，那替换成&nbsp;docker compose&nbsp;就好，不必再装一个 docker-compose。</p><h3>2. Nginx 安装</h3><p>把 Nginx 放 Docker 当然也可以，但是对于这种入口级别的中间件，个人还是习惯用原生的。</p><p>安装非常的简单：</p><pre class=\"ql-syntax\" spellcheck=\"false\">sudo apt install nginx\n\n</pre><p>看看成功没有：</p><pre class=\"ql-syntax\" spellcheck=\"false\">nginx -V\n\n</pre><p>启动 Nginx：</p><pre class=\"ql-syntax\" spellcheck=\"false\">sudo systemctl daemon-reload\nsudo systemctl start nginx\n\n</pre><p>测一下：在浏览器通过 ip 加 80 端口访问，是否是 Nginx 默认欢迎页。</p><p>配置的话，一般直接去 /etc/nginx/conf.d 添加个文件，配一下就好了。</p><p>有静态网站，可以直接扔 /var/www/&nbsp;里面，也很方便。</p><p>Nginx 的维护，基本靠系统控制命令就能实现：</p><p>查看服务状态：</p><pre class=\"ql-syntax\" spellcheck=\"false\">systemctl status nginx\n\n</pre><p>如果只修改了配置，Nginx 可以在不中断服务的情况下热加载，这个很好用：</p><pre class=\"ql-syntax\" spellcheck=\"false\">sudo systemctl reload nginx\n\n</pre><p>开启自启，让系统启动时引导 Nginx 启动：</p><pre class=\"ql-syntax\" spellcheck=\"false\">systemctl enable nginx\n\n</pre><p>反悔了，不让系统启动时引导 Nginx 启动：</p><pre class=\"ql-syntax\" spellcheck=\"false\">systemctl disable nginx\n\n</pre><p>停用 nginx：</p><pre class=\"ql-syntax\" spellcheck=\"false\">systemctl stop nginx\n\n</pre><h3>3. Nvm 安装</h3><p>Node.js 也是火的不行，经常看到一些开源工具，都是放 Node 里面跑。</p><p>有需要的也可以装上，但不建议直接装 Node.js，版本问题什么的太操心了，直接上 Nvm。</p><p>还有一点非常的坑，Node.js 对用户的权限要求有点变态，个人建议用 root 用户安装，启动也是。之前只用其他用户 sudo 安装，结果各种问题。</p><p>从 Github 拉取官方正式版：</p><pre class=\"ql-syntax\" spellcheck=\"false\">curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash\n\n</pre><p>安装 Nvm：</p><pre class=\"ql-syntax\" spellcheck=\"false\">source ~/.bashrc\n\n</pre><p>再用 Nvm 安装 Node.js：</p><pre class=\"ql-syntax\" spellcheck=\"false\">nvm install node\n\n</pre><p>看看安装成功没有：</p><pre class=\"ql-syntax\" spellcheck=\"false\">nvm --version\nnode --version\nnpm --version\n\n</pre><p>后面就可以 npm 一把梭了，当然也可以装 yarn 和 pm2，看个人喜好。</p><p><strong>· · ·</strong></p><p><br></p><h2><strong>七、小结</strong></h2><p>最后，终于来到最关键的部分了。其实上面这些整备的过程，一个脚本就可以搞定。</p><p>可以说是一次编写，多次运行，以后拿到新 VPS，直接复制过去就能跑。</p><p>整备的脚本，发个出来，给大家做个参考吧：</p><h4>1) 软件更新</h4><pre class=\"ql-syntax\" spellcheck=\"false\">apt update &amp;&amp; apt upgrade &amp;&amp; apt full-upgrade &amp;&amp; apt autoremove\n\n</pre><p>如果不想一直蹲那儿按确认，可以强制自动确认（风险还是有的，自己权衡吧）：</p><pre class=\"ql-syntax\" spellcheck=\"false\">apt update -y &amp;&amp; apt upgrade -y &amp;&amp; apt full-upgrade -y &amp;&amp; apt autoremove -y\n\n</pre><h4>2) 创建和运行脚本</h4><p>把脚本复制进去（参考脚本在后面，往下翻）：</p><pre class=\"ql-syntax\" spellcheck=\"false\">vi ready.sh\n\n</pre><p>给执行权限：</p><pre class=\"ql-syntax\" spellcheck=\"false\">chmod +x ready.sh\n\n</pre><p>运行脚本：</p><pre class=\"ql-syntax\" spellcheck=\"false\">source ready.sh\n\n</pre><p>脚本 ready.sh 的参考内容如下：</p><pre class=\"ql-syntax\" spellcheck=\"false\">#!/bin/bash\n\n# 一键整备脚本\n\n# 注意：命令里面的汉字部分，需要根据实际替换掉，根据自己的需要来取舍\n\n# 1) 软件更新：建议提前单独执行，可能需要更新内核，重启机器什么的\n\n# 2) 创建脚本：把脚本放到 VPS 上，赋予执行权限并执行。然后后面的步骤就可以完全自动化了\n\n# 3) 安装基础工具\napt install ufw curl unzip\n\n# 4) 添加新用户\n\n# 添加用户和用户组\nusername=\"新用户\"\npassword=\"密码\"\nuseradd -m -s /bin/bash -G sudo \"$username\"\n\n# 设置用户密码\necho \"$username:$password\" | chpasswd\n\n\n# 5) 修改 SSH 登录端口\n\nsed -i '/#Port 22/a Port 22\\nPort 端口号' /etc/ssh/sshd_config\n\n# 重启 sshd\nsystemctl restart sshd\n\n\n# 6) shh 免密连 vps\n\npublic_key=\"本地公钥\"\n\n# 生成服务器用户的公钥和私钥\nssh-keygen\n\n# 写入本地的私钥到文件\ncat &lt;&lt;EOF &gt; /当前用户目录/.ssh/authorized_keys\n$public_key\nEOF\n\n# 重启 sshd\nchmod 600 /当前用户目录/.ssh/authorized_keys\nsystemctl restart sshd\n\n\n# 7) 限制 root 用户用用密码登录（如果有设置 shh 免密登录的话）\n\n# 使用 sed 替换文件中的内容\nfile=\"/etc/ssh/sshd_config\"\nsearch=\"PermitRootLogin yes\"\nreplace=\"PermitRootLogin without-password\"\nsed -i \"s/$search/$replace/\" \"$file\"\n\n# 重启 sshd\nchmod 700 /当前用户目录/.ssh\nsystemctl restart sshd\n\n\n# 8) 设置防火墙\n\n# 开端口\nufw allow ssh\nufw allow 22\nufw allow 端口号\n\n# 启用防火墙\nufw enable\n\n\n# 9) 设置时区\ntimedatectl set-timezone 时区\n\n\n# 10) 配置 BBR 加速\necho \"net.core.default_qdisc=fq\" &gt;&gt; /etc/sysctl.conf\necho \"net.ipv4.tcp_congestion_control=bbr\" &gt;&gt; /etc/sysctl.conf\nsysctl -p\n\n</pre><p>跑完脚本验证一下配置，比如：新用户登录，root 用户无密码登录等，没问题就可以开始装应用干活了。</p><p><strong>· · ·</strong></p><p><br></p><h2><strong>七、相关</strong></h2><h3>补充说明</h3><p>如果是境内 VPS，可能需要镜像网站才能访问某些服务，有些额外的坑。</p>","content_text":"拿到新机器，咱们二话不说，先 ping 一下 IP，能否连通。连不通的话，可能是被封锁了，新机一般可以免费换 IP，换完接着 ping。\n\n连通后看看延迟和丢包，延迟太大就得考虑。可能这个机房，它不适合你。\n\n大家的地区，运营商，节点线路都不大一样，冷暖自知。\n\n能接受的话，就 ssh 上去，开始跑测试脚本，是骡子是马，还得看数据。跑完测试觉得机子不行，应该还能赶在截止时间之前退单退款。\n\n有些鸡贼的商家，使用流量超过 10G，就不给退单退款，这种就别跑测速了。\n\n测速脚本一跑，几十个 GB 就没了，到时候退不了，只能砸自己手里。\n\n· · ·\n\n\n\n\n\n一、脚本测试\n\n先别急着装什么面板，测完性能再说，直接上脚本。\n\n\n1. YABS 脚本\n\nyabs 是一个比较常用的综合测试脚本，权威性比较高，一般用来看最后的 cpu 得分。\n\nwget -qO- yabs.sh | bash\n\n\n\n\n2. BENCH.SH 一键测试脚本\n\nbench.sh 也是一个综合测试脚本，历史比较久，大佬一直在维护。\n\n原作者链接：github.com/teddysun/across\n\nwget -qO- bench.sh | bash\n\n\n\n\n3. 线路测试\n\nbesttrace 是专门测试回国线路的脚本，可以看到连接国内几大城市的节点线路和对应延迟。\n\nwget -qO- git.io/besttrace | bash\n\n\n\n\n4. 网速测试\n\nnetwork-speed，测试 vps 到全球的连接速度，节点比较多，比较耗流量，成功测完得 20G 往上。\n\nwget -qO- network-speed.xyz | bash\n\n\n\n\n5. 硬盘测试\n\n这条测试是调用系统的命令，看看到底是 HDD、SSD 还是 NVME 硬盘。\n\ndd if=/dev/zero of=256 bs=64K count=4K oflag=dsync\n\n\n\n测试结果参考：1-2M/s 的是 HDD；20-30M/s 就普通的 SSD；80M/s 以上的是好机子。\n\n\n6. 内存超售检测\n\n部分商家会超售内存，可以用该脚本检测。\n\n至于超售 CPU、带宽，这个就比较稀松平常了。\n\n（脚本的安全性未知，建议看完重装系统部分，再决定要不要跑。）\n\ncurl https://raw.githubusercontent.com/uselibrary/memoryCheck/main/memoryCheck.sh | bash\n\n\n\n\n7. 流媒体解锁和 OPENAI 解锁测试\n\n检测 VPS 的 IP 是否能够用来开通流媒体、OpenAI 等订阅服务。（同上，脚本安全性未知。）\n\nbash <(curl -L -s https://netflix.dad/detect-script)\n\n\n\n\n8. IP 检测\n\n如果对 IP 这个比较看重，怪文再推荐两个小工具，简单调查一下手上的 IP。\n\n1) IP 位置\n\nwhatismyipaddress.com\n\nwhatismyipaddress 这个网站可以查到你 VPS 的 IP 所在地，数据比较精准。\n\n2) IP 纯净度\n\nscamalytics.com\n\n这个网站会返回一个分数和一个风险等级，欺诈风险分数一般低于 50 就好。当然，分数越低越好，0 分最好。\n\nscamalytics 可以查到 IP 的纯净程度，这点很重要！\n\nIP 越干净，越容易过流媒体等服务的订阅风控，也不容易弹 Google 和 Cloudflare 的人机验证弹窗和过渡页，代理的时候体验会更好。\n\n比如，注册 OpenAI 账号，开通 Plus 订阅，都是很看重 IP 欺诈分的，分数太高的话，申请 API 和 Plus 可能不给通过。\n\n当然，也可以选择其他方式进行代偿，比如套 wrap，或者用其他优质节点开通服务，后面换回原 IP 继续用，基本没啥问题，除非原 IP 被墙了。\n\n· · ·\n\n\n\n\n\n二、更新系统\n\n\n1. 重装系统\n\n建议先跑完测试脚本，再重装系统，也是为了规避脚本的安全性问题。可别以为大家用的脚本就很安全哦，还是别轻信外部脚本的好。\n\n有些人喜欢跑各种整合过的一键脚本，也不看脚本里面写的啥，难搞。\n\n一般来说，VPS 厂商给你的默认操作系统，很可能不是你想要的发行版或者版本号，建议用厂商的面板重装下系统。\n\n不太建议自己装些厂商没提供的系统，容易被抓到把柄。\n\n系统的选择\n\n服务器端发行版选择很多，Debian，Ubuntu，Rocky Linux，AlmaLinux，Fedora 等等，甚至 CentOS，OpenSUSE\nLeap 都行，选自己熟悉的就好。\n\n关于各个发行版的特点和取舍，这里先占个坑，后面来填吧。\n\n反正有条件的直接上 Red Hat Enterprise Linux（RHEL）就好，免费的哪有这个好啊。\n\nUbuntu 因为资料好找，使用起来方便，稳定性也不错，所以怪文一直用 Ubuntu。\n\n但自从 Canonical 往 Ubuntu 22.04.3 LTS 里面塞广告，有些广告还无法被移除，吃相有点难看，这种行径和国内厂商有得一拼了。\n\n目前还在寻找平替，因为系统还没换，下面的 shell 命令，基本都是基于 Ubuntu 的版本。\n\n如果装的是 Fedora 和 RHEL 系的发行版，比如 CentOS 之类的，请将下面命令中的 apt 用 yum 替换。\n\n\n2. 更新列表升级应用\n\napt update && apt upgrade && apt full-upgrade && apt autoremove\n\n\n\n\n3. 基础工具包\n\napt install vim curl unzip ufw\n\n\n\n· · ·\n\n\n\n\n\n三、安全配置\n\n小白最容易忽略的就是安全配置，弱密码什么的就不说了，说一下核心的配置。\n\n\n1. 添加新用户\n\n不建议每次都用 root 账号登录，创建新用户并给 root 权限比较好。\n\n首先，添加新用户，并自动创建对应的组，然后根据提示设置密码：\n\nadduser 新用户名\n\n\n\n设置新密码之后，继续。除了用户名，其他敲回车默认即可。\n\n添加新用户到 sudo 用户组，就可以使用 sudo 命令了：\n\nusermod -aG sudo 新用户名\nCopy\n// 相关补充\nexit            // 用户退出登录\npasswd p        // 重设密码\n\n\n\n\n2. 修改 SSH 登录端口\n\n更改端口前，建议先把 22 端口也添加上，等 ssh 能通过其他端口连接后，再注释掉22端口。\n\n先打开配置文件：\n\nvim /etc/ssh/sshd_config\n\n\n\n找到这行：\n\n> Port 22\n\n然后在后面追加想要的端口号：\n\n> Port 端口号\n\n端口号的范围是 0 到 65535，数字别超了。\n\n加完端口重启 SSHD 服务，让配置生效：\n\nsystemctl restart sshd.service\n\n\n\n如遇到 ssh 连接总自己断开，还可以继续添加添加配置：\n\n> ClientAliveInterval 30\n\n> ClientAliveCountMax 6\n\n\n3. SSH 免密登录\n\nWindows 用户在 /.ssh 目录生成公钥和私钥：\n\nssh-keygen\n\n\n\n再在 vps 上的生成用户的公钥和私钥：\n\nssh-keygen\n\n\n\n创建 authorized_keys 文件，把 Win 上的公钥复制进 authorized_keys：\n\ncd /当前用户目录/.ssh\nvim authorized_keys\n\n\n\n给 authorized_keys 文件设置权限：\n\nchmod 600 /当前用户目录/.ssh/authorized_keys\n\n\n\n重启 ssh：\n\nsystemctl restart sshd\n\n\n\n最后，在本地测试配置是否成功：\n\nssh 用户名@IP\n\n\n\n再在 SSH 工具里配置一下登录凭证，就可以免密登录了。\n\n\n4. 限制 ROOT 用户直接 SSH 登录或者密码登录\n\n修改配置文件：\n\nvim /etc/ssh/sshd_config\n\n\n\n加入内容（限制 root 用户直接 ssh 登录，换言之，后面得用新用户登录）：\n\n> PermitRootLogin no\n\n如果只是想限制 root 用户密码登录，只能用密钥登录，则需要修改配置文件内容为：\n\n> PermitRootLogin without-password\n\n使修改生效：\n\nsystemctl restart sshd\n\n\n\n修改文件权限，把 .ssh 目录设为 700：\n\nchmod 700 /root/.ssh\n\n\n\n\n5. 启用防火墙\n\n检查防火墙的状态：\n\nufw status verbose\n\n\n\n所有可用的应用程序配置：\n\nufw app list\n\n\n\n查找指定配置文件包含的防火墙规则：\n\nufw app info 'Nginx Full'\n\n\n\n启用防火墙之前，先允许 ssh 应用的默认端口：\n\nufw allow ssh\n\n\n\n如果 ssh 监听其他端口，就打开那个端口：\n\nufw allow 端口\n\n\n\n还可以指定协议：\n\nufw allow 端口/协议\n\n\n\n启用防火墙（启用之前一定要保证，SSH 的端口已经开了，不然登出之后就登不进来了！）\n\nufw enable\n\n\n\n删除防火墙规则：\n\nufw delete allow 端口/tcp\nufw delete 防火墙规则编号\n\n\n\n关闭防火墙：\n\nufw disable\n\n\n\n重置防火墙设置并停止：\n\nufw reset\n\n\n\n· · ·\n\n\n\n\n\n四、基本配置\n\n\n1. 设置时区\n\n先看下系统的时区：\n\ntimedatectl show\n\n\n\n再按需修改，下面东八区的代号：\n\ntimedatectl set-timezone Asia/Shanghai\n\n\n\n\n2. 修改登录欢迎语（可选项）\n\nUbuntu 20.04 登录总提示 New release '22.04.3 LTS' available，如果不想升级，可以关掉登录后的动态消息。\n\nvim /etc/pam.d/sshd\n\n\n\n然后注释掉下面这两行：\n\n> session optional pam_motd.so motd=/run/motd.dynamic\n\n> session optional pam_motd.so noupdate\n\nUbuntu 22.04 每次登录都弹个很长的欢迎语，里面还有广告，难受。\n\n好消息是，动态消息也可以像上面 Ubuntu 20.04 那样彻底禁止掉。\n\n坏消息是，其他夹在 apt 命令中的广告就不那么好弄了。\n\n不想完全关闭动态消息的话，也有些能做的事，比如欢迎语里面的 K8S 推广内容倒是可以手动关闭。\n\nvim /etc/default/motd-news\n\n\n\n把文件里的 ENABLED=1 改成 ENABLED=0 就行。\n\n\n3. 装面板（可选项）\n\n如果手上的机器多，或者对命令行终端不感冒，也可以考虑装个面板，比如：1Panel、宝塔之类的。\n\n面板安装和使用，又可以写一篇长文了，有需要的手动搜一下吧。\n\n· · ·\n\n\n\n\n\n五、科学配置（可选项）\n\n\n1. BBR 加速\n\n如果系统不支持 BBR2 或者 BBR Plus，配置 BBR 加速就行了。\n\necho \"net.core.default_qdisc=fq\" >> /etc/sysctl.conf\necho \"net.ipv4.tcp_congestion_control=bbr\" >> /etc/sysctl.conf\nsysctl -p\n\n\n\n验证是否成功：\n\nsysctl net.ipv4.tcp_available_congestion_control\nlsmod | grep bbr\n\n\n\n如果系统支持 BBR2 或者 BBR Plus 的话，可以用一键脚本装内核，开启 BBR2，至于安全性，那就不清楚了。\n\n\n2. WARP\n\nWARP 是 Cloudflare 提供的网络流量安全及加速服务，它基于 WireGuard，能够帮你通过连接到 Cloudflare\n的边缘节点，实现隐私保护及链路优化。\n\n\n3. WIREGUARD\n\n如果要用 WARP，那肯定要装 WireGuard。\n\nWARP 的安装，又可以写一篇博文了，有需要的手动搜一下吧。\n\n\n4. V2RAY\n\n这个之前整过，就写出来把，用的是官方脚本：https://github.com/v2fly/fhs-install-v2ray\n\nV2Ray 的安装倒是很简单：\n\nbash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)\n\n\n\n安装后就可以启动了，但是建议先改下配置文件。（配置内容根据官方的模板，做下调整就好）\n\nvim /usr/local/etc/v2ray/config.json\n\n\n\n改好配置后，先启动测试下：\n\nsudo systemctl daemon-reload\nsudo systemctl start v2ray\n\n\n\n查看服务状态：\n\nsystemctl status v2ray\n\n\n\n开机自启，让系统启动时引导 v2ray 启动：\n\nsudo systemctl enable v2ray\n\n\n\n反悔了，不让系统启动时引导 v2ray 启动：\n\nsystemctl disable v2ray\n\n\n\n停止服务：\n\nsystemctl stop v2ray\n\n\n\n重新加载：\n\nsystemctl reload v2ray\n\n\n\nv2ray 默认的配置路径：\n\n> /usr/local/etc/v2ray/config.json\n\nv2ray 默认的日志路径：\n\n> /var/log/v2ray/access.log\n\n> /var/log/v2ray/error.log\n\n当然，如果嫌手动配置麻烦的话，也可以选择一键安装和引导配置的脚本，比如下面的这个（安全性未知）：\n\nbash <(wget -qO- -o- https://git.io/v2ray.sh)\n\n\n\n· · ·\n\n\n\n\n\n六、推荐软件（可选项）\n\n\n1. DOCKER 安装\n\n现在干点啥都喜欢上 Docker，服务基本都扔 Docker 里面了，有需要的建议先安上，挺省心的。\n\ncurl -fsSL https://get.docker.com -o get-docker.sh\nsudo sh get-docker.sh\n\n\n\n看看安装是否成功：\n\ndocker --version\n\n\n\n补充一下，这个脚本是官方的，会自动安装 Docker Compose 组件，调用命令是 docker compose。\n\n如果看到别人用的命令是 docker-compose，那替换成 docker compose 就好，不必再装一个 docker-compose。\n\n\n2. NGINX 安装\n\n把 Nginx 放 Docker 当然也可以，但是对于这种入口级别的中间件，个人还是习惯用原生的。\n\n安装非常的简单：\n\nsudo apt install nginx\n\n\n\n看看成功没有：\n\nnginx -V\n\n\n\n启动 Nginx：\n\nsudo systemctl daemon-reload\nsudo systemctl start nginx\n\n\n\n测一下：在浏览器通过 ip 加 80 端口访问，是否是 Nginx 默认欢迎页。\n\n配置的话，一般直接去 /etc/nginx/conf.d 添加个文件，配一下就好了。\n\n有静态网站，可以直接扔 /var/www/ 里面，也很方便。\n\nNginx 的维护，基本靠系统控制命令就能实现：\n\n查看服务状态：\n\nsystemctl status nginx\n\n\n\n如果只修改了配置，Nginx 可以在不中断服务的情况下热加载，这个很好用：\n\nsudo systemctl reload nginx\n\n\n\n开启自启，让系统启动时引导 Nginx 启动：\n\nsystemctl enable nginx\n\n\n\n反悔了，不让系统启动时引导 Nginx 启动：\n\nsystemctl disable nginx\n\n\n\n停用 nginx：\n\nsystemctl stop nginx\n\n\n\n\n3. NVM 安装\n\nNode.js 也是火的不行，经常看到一些开源工具，都是放 Node 里面跑。\n\n有需要的也可以装上，但不建议直接装 Node.js，版本问题什么的太操心了，直接上 Nvm。\n\n还有一点非常的坑，Node.js 对用户的权限要求有点变态，个人建议用 root 用户安装，启动也是。之前只用其他用户 sudo 安装，结果各种问题。\n\n从 Github 拉取官方正式版：\n\ncurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash\n\n\n\n安装 Nvm：\n\nsource ~/.bashrc\n\n\n\n再用 Nvm 安装 Node.js：\n\nnvm install node\n\n\n\n看看安装成功没有：\n\nnvm --version\nnode --version\nnpm --version\n\n\n\n后面就可以 npm 一把梭了，当然也可以装 yarn 和 pm2，看个人喜好。\n\n· · ·\n\n\n\n\n\n七、小结\n\n最后，终于来到最关键的部分了。其实上面这些整备的过程，一个脚本就可以搞定。\n\n可以说是一次编写，多次运行，以后拿到新 VPS，直接复制过去就能跑。\n\n整备的脚本，发个出来，给大家做个参考吧：\n\n1) 软件更新\n\napt update && apt upgrade && apt full-upgrade && apt autoremove\n\n\n\n如果不想一直蹲那儿按确认，可以强制自动确认（风险还是有的，自己权衡吧）：\n\napt update -y && apt upgrade -y && apt full-upgrade -y && apt autoremove -y\n\n\n\n2) 创建和运行脚本\n\n把脚本复制进去（参考脚本在后面，往下翻）：\n\nvi ready.sh\n\n\n\n给执行权限：\n\nchmod +x ready.sh\n\n\n\n运行脚本：\n\nsource ready.sh\n\n\n\n脚本 ready.sh 的参考内容如下：\n\n#!/bin/bash\n\n# 一键整备脚本\n\n# 注意：命令里面的汉字部分，需要根据实际替换掉，根据自己的需要来取舍\n\n# 1) 软件更新：建议提前单独执行，可能需要更新内核，重启机器什么的\n\n# 2) 创建脚本：把脚本放到 VPS 上，赋予执行权限并执行。然后后面的步骤就可以完全自动化了\n\n# 3) 安装基础工具\napt install ufw curl unzip\n\n# 4) 添加新用户\n\n# 添加用户和用户组\nusername=\"新用户\"\npassword=\"密码\"\nuseradd -m -s /bin/bash -G sudo \"$username\"\n\n# 设置用户密码\necho \"$username:$password\" | chpasswd\n\n\n# 5) 修改 SSH 登录端口\n\nsed -i '/#Port 22/a Port 22\\nPort 端口号' /etc/ssh/sshd_config\n\n# 重启 sshd\nsystemctl restart sshd\n\n\n# 6) shh 免密连 vps\n\npublic_key=\"本地公钥\"\n\n# 生成服务器用户的公钥和私钥\nssh-keygen\n\n# 写入本地的私钥到文件\ncat <<EOF > /当前用户目录/.ssh/authorized_keys\n$public_key\nEOF\n\n# 重启 sshd\nchmod 600 /当前用户目录/.ssh/authorized_keys\nsystemctl restart sshd\n\n\n# 7) 限制 root 用户用用密码登录（如果有设置 shh 免密登录的话）\n\n# 使用 sed 替换文件中的内容\nfile=\"/etc/ssh/sshd_config\"\nsearch=\"PermitRootLogin yes\"\nreplace=\"PermitRootLogin without-password\"\nsed -i \"s/$search/$replace/\" \"$file\"\n\n# 重启 sshd\nchmod 700 /当前用户目录/.ssh\nsystemctl restart sshd\n\n\n# 8) 设置防火墙\n\n# 开端口\nufw allow ssh\nufw allow 22\nufw allow 端口号\n\n# 启用防火墙\nufw enable\n\n\n# 9) 设置时区\ntimedatectl set-timezone 时区\n\n\n# 10) 配置 BBR 加速\necho \"net.core.default_qdisc=fq\" >> /etc/sysctl.conf\necho \"net.ipv4.tcp_congestion_control=bbr\" >> /etc/sysctl.conf\nsysctl -p\n\n\n\n跑完脚本验证一下配置，比如：新用户登录，root 用户无密码登录等，没问题就可以开始装应用干活了。\n\n· · ·\n\n\n\n\n\n七、相关\n\n\n补充说明\n\n如果是境内 VPS，可能需要镜像网站才能访问某些服务，有些额外的坑。","date_published":"2024-10-02T11:48:20.312Z","_microfeed":{"is_audio":false,"is_document":false,"is_external_url":true,"is_video":false,"is_image":false,"web_url":"https://blog-ccino-cc.pages.dev/i/vps-vps-ez56GfIVr5S/","json_url":"https://blog-ccino-cc.pages.dev/i/ez56GfIVr5S/json/","rss_url":"https://blog-ccino-cc.pages.dev/i/ez56GfIVr5S/rss/","guid":"ez56GfIVr5S","status":"published","itunes:episodeType":"full","date_published_short":"Wed Oct 02 2024","date_published_ms":1727869700312}}],"_microfeed":{"microfeed_version":"0.1.2","base_url":"https://blog-ccino-cc.pages.dev","categories":[],"subscribe_methods":[{"name":"RSS","type":"rss","url":"https://blog-ccino-cc.pages.dev/rss/","image":"https://blog-ccino-cc.pages.dev/assets/brands/subscribe/rss.png","enabled":true,"editable":false,"id":"7-6m9ozpyuG"},{"name":"JSON","type":"json","url":"https://blog-ccino-cc.pages.dev/json/","image":"https://blog-ccino-cc.pages.dev/assets/brands/subscribe/json.png","enabled":true,"editable":false,"id":"kFHio_oK78v"}],"description_text":"","copyright":"©2024","itunes:type":"episodic","items_sort_order":"newest_first"}}