目前我们有2台Unix服务器A和B.要连接到B服务器,最初我们先用连接服务器A然后在Unix提示符下使用SSH登录JumpHost B.
现在我正在开发一个简单的Java工具,它必须从服务器B下载文件。
在我从下面的链接获得的示例代码中,如果我传递B服务器的主机详细信息,则主机连接失败。
当我传递A服务器的主机详细信息时,连接成功并能够下载服务器A中的文件。
我需要有关如何通过Java连接服务器A和服务器B以及从服务器B下载文件的指针。
答案 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;。