Go-Ethereum

如何將 Geth 的 RPC 伺服器公開給外部連接?

  • March 6, 2022

我想建立一個可以連接到單個 Geth 節點的應用程序專用網路。我有哪些選項可以公開 RPC 伺服器?

我正在執行這個:(geth --rpc --testnet有時我使用--dev

我怎樣才能實現以下目標:

  • 允許特定的公鑰/私鑰訪問節點
  • 允許任何人訪問節點
  • 允許 IP 範圍訪問節點

可能的解決方案?

這是否只需要使用像 Nginx 這樣的伺服器執行反向代理?

您可以輕鬆安全地從應用程序伺服器創建到您的 ETH 節點的 SSH 隧道。這樣一來,ETH 節點就會被愚弄,認為連接來自本地主機,並且您可以確保只有私鑰的持有者才能訪問。

這是有關如何設置基於證書的身份驗證的說明的連結

設置證書身份驗證很重要,否則您無法自動化該過程。

設置完成後,您可以通過執行以下命令來創建隧道:

ssh -f -N -L 9545:localhost:8545 remoteUser@remotehost.remotedomain.tld

在我的範例中,埠號是不同的,以便讀者能夠區分它們。絕對沒有其他理由使它們與眾不同。

發出此命令後,所有到port 9545on 的流量都localhost將被轉發到remotehost.remotedomain.tld:8545認為它來自localhost和目標的所有流量localhost:8545

這樣,您可以將您的 ETH 節點保留在防火牆後面,而不是向世界開放,但仍然集中功能。

為了在生產中使用它,您必須解決斷開 SSH 會話的問題。

  • 簡單的解決方案是配置
  • 更高級的解決方案是在無限循環中執行腳本,如此處所述

引用自:https://ethereum.stackexchange.com/questions/3163