リモートRPCアクセス
こんにちは、
RPCインターフェースを介してgetinfoを呼び出すクライアントがある。host=localhostの場合はすべて正常に動作する。 しかし、別のホストにあるBitcoinにアクセスしようとするとできない。Wikiを読んだところ、インターフェースは127.0.0.1からのリクエストのみを受け付けるとのことだ。これは今も変わらないのかな? オーバーライドする設定はある?
なければ、各マシンにデプロイする「プロキシ」アプリを書かなければならないだろう。できれば避けたいのだが 😞
ありがとう。
Marko
Wikiを読んだところ、インターフェースは127.0.0.1からのリクエストのみを受け付けるとのことだ。これは今も変わらないのかな? オーバーライドする設定はある?
まだ変わっておらず、オーバーライド設定はないと思う。ソースにハードコーディングされている。「プロキシ」アプリを書く代わりに、SSHトンネルが使える。例えばBitcoinインスタンスが「example.com」で動いておりSSHサーバーがあるなら、別のマシンからこうトンネルできる:
ssh -N example.com -L 9481:localhost:9481
これでローカルマシンのポート9481のRPCインターフェースが、暗号化されたSSHセッション経由でBitcoin RPCサーバーにトンネルされる。
JSON-RPCパスワードはクリアテキストで送信されるため(base64エンコードだが実質クリアテキスト同等)、接続の暗号化が必要だ。
MMarkoの投稿(2010年9月27日16:50 UTC)Wikiを読んだところ、インターフェースは127.0.0.1からのリクエストのみを受け付けるとのことだ。これは今も変わらないのかな? オーバーライドする設定はある?
まだ変わっておらず、オーバーライド設定はないと思う。ソースにハードコーディングされている。「プロキシ」アプリを書く代わりに、SSHトンネルが使える。例えばBitcoinインスタンスが「example.com」で動いておりSSHサーバーがあるなら、別のマシンからこうトンネルできる:
ssh -N example.com -L 9481:localhost:9481
これでローカルマシンのポート9481のRPCインターフェースが、暗号化されたSSHセッション経由でBitcoin RPCサーバーにトンネルされる。
JSON-RPCパスワードはクリアテキストで送信されるため(base64エンコードだが実質クリアテキスト同等)、接続の暗号化が必要だ。
自分でBitcoinをコンパイルできる? 最新のSVNにはlocalhostだけでなく他のインターフェースにバインドするオプションがある。できなければ、次のバージョン(0.3.13)にそれが含まれるはずだ。
SVNに -rpcallowip= スイッチがあり、指定したIPアドレスからRPCにアクセスできる。ただし、MITM攻撃に対しては安全ではない。
みなさん……フィードバックありがとう
SSHの方法は素晴らしい。ただし、マシンはすべてWindowsなので、すべてにインストールする必要がある。プロキシアプリを書くよりはましだけど……
数週間前の -rpcallowipスイッチに関するエントリを見た。必要なら自分でコンパイルする。とはいえ、公式リリースの方がいい。次のバージョンがいつリリースされるか、知っている人はいる?
MITM攻撃の可能性については、公開するネットワークが信頼されていない場合にのみ問題になる。それとも、見落としている他の影響があるのかな?
自分のLAN上で使用する場合、例えばある場所に複数のサーバーがあって互いに通信する場合は安全だ。
0.3.13 RC1がWindows版で利用可能だ:http://www.bitcoin.org/download/bitcoin-0.3.13-rc1-win32-setup.exe