使用SSH通过Java中的另一台服务器连接到服务器

时间:2016-12-19 11:41:26

标签: java ssh connection

目前我们有2台Unix服务器A和B.要连接到B服务器,最初我们先用连接服务器A然后在Unix提示符下使用SSH登录JumpHost B.

现在我正在开发一个简单的Java工具,它必须从服务器B下载文件。

在我从下面的链接获得的示例代码中,如果我传递B服务器的主机详细信息,则主机连接失败。

当我传递A服务器的主机详细信息时,连接成功并能够下载服务器A中的文件。

我需要有关如何通过Java连接服务器A和服务器B以及从服务器B下载文件的指针。

SSH Connection Java

2 个答案:

答案 0 :(得分:0)

您可以使用overthere库。首先导入依赖项:

<dependency>
    <groupId>com.xebialabs.overthere</groupId>
    <artifactId>overthere</artifactId>
    <version>4.4.2</version>
</dependency>

...然后连接到您的服务器(A,B等):

ConnectionOptions options = new ConnectionOptions();
options.set(ConnectionOptions.PASSWORD, passwd);
options.set(ConnectionOptions.CONNECTION_TIMEOUT_MILLIS, connectionTimeout);
options.set(ConnectionOptions.USERNAME, login);
options.set(ConnectionOptions.ADDRESS, host);
options.set(ConnectionOptions.OPERATING_SYSTEM, OperatingSystemFamily.UNIX);
options.set(SshConnectionBuilder.CONNECTION_TYPE, SshConnectionType.SCP);
OverthereConnection connection = Overthere.getConnection(SshConnectionBuilder.SSH_PROTOCOL, options);

答案 1 :(得分:0)

您实际需要的是Overthere Jumpstation中的内容。

你想这样连接:client - &gt;服务器A - &gt;服务器B

使用覆盖,您可以按如下方式设置该连接:

ConnectionOptions jumpStationOptions = new ConnectionOptions();
jumpStationOptions.set(ConnectionOptions.ADDRESS, "Server A");
jumpStationOptions.set(ConnectionOptions.USERNAME, "Username A");
jumpStationOptions.set(ConnectionOptions.PASSWORD, "Password A");
jumpStationOptions.set(ConnectionOptions.PROTOCOL, "ssh-jumpstation");
jumpStationOptions.set(ConnectionOptions.OPERATING_SYSTEM, OperatingSystemFamily.UNIX);
ConnectionOptions options = new ConnectionOptions();
options.set(ConnectionOptions.PASSWORD, "Password B");
options.set(ConnectionOptions.USERNAME, "Username B");
options.set(ConnectionOptions.ADDRESS, "Server B");
options.set(ConnectionOptions.OPERATING_SYSTEM, OperatingSystemFamily.UNIX);
options.set(SshConnectionBuilder.CONNECTION_TYPE, SshConnectionType.SCP);
options.set(ConnectionOptions.JUMPSTATION, jumpStationOptions);
OverthereConnection connection = Overthere.getConnection(SshConnectionBuilder.SSH_PROTOCOL, options);

此设置将配置&#34;服务器A&#34;用作跳转站到达服务器B&#34;。