电脑远程连接阿里云服务器:WireGuard VPN 实战

📅 2026-04-01 👤 Elaine 👁️ 9 次阅读 ⏱️ 10 分钟阅读 ❤️ 0

🖥️ 电脑远程连接阿里云:WireGuard VPN 实战

    <p class="subtitle">手把手操作 · 你的电脑 → 阿里云服务器 · 稳定隧道 | 2026-04-01</p>

    <div class="info">
        <div class="info-title">📋 目录</div>
        <ul>
            <li><a href="#before" style="color:#60a5fa;">操作前先确认</a></li>
            <li><a href="#arch" style="color:#60a5fa;">整体架构</a></li>
            <li><a href="#server" style="color:#60a5fa;">第一步:阿里云服务器配置</a></li>
            <li><a href="#client" style="color:#60a5fa;">第二步:你的电脑配置</a></li>
            <li><a href="#aliyun" style="color:#60a5fa;">第三步:阿里云安全组放行</a></li>
            <li><a href="#test" style="color:#60a5fa;">第四步:测试连接</a></li>
            <li><a href="#openvpn" style="color:#60a5fa;">备选方案:OpenVPN(如果 WireGuard 不通)</a></li>
            <li><a href="#faq" style="color:#60a5fa;">常见问题 FAQ</a></li>
        </ul>
    </div>

    <h2 id="before">🔍 操作前先确认</h2>

    <div class="section">
        <h3>你需要的信息</h3>
        <p>开始之前,先准备好以下信息,对着检查:</p>
        <table>
            <tr><th>项目</th><th>说明</th><th>你填一下</th></tr>
            <tr><td>服务器公网 IP</td><td>阿里云控制台可看到</td><td><code>____.___.___.___</code></td></tr>
            <tr><td>服务器 SSH 端口</td><td>默认 22,如果有改过就用你的</td><td><code>22</code></td></tr>
            <tr><td>你的电脑系统</td><td>Windows / macOS / Linux</td><td></td></tr>
        </table>
    </div>

    <div class="warning">
        <div class="warning-title">⚠️ 重要原则</div>
        <p>全程在<strong>阿里云服务器上执行命令</strong>(通过 SSH 连接),不在你本地电脑上生成密钥,避免私钥传输。</p>
    </div>

    <h2 id="arch">🏗️ 整体架构</h2>

    <div class="section">
        <p>WireGuard 会建立一张虚拟网卡,两端各分配一个内网 IP:</p>
        <pre><code>  你的电脑 (WireGuard 客户端)          阿里云服务器 (WireGuard 服务端)

────────────────────────── ─────────────────────────────────
wg0: 10.0.0.2/24 ◄── UDP 51820 ──► wg0: 10.0.0.1/24
eth0: 公网IP: 47.x.x.x
lo: 127.0.0.1:18789 (OpenClaw)
127.0.0.1:22 (SSH)

连接后:
你的电脑 → SSH → 10.0.0.1:22 (用 VPN 内网 IP 连接,不暴露公网 SSH)
你的电脑 → 浏览器 → 10.0.0.1:18789 (OpenClaw Dashboard)

    <div class="info">
        <div class="info-title">💡 为什么用 VPN 而不是直接暴露 SSH?</div>
        <ul>
            <li>家庭宽带没有固定公网 IP,直接 SSH 暴露端口有安全风险</li>
            <li>VPN 建立后,你用 <code>10.0.0.1</code> 这个固定内网 IP 访问,<strong>不暴露服务器公网端口</strong></li>
            <li>WireGuard UDP 协议,延迟低、性能好、耗电少</li>
        </ul>
    </div>

    <h2 id="server">🖥️ 第一步:阿里云服务器配置(服务端)</h2>

    <div class="step">
        <div class="step-title"><span class="step-num">1.1</span> SSH 登录到服务器</div>
ssh -p 22 root@你的服务器公网IP
# 或者用密钥登录
ssh -i ~/.ssh/your_key.pem root@你的服务器公网IP
    </div>

    <div class="step">
        <div class="step-title"><span class="step-num">1.2</span> 安装 WireGuard</div>
