服务器终端美化：从 0 配置 Zsh + Oh My Zsh + Powerlevel10k + 常用插件适用场景：Linux 服务器（SSH 登录）、日常开发/运维目标：终端更好看、补全更舒服、输入更顺滑，同时尽量不拖慢启动速度。1. 安装 zsh（以及必要依赖）Ubuntu / Debiansudo apt update sudo apt install -y zsh git curlCentOS / Rocky / Almasudo yum install -y zsh git curl2. 将 zsh 设置为默认 shellchsh -s "$(which zsh)"退出并重新登录 SSH 后生效（重新打开终端也可以）。3. 安装 Oh My Zshsh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"安装完成后，主要配置文件在：~/.zshrc4. 安装并启用 powerlevel10k 主题（强烈推荐）4.1 下载主题git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \ "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k"4.2 修改 ~/.zshrc 启用主题编辑 ~/.zshrc，找到 ZSH_THEME=... 并改成：ZSH_THEME="powerlevel10k/powerlevel10k"4.3 重新加载配置source ~/.zshrc首次加载会进入 powerlevel10k 的配置向导。5. 安装插件：zsh-autosuggestions + zsh-syntax-highlighting这两个插件属于“提升输入体验”的必装组合：zsh-autosuggestions：根据历史命令自动给出灰色建议（右键/方向键接受）zsh-syntax-highlighting：输入时实时语法高亮，错误命令会变色提示5.1 安装插件git clone https://github.com/zsh-users/zsh-autosuggestions \ "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions" git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \ "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting"5.2 启用插件（注意顺序）编辑 ~/.zshrc，找到 plugins=(...) 并改为：plugins=( git z sudo extract colored-man-pages zsh-autosuggestions zsh-syntax-highlighting )注意：zsh-syntax-highlighting 建议放在最后，避免加载顺序导致高亮失效。5.3 重新加载配置source ~/.zshrc6. 服务器建议配置（可选但推荐）6.1 关闭 Oh My Zsh 自动更新（服务器更稳）编辑 ~/.zshrc，加入：DISABLE_AUTO_UPDATE="true"6.2 常用 alias（按需添加）可以加在 $ZSH_CUSTOM/aliases.zsh 里vim $ZSH_CUSTOM/aliases.zshalias ll='ls -alh' alias cls='clear' alias gs='git status'然后：source ~/.zshrc6.3 设置终端支持中文export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-87. 字体说明（非常重要）powerlevel10k 想显示图标/符号，需要 Nerd Font。注意：字体是你本地终端装，不是服务器装。推荐字体：JetBrainsMono Nerd FontFiraCode Nerd Font如果你看到终端里出现乱码、方块、问号，基本就是字体没配置到 Nerd Font。8. 常见问题8.1 想重新配置 powerlevel10kp10k configure8.2 插件不生效怎么办？检查三点：插件目录是否存在：~/.oh-my-zsh/custom/plugins/zsh-autosuggestions~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting~/.zshrc 的 plugins=(...) 名称拼写是否一致执行 source ~/.zshrc 是否有报错9. 完成效果（验收清单）配置完成后你应该能看到：prompt 更现代：路径 + git 分支/状态等信息输入命令时有灰色建议（autosuggestions）错误命令/参数会实时变色提示（syntax-highlighting）
一年免费阿里云海外服务器一年200g单向/月
一、白嫖一年阿里云国际服务器免费试用阿里云国际提供免费试用，https://www.alibabacloud.com/free可以免费试用一年的ECS服务器，配置是 ecs.t5-lc1m1.small（1vcpu1G）、40GB 系统盘、1Mbps固定带宽但是注意注册账号必须是新用户，并且用户必须绑定信用卡注册账号加领取没啥好说的，随便找个邮箱加国外手机号，到官网注册账号，注册过程中选择个人认证，然后一步步完成就好，最后需要绑定信用卡，这里建议使用虚拟信用卡注册完成后，直接到试用界面领取即可，注意机器配置的选择，一定要满足他的配置才能免费试用一年，下图为我领取的试用二、调整带宽计费方式购买完成后发现机器的带宽只有1Mbps，实在是太小了，怎么办？这里我们可以使用CDT免费赠送每月200G单向流量，这个流量可以满足大部分人日常所需了开启CDT功能现在，我们来创建一个全新的、专门用于享受CDT免费流量的EIP。首先开启cdt功能首页搜索cdt，点击云数据传输，按照页面指引开启功能有几项默认没有开启，可以按需选择升级，比如IPV6网关，如果不升级的话，是没法开启公网IPV6的，根据页面内容可以看到CDT每月有220GB的公网流量，其中中国地域是20G，非中国地域是200GB。[scode type="yellow" size=""]！！！这里的中国地域和非中国地域指的是ECS所在的区域，不是指流量的流向[/scode]举例：如果有个国内的ECS开启了CDT，那么这个国内的ECS不管你是从国内访问还是重国外访问这个ECS，这个ECS的出网免费流量就是20G，如果在国外则是免费200G，超出免费额度就会按量计费，所以要注重流量的使用将按带宽计费修改为按量计费到实例页面点击包年包月实例更改带宽，选择降低固定带宽，下一个页面公网带宽选择按使用流量，带宽大小直接拉满200Mbps就行做到这一步其实应该已经是可以使用CDT的每月200G免费流量的，下面的内容是将公网ip转换成弹性公网ip，可以用于更换ecs服务器的ip三、进阶操作转换为弹性公网ip调整完毕带宽计费模式后，回到实例页面，找到公网IP，点击转换为弹性公网IP，按页面指引操作操作完成后这时候机器使用的应该就是弹性公网ip了，可以按照以下步骤更换机器ip更换机器ip创建新弹性公网ip在顶部搜索框搜索VPC，点击专有网络VPC，点击进入进入后，选择对应的地域，左边侧边栏选择弹性公网IP，点击创建弹性公网IP按照下图来创建，选择自己ECS对应的区域，线路类型选择BGP不要选择精品网络（精品网络用不了免费的200G流量），流量类型选择按使用流量计费，按CDT计费，带宽峰值直接拉满，其他选项默认，最后点击开通回到弹性公网IP选项卡，可以看到咱们创建的EIP，可以看到这个ip还没有绑定任何实例，这个页面应该还会有一个已经绑定了实例的ip，那个ip是我们机器原本的弹性公网ip，待会儿我们要删除原本的弹性公网ip，并绑定到我们新创建的弹性公网IP上，就可以实现更换ip了解绑原本的ip，换成咱们刚刚创建的ip按图中操作解绑原本的ip，并删除，绑定上咱们创建的ip，最后一定要保证只有一个ip并且ip是绑定在实例上的，因为弹性公网ip绑定实例不会收ip费用，如果有空闲的弹性公网ip，则会收取ip保留费用操作完毕后应该只有一个绑定了实例的ip最后在回到机器控制台查看弹性公网ip是否更改成功最后如果想要更换ip是一样的步骤，先去创建一个新弹性公网ip，然后解绑并删除原本的ip，换成新创建的ip开启公网ipv6若要开启公网ipv6访问首先要确保cdt页面的ipv6网关是升级的状态，然后到vpc控制台的专有网络界面开启ipv6，交换机的ipv6也要开（如果不需要使用ipv6可以忽略）开启ipv6后回到机器控制台，点击弹性网卡选项卡，再点击管理弹性网卡ip，点击增加ipv6地址即可完成为实例添加ipv6地址按上述操作后这时后机器应该已经有ipv6地址了，但是应该没法通过ipv6访问公网，因为没有开启ipv6公网访问，在vpc控制台按照下面图片步骤操作后，即可开通ipv6公网[scode type="yellow"]！！！前面cdt页面的ipv6网关一定要开启[/scode]四、注意事项需要注意根据阿里云cdt文档每月的免费流量，注意限量使用，不要用超了，超出后要0.100 USD/GB，注意定期观察账单，防止被返薅流量使用情况在cdt页面查看，注意限量使用,不要用超了,超出后要0.100 USD/GB免费试用时若出现要kyc可以从这个页面进去试用（来源于Linuxdo）：链接
编辑caddy配置文件，并写入以下配置配置如下domain { handle /bot* { reverse_proxy https://api.telegram.org { header_up Host api.telegram.org transport http { tls tls_insecure_skip_verify } } } handle / { respond "Telegram Bot API Proxy" 200 } log { output file /var/log/caddy/tgapi.log format console } }caddy会自动处理证书，并开启https
首先安装编译PHP所需的依赖包：sudo apt update apt install build-essential autoconf automake libtool libsqlite3-dev pkg-config libjpeg-dev libpng-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libssl-dev libffi-dev libwebp-dev libonig-dev libzip-dev imagemagick libmagickwand-dev git vim -y下载PHP 8.1源码cd /tmp wget https://www.php.net/distributions/php-8.1.32.tar.gz tar -zxf php-8.1.32.tar.gz cd php-8.1.32配置编译选项（包含所需扩展）./configure --prefix=/usr/local/php8.1 \ --with-config-file-path=/usr/local/php8.1/etc \ --with-mysqli \ --with-pdo-mysql \ --enable-fpm \ --with-bz2 \ --with-fpm-user=www-data \ --with-fpm-group=www-data \ --enable-fileinfo \ --enable-exif \ --enable-pcntl \ --enable-mbstring \ --with-curl \ --with-openssl \ --enable-sockets \ --enable-gd \ --with-jpeg \ --with-zlib \ --with-webp \ --with-zip \ --with-freetype \ --enable-opcache编译并安装make -j$(nproc) sudo make install创建配置文件sudo mkdir -p /usr/local/php8.1/etc sudo cp php.ini-production /usr/local/php8.1/etc/php.ini cd /usr/local/php8.1/etc cp php-fpm.conf.default php-fpm.conf cp php-fpm.d/www.conf.default php-fpm.d/www.conf添加到环境变量echo 'export PATH=/usr/local/php8.1/bin:/usr/local/php8.1/sbin:$PATH' | sudo tee -a /etc/profile source /etc/profile下载Imagick源码cd /tmp git clone https://github.com/Imagick/imagick.git cd imagick phpize ./configure --with-php-config=/usr/local/php8.1/bin/php-config make sudo make install配置PHP启用扩展编辑PHP配置文件添加扩展：sudo vi /usr/local/php8.1/etc/php.ini找到extension=部分，添加以下行：extension=imagick将php-fpm添加到系统服务管理vi /lib/systemd/system/php-fpm.service[Unit] Description=The PHP FastCGI Process Manager After=network.target [Service] Type=simple PIDFile=/usr/local/php8.1/var/run/php-fpm.pid ExecStart=/usr/local/php8.1/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php8.1/etc/php-fpm.conf ExecReload=/bin/kill -USR2 $MAINPID [Install] WantedBy=multi-user.target
这个就是为了方便查询，不至于每次都去Azure查找，创建实例里，只有38个，少了哪些呢？学生订阅不支持 卡塔尔中部 、美国东部 2 、欧洲西部 、美国中西部 、日本西部，这五个地区创建实例。选择上一代CPU，能跑满速。8370C为2.8GHz（19648），8171M为2.6GHz（14810），8272CL为2.6GHz（14726），2673 v4为2.3GHz（9705）序号国家区域英文中文缩写4CPU2CPU1美国东部East USVirginia弗吉尼亚US8272CL8272CL2美国东部 2East US 2Virginia弗吉尼亚US不可用不可用3美国中部Central USIowa爱荷华州US8272CL8370C4美国中北部North Central USIllinois伊利诺伊州US8272CL2673v45美国中南部South Central USTexas得克萨斯州US8370C8370C6美国中西部West Central USWyoming怀俄明州US不可用不可用7美国西部West USCalifornia加州圣何塞US8171M8171M8美国西部West US 2Washington华盛顿US不可用不可用9美国西部West US 3Arizona亚利桑那州凤凰城US8370C8370C10东亚East AsiaHong Kong香港HK8171M8171M11东南亚Southeast AsiaSingapore新加坡SG8272CL2673v412日本东部Japan EastTokyo, Saitama东京，埼玉县JP8171M不可用13日本西部Japan WestOsaka大阪JP不可用不可用14韩国中部Korea CentralSeoul首尔KR2673v42673v415印度中部Central IndiaTaipei浦那IN8272CL8272CL16印度南部South IndiaTaipei金奈IN8171M 17阿联酋北部UAE NorthDubai迪拜UAE8272CL 18澳大利亚中部Australia CentralCanberra堪培拉AU2673v4 19澳大利亚东部Australia EastNew South Wales新南威尔士州AU 20澳大利亚东南部Australia SoutheastVictoria维多利亚AU 21欧洲北部North EuropeIreland爱尔兰IE 22欧洲西部West EuropeNetherlands荷兰NL8272CL 23法国中部France CentralParis巴黎FR 24德国中西部Germany West CentralFrankfurt法兰克福DE 25意大利北部Italy NorthMilan米兰IT 26挪威东部Norway EastOslo奥斯陆NO8171M 27波兰中部Poland CentralWarsaw华沙PL 28瑞典中部Sweden CentralGävle耶夫勒SE 29瑞士北部Switzerland NorthZürich苏黎世CH 30英国南部UK SouthLondon伦敦UK2673v4 31巴西南部Brazil SouthSão Paulo State圣保罗州BR 32加拿大中部Canada CentralToronto多伦多CA 33加拿大东部Canada EastQuebec City魁北克市CA 8272CL34以色列中部Israel CentralIsrael以色列IL 35卡塔尔中部Qatar CentralDoha多哈QA 36南非北部South Africa NorthJohannesburg约翰内斯堡ZA 37韩国中部Korea South KR不可用不可用[font color="#DC143C"]文章转载于：https://blog.rnaan.com/post/33[/font]
本文将介绍使用 acme.sh 配置自动续签的 SSL 证书。自动签发和手工签发证书的对比功能自动签发手工签发有效期3 个月至 6 个月30 天到 1 年难度不容易容易友好度不友好友好适合懒人是否系统集成方便不方便后台管理大多数没有大多数都有所以我们建议如果您对服务器有完全控制权，那么自动签发的证书比较适合懒人运维，如果是长期运营的网站和项目，手工签发的证书对新手更友好，请自行选择。安装 acme.shacme.sh 是一个集成了 ACME 客户端协议的 Bash 脚本，作者是 @neilpangxa，按照官方文档说明，我们直接在 Linux 下安装。curl https://get.acme.sh | sh -s email=username@example.com如果是国内的机器，可以使用拖回源码直接安装：git clone --depth 1 https://github.com/acmesh-official/acme.sh.git cd acme.sh ./acme.sh --install -m username@example.com请注意替换 username@example.com 为你自己的邮箱，避免无法收到上游证书的邮件通知，比如 Let's Encrypt 偶尔会错发证书，然后就会邮件通知你，这时候就需要重新签发一次证书了。安装完成后重新加载 Bash：source ~/.bashrc然后也可以开启自动更新：acme.sh --upgrade --auto-upgrade选择默认 CA目前 acme.sh 支持 5 个正式环境 CA，分别是 Let's Encrypt、Buypass、ZeroSSL、SSL.com 和 Google Public CA，默认使用 ZeroSSL，如果需要更换可以使用如下命令：切换 Let's Encryptacme.sh --set-default-ca --server letsencrypt切换 Buypassacme.sh --set-default-ca --server buypass切换 ZeroSSLacme.sh --set-default-ca --server zerossl切换 SSL.comacme.sh --set-default-ca --server ssl.com切换 Google Public CAacme.sh --set-default-ca --server google如果已有 ZeroSSL 帐号，可以在后台控制面板拿到 API Key，然后执行如下命令apt install jq curl -s -X POST "https://api.zerossl.com/acme/eab-credentials?access_key=你的API_Key" | jq终端会输出如下内容{ "success": true, "eab_kid": "kid字符串", "eab_hmac_key": "hmac_key字符串", }然后手工添加帐号acme.sh --register-account --server zerossl \ --eab-kid kid字符串 \ --eab-hmac-key hmac_key字符串Google Public CA 需要按照官方博客申请内测，然后获取 Key。几个 CA 的简单对比功能LEBuypassZeroSSLSSL.comGoogle Public CA有效期90 天180 天90 天90 天90 天多域名支持支持，最多 5 个支持收费支持支持泛域名支持不支持支持收费支持支持Rate Limit有有收费无未知有GUI 管理否否有有无ECC 证书链否否有未知无客户支持社区收费收费收费收费简单来说，如果没有特殊需求，可以选择 Let's Encrypt，如果服务器在国内，可以选择 ZeroSSL 或 Buypass，如果愿意付费得到更好的服务和保障，可以选择 ZeroSSL 和 SSL.com，如果面向欧盟用户，可以选择 Buypass 和 ZeroSSL。注意：经过测试 Google Public CA 的 ACME 验证域名在国内是无法访问的，只有国外服务器才可以申请，申请完成后的证书并无影响。使用 HTTP 验证签发证书首先我们要做一下准备工作，假设你域名是 example.com，解析到你的服务器让其生效后，我们建立一个目录：mkdir -p /var/www/letsencrypt我们的目的是绑定 http://example.com/.well-known/acme-challenge 到这个目录。如果您用的 Nginx，那么新建一个配置文件：server { listen 80; listen [::]:80; server_name example.com; location /.well-known/acme-challenge { root /var/www/letsencrypt; } location / { rewrite ^/(.*)$ https://$host/$1 permanent; } }如果您使用的 Apache，那么新建一个配置文件： ServerName example.com DocumentRoot /var/www/letsencrypt RewriteEngine On RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/ RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L] 我们以 Let's Encrypt 为例，直接在终端运行acme.sh --issue -d example.com -w /var/www/letsencrypt如果希望签发 ECC 证书，则运行acme.sh --issue -d example.com --keylength ec-256 -w /var/www/letsencrypt如果需要多个域名，则运行acme.sh --issue -d example.com -d example.org -w /var/www/letsencrypt然后就等他执行完，直到出现 Cert success 的提示使用 DNS 验证签发证书有时候因为不想暴露一些二级域名，或者希望在多台机器上部署同一个域名的证书，这时候就需要用到 DNS 插件了，acme.sh 支持几十种 DNS 插件。这里以 Cloudflare 为例，登录 Cloudflare Dash 后在 API Token 菜单里添加一个 API Token：然后选择 Edit Zone DNS 的模板选择你要编辑的域名，也可以加入你服务器的 IP 作为白名单完成后会给你一串字符，把他复制下来，需要填入下方的 CF_Token 参数然后进入域名的管理页面，在右侧 API 列找到 Account ID 和 Zone ID 并复制接着在终端运行export CF_Token="复制下来的 Token" export CF_Account_ID="复制下来的 Account ID" export CF_Zone_ID="复制下来的 Zone ID"然后开启 acme.sh 的 DNS API 模式申请证书acme.sh --issue --dns dns_cf -d example.com -d *.example.com安装证书方法同上，另外吐槽下，很多教程会让你用 Cloudflare 的全局 Global API Key，真的是，风险太大了，最后怎么被黑的都不知道 = =安装证书然后我们可以安装证书Nginxacme.sh --install-cert -d example.com \ --key-file /etc/nginx/ssl/example.com.key \ --fullchain-file /etc/nginx/ssl/example.com.crt \ --reloadcmd "systemctl restart nginx"对应的 Nginx 配置指定证书文件ssl_certificate /etc/nginx/ssl/example.com.crt; ssl_certificate_key /etc/nginx/ssl/example.com.key;Apacheacme.sh --install-cert -d example.com \ --key-file /etc/apache2/ssl/example.com.key \ --fullchain-file /etc/apache2/ssl/example.com.crt \ --ca-file /etc/apache2/ssl/example.com.ca.crt \ --reloadcmd "curl https://ssl-config.mozilla.org/ffdhe2048.txt >> /etc/apache2/ssl/example.com.crt && systemctl restart apache2"对应的 Apache 配置指定证书文件SSLCertificateFile /etc/apache2/ssl/example.com.crt SSLCertificateKeyFile /etc/apache2/ssl/example.com.key如果想要指定 ECC 证书，则安装的时候需要带上 --ecc 参数，比如acme.sh --install-cert --ecc -d example.com \ --key-file /etc/nginx/ssl/example.com.key \ --fullchain-file /etc/nginx/ssl/example.com.crt \ --reloadcmd "systemctl restart nginx"注意如果是多个域名，也仅需要在 -d 参数后面指定第一个域名即可。[font color="#DC143C"]文章转载于：https://u.sb/acme-sh-ssl/[/font]
一、介绍在数字化时代，数据就是财富。无论是珍贵的照片、重要的工作文档，还是运行网站的代码，数据的安全性和可访问性都至关重要。对于 Linux 服务器而言，定期备份数据更是重中之重。今天要给大家介绍一款强大的工具—— rclone，它可以帮助你轻松地将服务器上的文件备份到各种云存储服务，同时还能将云存储挂载到本地，实现便捷的文件访问。rclone 是一款开源的命令行工具，支持包括 Google Drive、OneDrive、Dropbox、Amazon S3 等在内的众多云存储服务。它不仅可以进行简单的文件复制和同步，还提供了加密、压缩、带宽限制等高级功能，满足你对数据安全和效率的各种需求。使用 rclone，你可以：将服务器上的文件自动备份到云端，免除数据丢失的后顾之忧。将云存储挂载到本地，像访问本地硬盘一样访问云端文件。在不同的云存储服务之间迁移数据。加密和解密你的文件，保障数据安全。接下来，我们将逐步讲解 rclone 的安装、配置和使用方法，帮助你快速掌握这款强大的工具，让你的数据管理更加高效便捷！二、安装 rclone 并连接到你的云存储在开始使用 rclone 之前，我们需要先在 Linux 服务器上安装它，并配置连接到你的云存储服务。安装 rclonerclone 官方提供了便捷的安装脚本，适用于各种 Linux 发行版。打开你的服务器终端，执行以下命令即可自动完成安装：Bashcurl https://rclone.org/install.sh | sudo bash该脚本会自动检测你的系统类型，并下载相应的 rclone 版本。安装完成后，你可以运行 rclone version 命令来验证安装是否成功。配置 rclone使用官方引导程序配置rclone 支持连接到众多云存储服务，配置方法也略有不同。这里我们以 Google Drive 为例，演示如何配置 rclone 连接到你的 Google Drive 账户。创建 Google Cloud 项目并启用 Drive API访问 Google Cloud Console (https://console.cloud.google.com/)，创建一个新的项目。在项目中启用 Drive API。Google Cloud Platform console showing how to enable Drive API创建 OAuth 客户端 ID在 API 和服务 > 凭据页面，点击“创建凭据”>“OAuth 客户端 ID”。选择应用类型为“桌面应用”，并为其命名。点击“创建”，系统将生成客户端 ID 和客户端密钥，请妥善保存。配置 rclone在服务器终端运行 rclone config 命令。输入 n 创建新的远程连接，并为其命名（例如 gdrive）。选择存储类型为 drive。依次输入客户端 ID 和客户端密钥。其他选项可以按默认值设置，或根据你的需求进行调整。在 scope 选项中，选择 drive。选择 root_folder_id 为空。选择 service_account_file 为空。选择 y 进行高级配置，并将 access_token 和 refresh_token 留空。rclone 会自动打开浏览器窗口，请登录你的 Google 账户并授权 rclone 访问你的 Drive。授权完成后，复制浏览器地址栏中的 code 参数值，将其粘贴到终端中。配置完成后，rclone 会将配置信息保存到 ~/.config/rclone/rclone.conf 文件中。直接编辑配置文件输入 rclone config 后，会在 .config/rclone 目录中生成一个 rclone.conf 文件，如果我们熟悉 Rclone 配置的话，也可以直接新建编辑该文件，同样是可以生效的创建配置文件夹mkdir -p ~/.config/rclone编辑配置文件vim ~/.config/rclone/rclone.conf以cloudflare r2云存储为例[r2demo] type = s3 provider = Cloudflare access_key_id = abc123 secret_access_key = xyz456 region = auto endpoint = https://<accountid>.r2.cloudflarestorage.com [scode type="red" size=""]如果您使用的是具有对象级权限的令牌，则需要在配置中添加 no_check_bucket = true 以避免出错。[/scode]其他云存储服务的配置方法rclone 官方文档提供了详细的配置指南，涵盖了各种云存储服务。你可以参考文档进行配置：提示：在配置过程中，请仔细阅读每个选项的说明，并根据你的实际需求进行设置。确保你的服务器可以访问互联网，并且没有防火墙规则阻止 rclone 的连接。接下来，我们将学习如何使用 rclone 备份服务器文件和挂载云存储。三、使用 rclone 备份 Linux 服务器文件rclone 提供了多种命令来管理和同步文件，其中最常用的包括 copy、sync 和 move。rclone copy：将源文件复制到目标位置。如果目标位置已存在同名文件，则会覆盖。rclone sync：将源目录同步到目标目录，确保目标目录与源目录完全一致。这意味着目标目录中存在但源目录中不存在的文件将被删除。rclone move：将源文件移动到目标位置，相当于剪切粘贴操作。备份服务器文件假设我们要将服务器上的 /home/user/documents 目录备份到 Google Drive，可以使用以下命令：Bashrclone sync /home/user/documents gdrive:backup其中，gdrive 是我们在配置 rclone 时为 Google Drive 连接指定的名称，backup 是指 Google Drive 上用于存放备份文件的文件夹。其他常用选项-P 或 --progress：显示同步进度。--exclude：排除指定文件或目录。例如，--exclude "*.tmp" 会排除所有以 .tmp 结尾的文件。--exclude-from：从文件中读取排除列表。--max-depth：设置同步的最大深度。例如，--max-depth 1 只同步顶层目录。--dry-run：进行模拟运行，不会实际传输文件，可以用来测试同步效果。定时自动备份为了确保数据安全，建议设置定时任务来自动备份文件。Linux 系统中常用的定时任务工具是 crontab。编辑 crontab 文件：Bashcrontab -e添加定时任务：例如，每天凌晨 2 点执行备份任务：0 2 * * * rclone sync /home/user/documents gdrive:backup保存并退出 crontab 文件。提示：在选择备份命令时，请根据你的实际需求选择 copy、sync 或 move。建议在执行备份任务之前，使用 --dry-run 选项进行模拟运行，确保同步效果符合预期。可以将备份日志保存到文件中，方便日后查看。使用脚本实现备份文件这个脚本实现了运行自动压缩，并上传至远程，超过最大限制之后删除远端文件下面这个脚本需要修改几个地方，SOURCE\_DIR是你要备份的文件夹，RCLONE\_REMOTE是你R2的地址，格式是{配置名}:桶名/目录[collapse status="false" title="备份脚本"]#!/bin/bash # 需要备份的文件夹路径 SOURCE_DIR="/data/compose/2/" # 获取脚本所在目录路径 SCRIPT_DIR=$(dirname "$(readlink -f "$0")") # 备份文件临时存放路径 TEMP_DIR="$SCRIPT_DIR/temp" # rclone配置名称和目标路径 RCLONE_REMOTE="wordpress_backup:wordpress-backup/blog" # 日志文件路径 LOG_FILE="$SCRIPT_DIR/backup.log" # 保留的最大备份数量 MAX_BACKUPS=2 # 当前时间，用于备份文件命名 DATE=$(date +"%Y-%m-%d_%H-%M-%S") # 创建临时目录（如果不存在） mkdir -p "$TEMP_DIR" # 压缩并生成日志 ARCHIVE_NAME="${TEMP_DIR}/$(basename "$SOURCE_DIR")-${DATE}.tar.gz" echo "[$(date +"%Y-%m-%d_%H-%M-%S")] Compression started" >> "$LOG_FILE" tar -czf "$ARCHIVE_NAME" "$SOURCE_DIR" >> /dev/null 2>&1 echo "[$(date +"%Y-%m-%d_%H-%M-%S")] Compression completed" >> "$LOG_FILE" # 删除云端最早的备份（超过最大保留数量） EXISTING_BACKUPS=$(rclone lsf "$RCLONE_REMOTE" | grep "$(basename "$SOURCE_DIR")-.*\.tar\.gz" | sort) NUM_BACKUPS=$(echo "$EXISTING_BACKUPS" | wc -l) if [ "$NUM_BACKUPS" -gt "$MAX_BACKUPS" ]; then NUM_TO_DELETE=$((NUM_BACKUPS - MAX_BACKUPS)) BACKUPS_TO_DELETE=$(echo "$EXISTING_BACKUPS" | head -n "$NUM_TO_DELETE") for BACKUP in $BACKUPS_TO_DELETE; do echo "[$(date +"%Y-%m-%d_%H-%M-%S")] Deleting old backup: $BACKUP" >> "$LOG_FILE" rclone delete "$RCLONE_REMOTE/$BACKUP" >> "$LOG_FILE" 2>&1 done fi # 上传新的备份 echo "[$(date +"%Y-%m-%d_%H-%M-%S")] Starting upload of $ARCHIVE_NAME to $RCLONE_REMOTE" >> "$LOG_FILE" echo "本次运行的命令为：rclone copy \"$ARCHIVE_NAME\" \"$RCLONE_REMOTE/\" --log-file=\"$LOG_FILE\" --log-level INFO –s3-no-check-bucket" >> "$LOG_FILE" rclone copy "$ARCHIVE_NAME" "$RCLONE_REMOTE/" --s3-no-check-bucket --log-file="$LOG_FILE" --log-level INFO UPLOAD_STATUS=$? # 检查上传是否成功 if [ $UPLOAD_STATUS -eq 0 ]; then echo "[$(date +"%Y-%m-%d_%H-%M-%S")] Upload of $ARCHIVE_NAME completed successfully" >> "$LOG_FILE" rm "$ARCHIVE_NAME" # 上传成功后删除本地文件 else echo "[$(date +"%Y-%m-%d_%H-%M-%S")] Failed to upload $ARCHIVE_NAME" >> "$LOG_FILE" fi # 记录备份过程完成状态 if [ $UPLOAD_STATUS -eq 0 ]; then echo "[$(date +"%Y-%m-%d_%H-%M-%S")] Backup process completed successfully" >> "$LOG_FILE" else echo "[$(date +"%Y-%m-%d_%H-%M-%S")] Backup process failed" >> "$LOG_FILE" fi[/collapse]我这里将他放在 /root/bash/backup.sh这个位置定时配置打开定时配置crontab -e写入以下内容0 2 * * * /root/bash/backup.sh接下来，我们将学习如何使用 rclone 挂载云存储。四、将云存储变成本地硬盘！使用 rclone 挂载云存储rclone 不仅可以备份文件，还能将你的云存储挂载到 Linux 系统中，让你像访问本地硬盘一样访问云端文件。挂载云存储使用 rclone mount 命令可以将云存储挂载到指定的目录。例如，将 Google Drive 挂载到 /mnt/gdrive 目录：Bashrclone mount gdrive: /mnt/gdrive --allow-other其中，gdrive: 是指 Google Drive 连接的名称，/mnt/gdrive 是你想要挂载到的本地目录。--allow-other 选项允许其他用户访问挂载的目录。挂载选项rclone mount 命令支持丰富的选项，可以根据你的需求进行调整：--dir-cache-time：设置目录缓存时间，可以提高文件访问速度。--drive-chunk-size：设置文件块大小，可以优化大文件传输性能。--vfs-read-chunk-size：设置读取文件块大小，可以影响文件读取速度。--vfs-read-chunk-size-limit：设置读取文件块大小限制，可以控制内存使用量。--vfs-cache-mode：设置缓存模式，可以根据你的使用场景选择不同的模式。后台运行默认情况下，rclone mount 命令会在前台运行，这意味着你需要保持终端窗口打开。为了让挂载在后台运行，可以使用 --daemon 选项：Bashrclone mount gdrive: /mnt/gdrive --allow-other --daemon开机自动挂载为了方便使用，可以设置开机自动挂载云存储。创建 systemd 服务文件：Bashsudo nano /etc/systemd/system/rclone.service将以下内容粘贴到文件中，并将 gdrive: 和 /mnt/gdrive 替换成你的实际配置：[Unit] Description=Rclone Mount After=network-online.target [Service] Type=simple User=你的用户名 ExecStart=/usr/bin/rclone mount gdrive: /mnt/gdrive --allow-other --daemon Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target保存并退出文件。启用并启动服务：Bashsudo systemctl enable rclone.service sudo systemctl start rclone.service注意事项挂载云存储的性能可能不如本地硬盘，尤其是在网络连接不佳的情况下。一些云存储服务对 API 调用次数有限制，频繁访问可能会导致 API 被限制。挂载云存储后，请谨慎操作文件，避免误删或修改重要数据。接下来，我们将介绍 rclone 的一些高级用法。五、rclone 高级用法：解锁更多实用功能除了基本的备份和挂载功能外，rclone 还提供了许多高级功能，可以进一步提升你的数据管理效率和安全性。文件加密和解密rclone 支持对文件进行加密和解密，保障你的数据安全。加密文件使用 rclone cryptcheck 命令可以加密文件。例如，将 /home/user/secrets 目录加密后上传到 Google Drive：Bashrclone cryptcheck gdrive:encrypted secretsrclone 会提示你设置密码，并使用该密码加密文件。加密后的文件将被上传到 Google Drive 上的 encrypted 文件夹中。解密文件使用 rclone cryptdecode 命令可以解密文件。例如，将 Google Drive 上的 encrypted 文件夹中的文件解密到 /home/user/decrypted 目录：Bashrclone cryptdecode gdrive:encrypted /home/user/decryptedrclone 会提示你输入密码，并使用该密码解密文件。带宽限制如果你的网络带宽有限，可以使用 --bwlimit 选项来限制 rclone 的上传和下载速度。例如，将上传速度限制为 1 MB/s：Bashrclone sync /home/user/documents gdrive:backup --bwlimit 1M文件过滤rclone 支持使用过滤器来排除或包含特定文件。例如，排除所有以 .tmp 结尾的文件：Bashrclone sync /home/user/documents gdrive:backup --exclude "*.tmp"你还可以使用 --include 选项来包含特定文件，以及使用 --exclude-from 和 --include-from 选项从文件中读取排除和包含列表。部分同步rclone 支持部分同步，这意味着你只需要同步修改过的文件，从而节省时间和带宽。使用 --update 选项可以跳过已存在且修改时间相同的文件：Bashrclone sync /home/user/documents gdrive:backup --update使用 --checksum 选项可以根据文件校验和来判断文件是否需要同步：Bash ### 其他高级功能 rclone 还提供了许多其他高级功能，例如： * `rclone serve`：将本地目录作为 Web 服务器共享。 * `rclone rc`：通过 HTTP API 控制 rclone。 * `rclone dedupe`：查找并删除重复文件。 **希望这些高级用法能够帮助你更好地利用 rclone，让你的数据管理更加高效便捷！** ## 六、总结：rclone 让数据管理化繁为简 rclone 是一款功能强大的命令行工具，它可以帮助你轻松地备份 Linux 服务器文件、挂载云存储、加密文件、管理云存储等。通过本文的介绍，相信你已经对 rclone 的基本用法和高级功能有所了解。 **rclone 的优势：** * **支持众多云存储服务：** rclone 支持几乎所有主流的云存储服务，包括 Google Drive、OneDrive、Dropbox、Amazon S3 等，让你可以自由选择最适合你的云存储方案。 * **功能丰富：** rclone 不仅可以备份和同步文件，还提供了加密、解密、带宽限制、文件过滤等高级功能，满足你对数据安全和效率的各种需求。 * **开源免费：** rclone 是一款开源软件，可以免费使用，没有任何限制。 * **跨平台支持：** rclone 支持 Linux、Windows、macOS 等多个操作系统，可以在不同的平台上使用。 **rclone 的应用场景：** * **Linux 服务器备份：** 将服务器上的重要文件备份到云端，防止数据丢失。 * **个人数据同步：** 将个人电脑上的文件同步到云端，实现多设备数据共享。 * **云存储迁移：** 在不同的云存储服务之间迁移数据。 * **加密和解密文件：** 保护你的敏感数据安全。 **学习资源：** * **rclone 官方网站：** https://rclone.org * **rclone 官方文档：** https://rclone.org/docs * **rclone GitHub 仓库：** https://github.com/rclone/rclone 希望 rclone 能够帮助你更好地管理数据，让你的数字生活更加便捷高效！
防止 SSH 爆破：启用密钥登录前段时间，我发现我的一台服务器被SSH 爆破 10,000 次。这让我意识到使用用户名密码登录方式存在较大的安全隐患。本文将介绍 SSH 爆破攻击的危险，并指导大家如何通过启用密钥登录来保护服务器安全。什么是 SSH 爆破攻击？SSH（Secure Shell）是一种常用的远程登录方式，主要用于管理服务器。然而，如果 SSH 使用用户名和密码登录，它很容易成为攻击者的目标。攻击者通常通过“暴力破解”来猜测用户名和密码，试图获取未授权的访问权限。暴力破解会用字典或脚本不断尝试常见的密码组合，一旦成功，攻击者便能完全控制你的服务器。SSH 爆破攻击的危险性资源消耗：爆破攻击会占用服务器的 CPU 和带宽资源，影响正常的服务器运行。数据泄露：一旦被爆破成功，攻击者可能窃取敏感数据或安装恶意软件。服务中断：攻击者可以通过删除关键文件或修改配置导致服务中断。被滥用为跳板：黑客可能利用你的服务器作为跳板，进一步攻击其他系统或进行网络犯罪。如何启用 SSH 密钥登录？为防止暴力破解攻击，推荐使用 SSH 密钥登录。密钥登录比密码登录安全得多，因为它使用加密密钥认证，且不容易被破解。步骤一：生成 SSH 密钥对在本地计算机上生成 SSH 密钥对：ssh-keygen -t rsa -b 4096 -C "your_email@example.com"你可以选择将密钥保存在默认位置（通常是 ~/.ssh/id_rsa），并设置一个密码短语来进一步增强安全性。生成后，会得到一个私钥文件（id_rsa）和一个公钥文件（id_rsa.pub）。-C参数后面的内容可以用来标识这个密钥的，以便区分不同的密钥步骤二：将公钥上传到服务器将生成的公钥上传到目标服务器（使用 user@hostname 替换为你的用户名和主机名）：ssh-copy-id -i ~/.ssh/id_rsa.pub user@hostname如果无法使用 ssh-copy-id，可以手动上传公钥：cat ~/.ssh/id_rsa.pub | ssh user@hostname 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'步骤三：禁用密码登录为了确保安全性，建议禁用 SSH 密码登录。登录到服务器后，编辑 SSH 配置文件：sudo vim /etc/ssh/sshd_config找到并修改以下选项：PasswordAuthentication no确保启用了公钥认证机制，允许使用密钥登陆，即确保配置文件中有以下配置，并且没有被注释掉：PubkeyAuthentication yes保存并退出，然后重启 SSH 服务以应用更改：sudo systemctl restart ssh其他安全建议更改默认 SSH 端口：将 SSH 端口从默认的 22 改为其他端口，可以减少被扫描的概率。使用防火墙：配置防火墙规则，只允许可信任的 IP 地址访问 SSH 服务。启用 Fail2Ban：Fail2Ban 可以在短时间内禁止多次失败登录尝试的 IP，从而防止暴力破解。结论SSH 爆破攻击对服务器安全构成严重威胁，但通过启用 SSH 密钥登录，可以有效防止暴力破解。采用上述安全建议后，你的服务器将更加安全稳定。
简介 Realm 是一个用 rust 编写的简单、高性能的网络中继工具。其特点为配置简单、资源占用少、性能强。项目仓库地址：https://github.com/zhboner/realm使用方法1. 下载系统对应版本二进制文件，下载地址，以 linux x64 系统为例mkdir -p /opt/realm cd /opt/realm wget https://github.com/zhboner/realm/releases/download/v2.6.2/realm-x86_64-unknown-linux-gnu.tar.gz tar -zxvf realm-x86_64-unknown-linux-gnu.tar.gz chmod +x realm2. 编辑配置文件简便用法，直接命令行参数启动(需在安装目录运行)./realm -l 0.0.0.0:5000 -r 1.1.1.1:443-l 后跟本地 ip 加端口(即本地监听的 ip+port )，-r 后跟远程 ip 加端口(即需要转发的远端服务的 ip+port )，更多参数可以使用 ./realm -h查看。配置文件，配置文件运行配置文件可以使用 toml 或者 json 格式书写，个人推荐使用 toml 格式，更加清晰明了， 官方提供的配置文件实例vim /opt/realm/config.toml运行以上命令，将下列内容粘贴进去后，敲下 esc 键，然后键盘输入 :wq 保存并退出我这里使用 toml 格式书写一个最基本 tcp/udp 转发实例[log] level = "warn" # 输出的日志等级，日志级别: off,debug,info,error,warn # output = "./realm.log" #日志输出路径 [network] use_udp = true # 启用udp [[endpoints]] listen = "0.0.0.0:5000" # 本地监听的ip和端口 remote = "1.1.1.1:443" # 远端ip加端口 # [[endpoints]] # 可以同时配置多个转发只需要添加[[endpoints]]字段即可 # listen = "0.0.0.0:10000" # remote = "www.google.com:443"[collapse status="false" title="官方配置文件examples"][log] level = "warn" output = "realm.log" [dns] mode = "ipv4_only" protocol = "tcp_and_udp" nameservers = ["8.8.8.8:53", "8.8.4.4:53"] min_ttl = 600 max_ttl = 3600 cache_size = 256 [network] no_tcp = false use_udp = true ipv6_only = false tcp_timeout = 5 udp_timeout = 30 send_proxy = true send_proxy_version = 2 accept_proxy = true accept_proxy_timeout = 5 tcp_keepalive = 15 tcp_keepalive_probe = 3 [[endpoints]] listen = "0.0.0.0:5000" remote = "1.1.1.1:443" extra_remotes = ["1.1.1.2:443", "1.1.1.3:443"] balance = "roundrobin: 4, 2, 1" through = "0.0.0.0" interface = "lo" [[endpoints]] listen = "0.0.0.0:10000" remote = "www.google.com:443" extra_remotes = ["www.youtube.com:443"] balance = "roundrobin: 2, 1" through = "0.0.0.0" interface = "wlan0"[/collapse]3. 设置开启自启动linux 使用 systemd 服务来实现开机自启在 /etc/systemd/system/ 目录下创建 realm.service 文件vim /etc/systemd/system/realm.service运行以上命令，将下列内容粘贴进去后，敲下 esc 键，然后键盘输入 :wq 保存并退出以下是使用配置文件启动的配置，如果使用参数启动请自行修改 ExecStart 行的启动命令[Unit] Description=realm After=network-online.target Wants=network-online.target systemd-networkd-wait-online.service [Service] Type=simple Restart=on-failure RestartSec=5s WorkingDirectory=/opt/realm ExecStart=/opt/realm/realm -c /opt/realm/config.toml [Install] WantedBy=multi-user.target4.启动服务相关命令重载 systemd 守护进程的配置文件systemctl daemon-reload启用开机自启动systemctl enable realm启动 realm 服务systemctl start realm查看 realm 服务状态systemctl status realm查看运行日志journalctl -u realm -o cat -f停止 realm 服务systemctl stop realm重启 realm 服务systemctl restart realm关闭开机自启动systemctl disable realm
欢迎来到我的博客 🎉引言 嗨，大家好！欢迎来到我的个人博客。这是一个充满思考、分享与学习的地方，我将在这里记录下我对技术、生活、以及个人成长的点滴感悟。希望通过这个平台，能够与大家建立起一座沟通的桥梁，共同进步。为什么建这个博客？ 建立这个博客的初衷很简单，主要有以下几点：记录与总结：在学习新技术或解决问题的过程中，记录下来的笔记和心得不仅能加深理解，还能方便日后回顾。分享与交流：我相信“教是最好的学”，通过分享自己的知识和经验，可以促使自己更加深入地理解和掌握知识，同时也希望能为需要的人提供帮助。[scode type="blue" size=""]主要是因为闲的没事，刚好又有个服务器不知道用来干啥[/scode]博客内容规划 我的博客内容将主要围绕以下几个方面展开：技术文章：涵盖编程语言（如Python、JavaScript）、Web开发（HTML/CSS/React）、数据库管理、云计算与大数据、以及AI与机器学习等方面的知识分享。生活感悟：记录生活中的小确幸、旅行见闻、阅读心得等，分享一些积极向上的生活态度。个人成长：关于时间管理、习惯养成、自我提升等方面的思考和实践。如何参与 我非常欢迎每一位访客的到来，并鼓励大家积极参与进来：留言互动：在每篇文章下方，你可以留下你的看法、疑问或建议，我会尽量回复。订阅更新：通过RSS订阅或使用邮件订阅功能，你可以第一时间获取我的最新文章。分享转发：如果你喜欢我的文章，不妨分享给你的朋友或同事，让更多人受益。结语 最后，感谢你的到来和阅读。这仅仅是一个开始，未来的日子里，我会不断努力，提升自己的写作水平，分享更多有价值的内容。希望我们能在这一片数字海洋中，共同航行，探索未知。 再次欢迎来到我的博客，期待与你一起成长！