Bitcoind

無法訪問遠端比特幣 RPC 伺服器

  • August 11, 2019

我得到了帶有 ubuntu 18.04 的 vps,上面設置了 ssh 訪問和 bitoind。這是我的 bitcoin.conf 文件:

testnet=1
prune=35840
maxconnections=12
muxuploadtarget=20
daemon=1
server=1
rpcclienttimeout=5000
rpcuser=[usr]
rpcpassword=[psw]
rpcallowip=0.0.0.0/0

這是我的 RPC 呼叫:

curl --data '{"jsonrpc":"2.0","method":"getwalletinfo","params":[]}' http://[usr]:[psw]@localhost:18332

當它在 vps 終端中給出時,返回 json 響應就像它的意思一樣,但是當我在另一台機器上收到這個請求時:

curl --data '{"jsonrpc":"2.0","method":"getwalletinfo","params":[]}' http://[usr]:[psw]@[myvpsip]:18332

終端返回:

curl: (7) Failed to connect to [myvpsip]: Connection refused

這是我在 vps 上“sudo netstat -tuwpln”的結果,僅使用 bitcoind: 粘貼結果:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:18332         0.0.0.0:*               LISTEN      2027/bitcoind       
tcp        0      0 0.0.0.0:18333           0.0.0.0:*               LISTEN      2027/bitcoind       
tcp6       0      0 ::1:18332               :::*                    LISTEN      2027/bitcoind       
tcp6       0      0 :::18333                :::*                    LISTEN      2027/bitcoind   

已經檢查過防火牆,它的狀態為:非活動。iptables 也是空的。通過 ssh 連接,因此伺服器能夠。ping也不錯。我仍然認為問題出在 bitcoin.conf 中,但不知道具體在哪裡。任何人都可以幫助解決這個問題嗎?我會非常感激的

PS 在 python 上編寫腳本,其中一部分是比特幣支付,所以真的需要解決這個問題。如果有更簡單的付款方式想熟悉。

請記住,將節點的 RPC 介面暴露給整個網際網路被認為是不安全的。RPC 未加密,因此您發送到節點的任何內容都將以明文形式供中間的任何人查看。這包括您的 RPC 使用者名、RPC 密碼和錢包密碼等內容。如果攻擊者看到任何此類資訊,他們可以在您的節點上執行命令,包括移動儲存在其錢包中的任何比特幣的命令。攻擊者還可以執行其他操作,例如強制您的節點進入替代區塊鍊或強制您的節點僅連接到惡意對等方。

與其公開你的節點的 RPC 介面,不如設置一個 VPN,讓你的 VPS 和其他電腦訪問你的節點的 RPC 介面,並將 RPC 介面暴露給 VPN。這要安全得多,因為 RPC 將被加密,並且只有您 VPN 中的電腦才能訪問您的節點。


您看到該錯誤的原因是比特幣核心不再綁定到0.0.0.0/0設置-rpcallowip=0.0.0.0/0的時間。您必須明確告訴它綁定到0.0.0.0using -rpcbind=0.0.0.0。由於上述原因,此功能已被刪除。我強烈建議您不要這樣做,而是設置一個 VPN,然後將您的節點綁定到該 VPN 中的 IP 地址。

如果有人在訪問位於 vps 上的 bitcoin-rpc 伺服器時遇到問題,我認為最好的方法是通過 shh 重定向埠。通過這個命令:

ssh [user]@[host] -p [port] -L 18332:127.0.0.1:18332

您將能夠通過您的電腦終端作為 localhost 向 testnet rpc-server 發送命令。

引用自:https://bitcoin.stackexchange.com/questions/88947