# Ubuntu / Debian
apt update && apt install wireguard -y

# CentOS
# yum install epel-release -y
# yum install wireguard-tools -y
        <p style="color:#aaa;font-size:0.9em;margin-top:8px;">WireGuard 已经进入 Ubuntu 20.04+ 默认仓库,安装非常快。</p>
    </div>

    <div class="step">
        <div class="step-title"><span class="step-num">1.3</span> 在服务器上生成密钥对</div>
# 生成服务端密钥
wg genkey | tee server_private.key | wg pubkey > server_public.key
# 查看服务端公钥(稍后要用)
cat server_public.key
        <p style="color:#aaa;font-size:0.9em;margin-top:8px;">记住输出的公钥内容,如 <code>aBcDeFgH...</code>,下一步要用。</p>
    </div>

    <div class="step">
        <div class="step-title"><span class="step-num">1.4</span> 写服务端配置文件</div>
# 创建配置目录(如果不存在)
mkdir -p /etc/wireguard

# 创建 wg0.conf(服务端配置文件)
nano /etc/wireguard/wg0.conf
        <p style="color:#aaa;margin-bottom:10px;">写入以下内容,把 <code>&lt;服务端私钥&gt;</code> 替换成上一步生成的私钥:</p>
# 替换方法:先运行 cat server_private.key 拿到私钥

[Interface]
PrivateKey = <服务端私钥>          # 运行 cat server_private.key 获得
Address = 10.0.0.1/24               # 服务端固定内网 IP
ListenPort = 51820                  # UDP 监听端口
PostUp   = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey  = CLIENT_PUBLIC_KEY      # 客户端公钥(下一步在客户端生成)
AllowedIPs = 10.0.0.2/32             # 客户端固定内网 IP
    </div>

    <div class="step">
        <div class="step-title"><span class="step-num">1.5</span> 开启 IP 转发</div>
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
    </div>

    <div class="step">
        <div class="step-title"><span class="step-num">1.6</span> 启动 WireGuard</div>
# 设置文件权限(安全要求)
chmod 600 /etc/wireguard/wg0.conf

# 启动
systemctl start wg-quick@wg0

# 开机自启
systemctl enable wg-quick@wg0

# 查看运行状态
wg show
        <p style="color:#4ade80;margin-top:8px;">✅ 如果 <code>wg show</code> 输出看到了 wg0 接口,说明 WireGuard 已正常运行。</p>
    </div>

    <h2 id="client">💻 第二步:你的电脑配置(客户端)</h2>

    <div class="section">
        <h3>客户端密钥生成(在服务器上操作,避免私钥传输)</h3>
# 在服务器的 /tmp 目录下生成客户端密钥(生成后私钥在这里暂时保管)
wg genkey | tee client_private.key | wg pubkey > client_public.key
cat client_public.key
# 输出 client 公钥,复制它,然后回到服务器端填入 wg0.conf
    </div>

    <div class="section">
        <h3>把客户端公钥填回服务器</h3>
# 回到服务器,编辑 wg0.conf,替换 CLIENT_PUBLIC_KEY
nano /etc/wireguard/wg0.conf
        <p style="color:#aaa;font-size:0.9em;">把 <code>CLIENT_PUBLIC_KEY</code> 替换成上一步输出的客户端公钥,然后保存退出。</p>
# 重启 WireGuard 使配置生效
systemctl restart wg-quick@wg0
    </div>

    <div class="section">
        <h3>把客户端私钥和安全地传到你的电脑</h3>
        <div class="warning">
            <div class="warning-title">⚠️ 关键:不要通过微信/QQ/邮件传私钥</div>
            <p>用以下安全方式之一:</p>
        </div>
# 方式1(推荐):在服务器上base64编码,打印到终端,你手动抄下来
cat client_private.key          # 会显示类似 YGJhZDEyMzQ1Njc4OTBhIGFiY2Q= 这样的字符串

