Bitcoin Forum

Bitcoin => Bitcoin Technical Support => Topic started by: Marko on September 27, 2010, 04:50:25 PM



Title: Remote RPC access
Post by: Marko on September 27, 2010, 04:50:25 PM
Hello,

I'm have a client that calls getinfo over the rpc interface. Everything works fine when host=localhost.
However, when trying to get bitcoin at another host i cannot.
I read the wiki and it says the interface only accepts requests from 127.0.0.1. Is this still the case? Is there a setting to override this?

If not, i'm probably going to have to write a 'proxy' app that i would deploy to each machine running bitcoin. Would prefer not to do this :(

Thanks,
Marko


Title: Re: Remote RPC access
Post by: doublec on September 28, 2010, 12:51:22 AM
I read the wiki and it says the interface only accepts requests from 127.0.0.1. Is this still the case? Is there a setting to override this?

This is still the case and I don't believe there is a setting to override it. It's hardcoded in the source. Instead of writing a 'proxy' app you can use SSH to tunnel. For example, if your bitcoin instance is running on 'example.com' and that machine is running an ssh server, you can tunnel to it from another machine with:

ssh -N example.com -L  9481:localhost:9481

Now you can use the RPC interface on your local machine to port 9481 and it will be tunnelled over an encrypted SSH session to the machine running the bitcoin RPC server.

You want to encrypt the connection because the JSON-RPC password is sent in clear text (it's actually base 64 encoded but basically it's the equivalent of clear text).


Title: Re: Remote RPC access
Post by: nelisky on September 28, 2010, 12:55:29 AM
I read the wiki and it says the interface only accepts requests from 127.0.0.1. Is this still the case? Is there a setting to override this?

This is still the case and I don't believe there is a setting to override it. It's hardcoded in the source. Instead of writing a 'proxy' app you can use SSH to tunnel. For example, if your bitcoin instance is running on 'example.com' and that machine is running an ssh server, you can tunnel to it from another machine with:

ssh -N example.com -L  9481:localhost:9481

Now you can use the RPC interface on your local machine to port 9481 and it will be tunnelled over an encrypted SSH session to the machine running the bitcoin RPC server.

You want to encrypt the connection because the JSON-RPC password is sent in clear text (it's actually base 64 encoded but basically it's the equivalent of clear text).

Can you compile your own bitcoin? The latest svn has an option to allow binding to other interfaces, not just localhost. If not the next version (0.3.13) is supposed to have that.


Title: Re: Remote RPC access
Post by: theymos on September 28, 2010, 12:58:54 AM
There's an "-rpcallowip=" switch in SVN, which allows you to access RPC from the specified IP addresses. This is not safe from MITM attacks, however.


Title: Re: Remote RPC access
Post by: Marko on September 28, 2010, 01:58:51 PM
Hey all...Thanks for all the feedback

The ssh method is great. However, all the machines are windows machines so i'd have to do an install on all of them. Better than writing a proxy app for sure though...

I saw the entry from a few weeks ago about the -rpcallowip switch. I'll compile my own version if i have to. That said, i'd prefer to have an official release. Anyone have an idea when the next version would be posted?

As far as the MITM attack possibility, this only presents a problem if the network i'm exposing to is not trusted. Or is there some other effect i'm missing?


Title: Re: Remote RPC access
Post by: satoshi on September 30, 2010, 06:27:41 PM
It can be safe if you're using it over your own LAN, like if you have multiple servers at a location that talk to each other.

0.3.13 RC1 is available for Windows:
http://www.bitcoin.org/download/bitcoin-0.3.13-rc1-win32-setup.exe


Title: Re: Remote RPC access
Post by: LZ on October 01, 2010, 01:19:04 AM
And now release is available: link (https://bitcointalk.org/index.php?topic=1327.0). :)