使用PuTTY轻松搭建以太坊测试环境,手把手指南

投稿 2026-04-07 20:03 点击数: 2

以太坊作为全球领先的智能合约平台,其测试环境对于开发者学习、应用测试、合约部署与调试至关重要,本文将详细介绍如何使用PuTTY这一轻量级SSH客户端,在远程服务器上搭建一个功能完善的以太坊测试环境,整个过程将涵盖服务器连接、Geth客户端安装与配置、私有链启动以及基本交互等步骤。

准备工作

在开始之前,请确保你已经具备以下条件:

  1. 一台远程服务器:可以是云服务器(如AWS, Google Cloud, 阿里云等)或本地局域网内的一台始终开机的计算机,操作系统推荐Linux(如Ubuntu)。
  2. 服务器的公网IP地址:用于PuTTY连接。
  3. SSH登录凭据:服务器的用户名(如ubuntu)和密码,或者SSH私钥。
  4. 已安装PuTTY的本地计算机:PuTTY是一款免费的SSH和telnet客户端,适用于Windows平台,你可以从其官网https://www.putty.org/ 下载并安装。

使用PuTTY连接远程服务器

  1. 启动PuTTY:在本地计算机上打开PuTTY。
  2. 输入服务器信息
    • 在 "Host Name (or IP address)" 字段中,输入你的服务器的公网IP地址。
    • 确认 "Port" 字段中的端口号为默认的22(SSH默认端口)。
    • 在 "Connection type" 中选择 "SSH"。
    随机配图
>
  • 连接服务器
    • 点击 "Open" 按钮。
    • 首次连接时,PuTTY会显示一个安全警告,询问是否信任该主机的主机密钥,选择 "Yes" 即可。
    • 会提示你输入用户名和密码(如果设置了SSH密钥,则可能需要使用PuTTYgen加载私钥并连接),输入完成后,按回车键,如果凭据正确,你将成功登录到远程服务器的命令行界面。
  • 安装Geth客户端

    Geth是以太坊官方的Go语言实现客户端,是我们搭建私有测试环境的核心工具。

    1. 更新系统包列表

      sudo apt update
    2. 安装必要的依赖

      sudo apt install -y build-essential libssl-dev libffi-dev python3-dev
    3. 安装Geth: 以Ubuntu/Debian系统为例,可以通过以下PPA(Personal Package Archive)安装最新版本的Geth:

      sudo add-apt-repository -y ppa:ethereum/ethereum
      sudo apt update
      sudo apt install -y ethereum

      安装完成后,可以通过以下命令验证Geth是否安装成功:

      geth version

    配置并启动私有以太坊测试网络

    我们将创建一个私有链,这样你可以完全控制网络,无需担心测试币的真实性。

    1. 创建数据目录: 用于存储区块链数据。

      mkdir ~/ethereum_data
    2. 初始化创世区块: 需要一个创世区块配置文件(genesis.json),我们可以创建一个简单的自定义创世文件:

      cd ~/ethereum_data
      nano genesis.json

      在打开的编辑器中,粘贴以下内容(这是一个基本的PoA权威证明创世配置,适合测试):

      {
        "config": {
          "chainId": 1337, // 私有链的ID,避免与主网冲突
          "homesteadBlock": 0,
          "eip155Block": 0,
          "eip158Block": 0,
          "byzantiumBlock": 0,
          "constantinopleBlock": 0,
          "petersburgBlock": 0,
          "istanbulBlock": 0,
          "berlinBlock": 0,
          "londonBlock": 0,
          "parisBlock": 0,
          "shanghaiBlock": 0,
          "cancunBlock": 0,
          "pragueBlock": 0,
          "verkleBlock": 0,
          "terminalTotalDifficulty": 0,
          "terminalTotalDifficultyPassed": true,
          "ethash": {},
          "istanbul": {
            "epoch": 30000,
            "policy": 0
          },
          "clique": {
            "period": 15,
            "epoch": 30000,
            "wasm": false
          },
          "dao": {
            "forkBlock": 0,
            "forkSupported": true
          },
          "gasLimit": 0x47b760,
          "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
          "eip1559": false,
          "eip1559Block": 0,
          "eip1581Block": 0,
          "eip1559ForkBlock": 0,
          "eip161aBlock": 0,
          "eip161bBlock": 0,
          "eip161cBlock": 0,
          "eip161dBlock": 0,
          "eip161eBlock": 0,
          "eip161fBlock": 0,
          "eip161gBlock": 0,
          "eip161hBlock": 0,
          "eip161iBlock": 0,
          "eip161jBlock": 0,
          "eip161kBlock": 0,
          "eip161lBlock": 0,
          "eip161mBlock": 0,
          "eip161nBlock": 0,
          "eip161oBlock": 0,
          "eip161pBlock": 0,
          "eip161qBlock": 0,
          "eip161rBlock": 0,
          "eip161sBlock": 0,
          "eip161tBlock": 0,
          "eip161uBlock": 0,
          "eip161vBlock": 0,
          "eip161wBlock": 0,
          "eip161xBlock": 0,
          "eip161yBlock": 0,
          "eip161zBlock": 0,
          "eip162Block": 0,
          "eip163Block": 0,
          "eip164Block": 0,
          "eip165Block": 0,
          "eip166Block": 0,
          "eip167Block": 0,
          "eip168Block": 0,
          "eip169Block": 0,
          "eip170Block": 0,
          "eip171Block": 0,
          "eip172Block": 0,
          "eip173Block": 0,
          "eip174Block": 0,
          "eip175Block": 0,
          "eip176Block": 0,
          "eip177Block": 0,
          "eip178Block": 0,
          "eip179Block": 0,
          "eip180Block": 0,
          "eip181Block": 0,
          "eip182Block": 0,
          "eip183Block": 0,
          "eip184Block": 0,
          "eip185Block": 0,
          "eip186Block": 0,
          "eip187Block": 0,
          "eip188Block": 0,
          "eip189Block": 0,
          "eip190Block": 0,
          "eip191Block": 0,
          "eip192Block": 0,
          "eip193Block": 0,
          "eip194Block": 0,
          "eip195Block": 0,
          "eip196Block": 0,
          "eip197Block": 0,
          "eip198Block": 0,
          "eip199Block": 0,
          "eip200Block": 0,
          "eip201Block": 0,
          "eip202Block": 0,
          "eip203Block": 0,
          "eip204Block": 0,
          "eip205Block": 0,
          "eip206Block": 0,
          "eip207Block": 0,
          "eip208Block": 0,
          "eip209Block": 0,
          "eip210Block": 0,
          "eip211Block": 0,
          "eip212Block": 0,
          "eip213Block": 0,
          "eip214Block": 0,
          "eip215Block": 0,
          "eip216Block