# 方式2:通过 SSH SCP 传文件(如果你电脑有 SSH client)
scp root@你的服务器IP:/tmp/client_private.key ~/client_private.key

# 方式3:base64 输出,手动复制
base64 client_private.key       # 复制输出内容,到你电脑上 base64 -d 还原
    </div>

    <div class="section">
        <h3>根据你的操作系统安装客户端</h3>

        <div class="two-col">
            <div>
                <h4>🍎 macOS</h4>
# 用 Homebrew 安装
brew install wireguard-tools

# 或者下载官方客户端
# https://www.wireguard.com/install/
            </div>
            <div>
                <h4>🪟 Windows</h4>
# 下载官方客户端
# https://download.wireguard.com/windows-client/wireguard-installer.exe
            </div>
        </div>

        <div class="two-col">
            <div>
                <h4>🐧 Linux</h4>
sudo apt install wireguard -y
            </div>
            <div>
                <h4>📱 iOS / Android</h4>
# App Store / Play Store 搜索 "WireGuard" 官方客户端
            </div>
        </div>
    </div>

    <div class="section">
        <h3>写客户端配置文件</h3>
        <p>在你的电脑上,创建配置文件 <code>~/wireguard/wg0.conf</code>(macOS/Linux)或通过客户端 App 导入:</p>
# macOS 用 sudo 创建配置文件
sudo mkdir -p /etc/wireguard
sudo nano /etc/wireguard/wg0.conf

# 配置文件内容(按实际情况替换)
[Interface]
PrivateKey = <客户端私钥>              # 上一步生成的客户端私钥
Address    = 10.0.0.2/24               # 客户端固定内网 IP
DNS        = 223.5.5.5, 119.29.29.29   # 国内 DNS,不劫持

[Peer]
PublicKey  = <服务端公钥>              # 服务器上 cat server_public.key 的输出
Endpoint   = 你的服务器公网IP:51820   # 如 47.98.123.456:51820
AllowedIPs = 10.0.0.0/24              # 只走 VPN 的网段(推荐)
PersistentKeepalive = 25              # 保持 UDP 连接(NAT 环境需要)
        <div class="info">
            <div class="info-title">💡 AllowedIPs 两种设置的区别</div>
            <ul>
                <li><code>AllowedIPs = 10.0.0.0/24</code>(推荐):<strong>只有访问 10.0.0.x 网段时才走 VPN</strong>,其他流量正常走本地宽带,不影响国内应用速度</li>
                <li><code>AllowedIPs = 0.0.0.0/0</code>:所有流量都走 VPN,速度会慢,但更安全</li>
            </ul>
        </div>
    </div>

    <div class="section">
        <h3>macOS 启动 WireGuard</h3>
# 启动 VPN 连接
sudo wg-quick up wg0

# 关闭 VPN
sudo wg-quick down wg0

# 开机自动连接(可选)
sudo ln -s /usr/local/bin/wg-quick /usr/local/bin/wg-auto-up
    </div>

    <h2 id="aliyun">☁️ 第三步:阿里云安全组放行</h2>

    <div class="step">
        <div class="step-title">在阿里云控制台操作</div>
        <ol>
            <li>登录 <a href="https://ecs.console.aliyun.com/" style="color:#60a5fa;">阿里云 ECS 控制台</a></li>
            <li>找到你的实例 → <strong>安全组</strong> → <strong>配置规则</strong></li>
            <li>点击 <strong>入方向</strong> → <strong>手动添加</strong></li>
        </ol>
        <table style="margin-top:12px;">
            <tr><th>协议</th><th>端口</th><th>来源</th><th>备注</th></tr>
            <tr><td>UDP</td><td>51820</td><td>0.0.0.0/0</td><td>WireGuard VPN</td></tr>
        </table>
        <div class="warning" style="margin-top:12px;">
            <div class="warning-title">⚠️ 注意</div>
            <p>如果你的 ISP 对 UDP 51820 做了限速或阻断,WireGuard 可能连不上。这时候用<strong>方案 B:OpenVPN</strong>(见下文)。</p>
        </div>
    </div>

    <h2 id="test">✅ 第四步:测试连接</h2>

    <div class="step">
        <div class="step-title">在你的电脑上测试</div>
