2015-06-28 33 views
1

我在我的Vagrant机器中运行Neo4j实例。我把这些线为neo4j.properties与远程shell启动服务器Neo4j通过vagrant问题的远程shell

remote_shell_enabled=true 
remote_shell_host=0.0.0.0 
remote_shell_port=1337 

我开始的Neo4j服务器的命令bin/neo4j start

在那之后,我用内无业游民Neo4j的外壳连接到远程shell,它工作正常。

我的端口1337转发到主机与此在Vagrantfile

config.vm.network :forwarded_port, guest: 1337, host: 9255 

然后我的主机(MacOS的),我用Neo4j的外壳连接到服务器,但我不

$ bin/neo4j-shell -port 9255 -v 
Unable to find any JVMs matching version "1.7". 
ERROR (-v for expanded information): 
    Connection refused 
java.rmi.ConnectException: Connection refused to host: 10.0.2.15; nested exception is: 
    java.net.ConnectException: Operation timed out 
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619) 
    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216) 
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202) 
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:130) 
    at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194) 
    at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148) 
    at com.sun.proxy.$Proxy1.welcome(Unknown Source) 
    at org.neo4j.shell.impl.AbstractClient.sayHi(AbstractClient.java:254) 
    at org.neo4j.shell.impl.RemoteClient.findRemoteServer(RemoteClient.java:70) 
    at org.neo4j.shell.impl.RemoteClient.<init>(RemoteClient.java:62) 
    at org.neo4j.shell.impl.RemoteClient.<init>(RemoteClient.java:45) 
    at org.neo4j.shell.ShellLobby.newClient(ShellLobby.java:178) 
    at org.neo4j.shell.StartClient.startRemote(StartClient.java:302) 
    at org.neo4j.shell.StartClient.start(StartClient.java:179) 
    at org.neo4j.shell.StartClient.main(StartClient.java:124) 
Caused by: java.net.ConnectException: Operation timed out 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
    at java.net.Socket.connect(Socket.java:589) 
    at java.net.Socket.connect(Socket.java:538) 
    at java.net.Socket.<init>(Socket.java:434) 
    at java.net.Socket.<init>(Socket.java:211) 
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40) 
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:148) 
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613) 
    ... 14 more 

那个流浪汉机器没有防火墙,我仍然能够连接到Web界面

+0

也许类似的东西像http://stackoverflow.com/questions/28974592/strange-neo4j-shell-issue-connecting-to-neo4j-in-a-docker-instance –

+0

似乎相似,但是,我试图设置conf像答案但没有成功 – tmtxt

回答

0

我仍然不想解决这个问题,但我发现另一个解决办法,所以我会张贴在这里。我们可以使用ssh隧道假装我们从该服务器连接到本地主机。使用SSH直接从远程主机

ssh [email protected] /path/to/neo4j-shell

或执行命令,如果你使用的是游民

vagrant ssh -c '/path/to/neo4j-shell'

1

UPDATE

圣## @ **(*我在6个小时以后才开始工作!使用默认配置Neo4j只接受本地连接。我不是网络技术专家,但显然neo4j可以告诉你po rt转发的连接是非本地的,并拒绝它们。要解决,你需要配置你的neo4j.conf文件接受非本地连接

# To accept non-local connections, uncomment this line: 
dbms.connectors.default_listen_address=0.0.0.0 

# You also need to remove the 'advertised_address' from each connector, 
# so that only the port is specified 
# i.e. my conf file originally had dbms.connector.bolt.listen_address=localhost:7472 
# I changed it to dbms.connector.bolt.listen_address=:7472 

# Bolt connector 
dbms.connector.bolt.enabled=true 
dbms.connector.bolt.listen_address=:7472 

# HTTP Connector. There must be exactly one HTTP connector. 
dbms.connector.http.enabled=true 
dbms.connector.http.listen_address=:7474 

# HTTPS Connector. There can be zero or one HTTPS connectors. 
dbms.connector.https.enabled=false 
dbms.connector.https.listen_address=:7473 

当然,除了这一切,你需要有端口转发正确设置你的vagrantfile。奇怪的是,我发现我需要确保我分享了每个端口neo4j正在广播(http,https,bolt),否则与Web控制台存在一些间歇性连接问题。这就是说,我现在可以通过neo4j-shellcypher-shellweb console正确连接 - 全部来自我的主机。

原始

我遇到了类似的问题。在你的情况下,输出错误包括Unable to find any JVMs matching version "1.7".bin/neo4j-shell文件是用Java编写的,我相信(或者它启动的shell可能依赖于Java)。主机需要安装java开发工具包(JDK)才能运行该命令。尝试安装JDK并再次运行它。

这一切都这样说,我DO已经安装了JDK我的机器上(现在的“1.8”)和我遇到类似的问题时,我尝试从我的主机上运行bin/cypher-shell(已取代bin/neo4j-shell)机器(mac):Unable to connect to localhost:7687, ensure the database is running and that there is a working network connection to it.当我尝试从vagrant内连接时,我不会遇到任何错误。我的vagrantfile包含config.vm.network "forwarded_port", guest: 7687, host: 7687, host_ip: "127.0.0.1"

我还会注意到,虽然我可以在vagrant连接到Neo4j的Web界面,我无法连接到Web界面我的主机上(即端口转发似乎并不奏效任何东西neo4j相关) 。但是,我可以连接到与我的主机相同的vagrant box运行的Rails应用程序。虽然我还没有尝试过,但我想我可以通过我的Rails应用程序间接访问neo4j数据库(因为我的Rails应用程序正确转发端口)。