Java SSH和localhost

Java SSH和localhost,java,ssh,localhost,scp,Java,Ssh,Localhost,Scp,好的,我有一个java程序,需要在我的大学机器上编译和运行。我一直在家里使用笔记本电脑,我认为这很简单: 处理文件 把它放到我的大学机器上 通过ssh登录 运行脚本 现在一切都好了。脚本运行并编译文件,但结果是它应在浏览器中显示。我一直在使用chrome并键入它,但它说:此网页不可用。你知道我要做什么吗 localhost指运行浏览器的本地计算机。如果站点要在大学服务器上提供服务,则您的笔记本电脑将无法通过localhost访问该站点。您需要使用将文件部署到的服务器的IP/主机名,端口为4000

好的,我有一个java程序,需要在我的大学机器上编译和运行。我一直在家里使用笔记本电脑,我认为这很简单:

  • 处理文件
  • 把它放到我的大学机器上
  • 通过ssh登录
  • 运行脚本

  • 现在一切都好了。脚本运行并编译文件,但结果是它应在浏览器中显示。我一直在使用chrome并键入它,但它说:此网页不可用。你知道我要做什么吗

    localhost
    指运行浏览器的本地计算机。如果站点要在大学服务器上提供服务,则您的笔记本电脑将无法通过
    localhost
    访问该站点。您需要使用将文件部署到的服务器的IP/主机名,端口为4000。

    使用特定IP地址而不是本地主机,并通过执行netstat-an | grep 4000检查您的程序是否正确侦听4000端口号。有几种可能性

    首先,您必须了解
    localhost
    始终是运行程序的当前计算机。在这种情况下,您的浏览器。如果浏览器在笔记本电脑上运行,那么它将在笔记本电脑上查找要连接的服务器

    可能的解决办法:

    通过ssh使用文本浏览器

    如果您希望从服务器获得的输出很简单,那么很多时候您可以使用命令行实用程序,例如
    wget
    curl
    lynx
    ,来获得它。如果您在ssh会话中,
    wget
    curl
    lynx
    正在服务器上运行,而不是在笔记本电脑上运行。因此,他们将
    localhost
    视为大学服务器,并将正确地为您提供其输出(当然,前提是您的程序工作正常)

    使用服务器的IP

    如果您的程序在您的大学服务器上运行,并且您用于连接的IP地址(如果您使用主机名进行连接,则主机名解析为的地址)是实际计算机的地址,而不是防火墙的地址,并且大学防火墙没有阻止访问该计算机上的端口4000,您可能可以使用
    http://address.of.university.server:4000/

    使用端口转发

    ssh
    可以为您做的一件事是端口转发,这意味着连接到笔记本电脑上端口X的任何东西都会被定向到ssh目标(大学机器)上可访问的机器上的端口Y。这样,您可以将笔记本电脑上的端口4000设置为服务器上的端口4000,以便本地浏览器将其请求发送到笔记本电脑,但正在运行的ssh会话会将其转发到服务器。例如

    ssh-L4000:localhost:4000地址.of.university.server
    

    只要此ssh会话正在运行,您就可以连接到
    http://localhost:4000
    调用将到达运行在您大学计算机上的端口4000上的服务器。

    您可能应该使用,但我输入的主机名中有我的用户ID。在终端,它会询问我的password@codeav3请在没有用户ID或密码的情况下尝试。uid和pass特别适用于通过SSH和/或SCP登录的过程,不一定适用于HTTP。刚刚尝试过,它仍然表示网页不可用。所以我尝试过,但它仍然表示网页不可用。有什么想法吗?@codeav3对不起,应该是
    而不是
    /
    。我马上编辑。但如果这也失败了-服务器可能位于防火墙后面,您需要使用我的其他解决方案之一。好的,我再试了一次,结果出现在我的浏览器中:访问/Witter/时出现问题。原因:构造服务“TimingFilter”时出现异常:调用服务生成器方法uk.ac.warwick.java.cs126.services.AppModule.buildTimingFilter(Logger)时出错(位于AppModule.java:88)(对于服务“TimingFilter”):uk/ac/warwick/java/cs126/services/AppModule$1,下面有一个长长的“由@codeav3引起的”列表,您成功地访问了应用程序,现在必须对其进行调试。