找回密码
 立即注册

Debian 12.0 WireGuard 服务器端一键测试脚本

[复制链接]
69伙伴 发表于 2025-11-11 02:58:12 | 显示全部楼层 |阅读模式
Debian 12.0 WireGuard 服务器端一键测试脚本

以下是一个专为 Debian 12.0 64bit 设计的 WireGuard 服务器端一键测试脚本,使用固定端口 51820,不包含防火墙配置和 iPerf3 安装:

  1. #!/bin/bash

  2. # 检查是否以root身份运行
  3. if [ "$(id -u)" != "0" ]; then
  4.     echo "错误: 请以root身份运行此脚本"
  5.     exit 1
  6. fi

  7. # 更新系统并安装WireGuard
  8. echo "正在更新系统包列表并安装WireGuard..."
  9. apt update -y
  10. apt install -y wireguard

  11. # 生成服务器密钥对
  12. echo "生成WireGuard服务器密钥对..."
  13. wg genkey | tee /etc/wireguard/wg0.key | wg pubkey > /etc/wireguard/wg0.pub

  14. # 创建配置文件 (使用固定端口 51820)
  15. echo "创建WireGuard服务器配置文件..."
  16. cat > /etc/wireguard/wg0.conf <<EOF
  17. [Interface]
  18. PrivateKey = $(cat /etc/wireguard/wg0.key)
  19. Address = 10.0.0.1/24
  20. ListenPort = 51820
  21. EOF

  22. # 启用并启动WireGuard服务
  23. echo "启用并启动WireGuard服务..."
  24. systemctl enable wg-quick@wg0
  25. systemctl start wg-quick@wg0

  26. # 显示关键信息
  27. echo -e "\nWireGuard服务器已成功配置!"
  28. echo "服务器公钥: $(cat /etc/wireguard/wg0.pub)"
  29. echo "服务器配置文件: /etc/wireguard/wg0.conf"
  30. echo "服务器地址: 10.0.0.1/24"
  31. echo "监听端口: 51820"
  32. echo -e "\n要添加客户端,请使用以下命令创建客户端配置:\nwg genkey | tee client.key | wg pubkey > client.pub"
复制代码
服务器配置文件: /etc/wireguard/wg0.conf



使用说明
  • 将脚本保存为 wireguard-server-setup.sh
  • 赋予执行权限: chmod +x wireguard-server-setup.sh
  • 运行脚本: ./wireguard-server-setup.sh
脚本特点
  • 专为 Debian 12.0 64bit 设计
  • 使用固定端口 51820 (无需配置防火墙)
  • 服务器地址: 10.0.0.1/24
  • 不包含 iPerf3 安装
  • 自动创建配置文件并启动服务
  • 显示关键信息,方便添加客户端
添加客户端步骤
  • 在客户端机器上运行: wg genkey | tee client.key | wg pubkey > client.pub
  • 将生成的客户端公钥添加到服务器配置文件:
  • 重启 WireGuard 服务: systemctl restart wg-quick@wg0

此脚本将快速部署一个基本的 WireGuard 服务器,无需额外配置,可立即用于测试和开发环境。


要添加客户端,请使用以下命令创建客户端配置:wg genkey | tee client.key | wg pubkey > client.pub

  • wg genkey - 这是WireGuard的命令,用于生成一个随机的私钥。这个私钥是一个长字符串,用于身份验证和加密。

  • | tee client.key - 这个管道将wg genkey的输出(即私钥)写入到文件client.key中,同时保持输出到标准输出(屏幕)。tee命令的作用是将输入同时输出到屏幕和文件中。

  • | wg pubkey - 这个管道将上一个命令(wg genkey)的输出(私钥)作为输入,通过wg pubkey命令生成对应的公钥。

  • > client.pub - 这个重定向将wg pubkey的输出(即公钥)写入到文件client.pub中。


所以,整个命令的作用是:

  • 生成一个随机的私钥
  • 将私钥保存到client.key文件中
  • 从私钥生成对应的公钥
  • 将公钥保存到client.pub文件中