# 启动 VPN(macOS/Linux)
sudo wg-quick up wg0

# ping 服务器(走 VPN 内网 IP)
ping 10.0.0.1

# SSH 连接(用 VPN IP,不暴露公网)
ssh [email protected]

# 浏览器访问 OpenClaw Dashboard
# 打开浏览器访问:
http://10.0.0.1:18789
        <p style="color:#4ade80;margin-top:8px;">✅ 如果 ping 通了 <code>10.0.0.1</code>,说明 VPN 已建立成功!</p>
    </div>

    <div class="success">
        <div class="success-title">🎉 连接成功!</div>
        <p>以后你远程访问服务器,只需:</p>
        <ul>
            <li>启动 WireGuard 客户端 → 连接</li>
            <li>SSH:<code>ssh [email protected]</code></li>
            <li>OpenClaw Dashboard:<code>http://10.0.0.1:18789</code></li>
        </ul>
        <p>不需要记服务器公网 IP,不需要暴露任何公网端口。</p>
    </div>

    <h2 id="openvpn">🔄 备选方案:OpenVPN(如果 WireGuard 不通)</h2>

    <div class="section">
        <p>如果你的宽带 ISP 对 UDP 做了严格限制(少见但存在),WireGuard 可能握手失败。这时用 OpenVPN 作为备选,它走 TCP 443 端口,跟 HTTPS 网站流量一模一样,几乎不会被阻断。</p>
    </div>

    <div class="step">
        <div class="step-title"><span class="step-num">O1</span> 服务端安装 OpenVPN + 证书生成工具</div>
apt update && apt install openvpn easy-rsa -y
    </div>

    <div class="step">
        <div class="step-title"><span class="step-num">O2</span> 生成 PKI 证书</div>
make-cadir /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
./easyrsa init pki
./easyrsa build-ca
# 给 CA 证书设置一个密码(记住它),Common Name 填:OpenVPN-CA
    </div>

    <div class="step">
        <div class="step-title"><span class="step-num">O3</span> 生成服务端证书</div>
./easyrsa gen-req server nopass
./easyrsa sign-req server server
# 确认签名:输入 yes,然后输入上一步的 CA 密码
    </div>

    <div class="step">
        <div class="step-title"><span class="step-num">O4</span> 生成 Diffie-Hellman 参数 &amp; TLS 密钥</div>
./easyrsa gen-dh
openvpn --genkey secret /etc/openvpn/ta.key
    </div>

    <div class="step">
        <div class="step-title"><span class="step-num">O5</span> 写服务端配置文件</div>
nano /etc/openvpn/server.conf
port 443
proto tcp
dev tun
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem
tls-auth /etc/openvpn/ta.key 0
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 223.5.5.5"
keepalive 10 120
cipher AES-256-GCM
auth SHA256
persist-key
persist-tun
status openvpn-status.log
verb 3
    </div>

    <div class="step">
        <div class="step-title"><span class="step-num">O6</span> 开启 IP 转发 &amp; 启动</div>
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

systemctl start openvpn@server
systemctl enable openvpn@server
systemctl status openvpn@server
    </div>

    <div class="step">
        <div class="step-title"><span class="step-num">O7</span> 生成客户端配置(包含证书)</div>
cd /etc/openvpn/easy-rsa
./easyrsa gen-req client nopass
./easyrsa sign-req client client
# 确认签名:输入 yes,然后输入 CA 密码
        <p style="color:#aaa;margin:12px 0;">把以下内容保存为 <code>client.ovpn</code>(记得替换证书部分):</p>
client
dev tun
proto tcp
remote 你的服务器公网IP 443
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
auth SHA256
verb 3