在WireGuard中,每个节点(服务器和客户端)都需要有自己的私钥和公钥对。私钥必须保密,只能存储在本地,而公钥可以共享给其他节点,用于身份验证和加密通信。

具体来说:

  • 服务器的私钥存储在服务器的配置文件中
  • 服务器的公钥存储在客户端的配置文件中
  • 客户端的私钥存储在客户端的配置文件中
  • 客户端的公钥存储在服务器的配置文件中

这样,当客户端连接到服务器时,服务器可以使用客户端的公钥验证客户端的身份,客户端也可以使用服务器的公钥验证服务器的身份。

这个命令是WireGuard客户端配置的常见步骤,用于生成客户端的密钥对,以便将其添加到服务器配置中。

让我确认一下知识库中是否有相关信息:

在[2]中,我看到: "生成服务器和客户端的公私钥对是必要的 ,需妥善保管以确保通信安全。在Ubuntu环境中,当您使用WireGuard时,生成服务器和客户端的公私钥对是至关重要的。为了生成服务器的私钥,您可以在 /etc/wireguard 目录下执行 wg genkey 命令,并将输出重定向到 server_privatekey 文件中。随后,通过 wg pubkey 命令,您可以生成对应的公钥,并将其保存到 server_publickey 文件中。"

在[2]的后面部分还提到: "在Ubuntu系统上,你可以使用WireGuard的命令行工具来生成新的秘钥对。执行以下命令将生成一个私钥,并将其输出到 client0_privatekey 文件中,同时还会生成对应的公钥并保存到 client0_publickey 文件中: /etc/wireguard$ wg genkey | tee client0_privatekey | wg pubkey > client0_publickey"

在[6]中也提到: "# 服务端: wg genkey | tee server.key | wg pubkey > server.pub # 客户端: wg genkey | tee client.key | wg pubkey > client.pub"

在[7]中也提到: "运行下面的命令,生成公钥和私钥: wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey"

所以,这个命令是WireGuard中生成客户端密钥对的标准方法。

总结一下,这个命令的作用是:

  • 生成一个客户端私钥
  • 将私钥保存到client.key文件中
  • 从私钥生成公钥
  • 将公钥保存到client.pub文件中

这个命令是WireGuard客户端配置的第一步,生成的密钥对用于后续的客户端配置和服务器端的配置。







wg genkey | tee client.key | wg pubkey > client.pub 命令详解

这个命令是WireGuard中用于生成客户端密钥对的标准命令,具体作用如下:

命令分解
  • wg genkey - 生成一个随机的私钥(长字符串)


    • 这是WireGuard命令,用于生成用于身份验证和加密的私钥
    • 私钥是敏感信息,必须保密,只能存储在本地
  • | tee client.key - 将私钥同时写入文件和输出到屏幕


    • tee是Linux命令,作用是将标准输入同时输出到屏幕和文件
    • 这里将私钥写入client.key文件,同时也显示在屏幕上
  • | wg pubkey - 从私钥生成对应的公钥


    • wg pubkey是WireGuard命令,用于将私钥转换为公钥
    • 公钥可以安全地共享给其他节点
  • > client.pub - 将公钥保存到client.pub文件


    • 重定向操作,将公钥内容写入client.pub文件

作用总结

这个命令完成了以下任务:

  • 生成客户端的私钥并保存到client.key
  • 从私钥生成公钥
  • 将公钥保存到client.pub
为什么需要这个操作

在WireGuard中,每个节点(服务器和客户端)都需要有自己的密钥对:

  • 私钥:必须保密,只存储在本地,用于身份验证和加密
  • 公钥:可以安全地共享给其他节点,用于验证身份和解密通信

具体使用场景:

  • 服务器端需要客户端的公钥(client.pub)来验证客户端身份
  • 客户端需要服务器的公钥来验证服务器身份
  • 客户端的私钥(client.key)用于客户端配置







临时交流 ⇨点我留言
【附件·直下】非必要·勿注册

联系我们 ( 京ICP备16001788号 ) | 网站地图 | 2012- UID.Cool |

GMT+8, 2026-1-2 17:32

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表