# 下面三块内容从服务器上复制过来:
# -----BEGIN CERTIFICATE----- 到 -----END CERTIFICATE----- 粘贴到这里(ca.crt)
# -----BEGIN CERTIFICATE----- 到 -----END CERTIFICATE----- 粘贴到这里(client.crt)
# -----BEGIN PRIVATE KEY----- 到 -----END PRIVATE KEY----- 粘贴到这里(client.key)
# -----BEGIN OpenVPN Static key V1----- 到 -----END OpenVPN Static key V1-----(ta.key)
    </div>

    <div class="step">
        <div class="step-title"><span class="step-num">O8</span> 阿里云安全组加一条</div>
        <table>
            <tr><th>协议</th><th>端口</th><th>来源</th></tr>
            <tr><td>TCP</td><td>443</td><td>0.0.0.0/0</td></tr>
        </table>
    </div>

    <div class="step">
        <div class="step-title"><span class="step-num">O9</span> 客户端下载 OpenVPN</div>
        <ul>
            <li>macOS:App Store 搜索 <code>Tunnelblick</code>(免费)</li>
            <li>Windows:<a href="https://openvpn.net/community-downloads/" style="color:#60a5fa;">OpenVPN Connect</a></li>
            <li>iOS/Android:App Store/Play Store 搜索 <code>OpenVPN Connect</code></li>
        </ul>
        <p style="color:#aaa;margin-top:10px;">把 <code>client.ovpn</code> 文件通过 AirDrop/网盘传到手机,用 OpenVPN Connect App 导入即可。</p>
    </div>

    <h2 id="faq">❓ 常见问题 FAQ</h2>

    <div class="section">
        <h3>Q1: WireGuard 连接成功但 ping 不通 10.0.0.1?</h3>
        <p>检查服务端防火墙和 iptables:</p>
# 在服务器上执行
iptables -L -n | grep wg0
# 应该看到 ACCEPT 规则

# 如果没有,手动加一下
iptables -A FORWARD -i wg0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    </div>

    <div class="section">
        <h3>Q2: WireGuard 连不上,UDP 被阻断?</h3>
        <p>在国内常见于部分企业网络或校园网。换用 OpenVPN(TCP 443)基本都能通。</p>
    </div>

    <div class="section">
        <h3>Q3: VPN 连接后网速很慢?</h3>
        <p>WireGuard 性能很好,理论上接近物理网卡限速。慢通常是服务器带宽或物理距离问题。</p>
        <ul>
            <li>确认用的是 <code>AllowedIPs = 10.0.0.0/24</code> 而不是 <code>0.0.0.0/0</code>(前者只走 VPN 流量,后者所有流量都挤 VPN)</li>
            <li>检查服务器带宽规格,低配 ECS 百兆带宽足够</li>
        </ul>
    </div>

    <div class="section">
        <h3>Q4: 每次连接都要手动输入密码?</h3>
        <p>可以用密钥登录服务器,然后 WireGuard 配置文件里写好私钥路径。推荐用 WireGuard 的密钥机制,比密码安全得多。</p>
    </div>

    <div class="section">
        <h3>Q5: 想让多台设备都能连?</h3>
        <p>在服务端的 wg0.conf 里多加几个 <code>[Peer]</code> 段即可,每个设备一个 Peer,AllowedIPs 分配不同的 10.0.0.x 地址。</p>
# 服务端 wg0.conf 示例:3个客户端
[Peer]                    # 客户端 1(你的电脑)
PublicKey = xxx1
AllowedIPs = 10.0.0.2/32

[Peer]                    # 客户端 2(手机)
PublicKey = xxx2
AllowedIPs = 10.0.0.3/32

[Peer]                    # 客户端 3(备用电脑)
PublicKey = xxx3
AllowedIPs = 10.0.0.4/32
    </div>

    <div class="success">
        <div class="success-title">💡 推荐的操作顺序</div>
        <ol>
            <li>先试 WireGuard(方案 A),配置简单性能好</li>
            <li>如果 WireGuard UDP 端口被阻断无法连接,换 OpenVPN(方案 B)</li>
            <li>两种方案不需要同时部署,选一个即可</li>
        </ol>
    </div>
最后更新:2026-08-11 06:46