[英]Connect a server through another server in putty/jump server using java
[英]Connect using SSH to a server through another server in Java
當前,我們有2個Unix服務器A和B。要連接到B服務器,最初我們是先連接服務器A,然后在Unix提示符下使用SSH登錄到JumpHostB。
現在,我正在使用Java開發的簡單工具,該工具必須從服務器B下載文件。
在下面的鏈接中獲得的示例代碼中,如果我傳遞了B服務器的主機詳細信息,則主機連接失敗。
當我傳遞A服務器的主機詳細信息時,連接成功,並且能夠下載服務器A中存在的文件。
我需要有關如何通過Java連接到服務器A和服務器B以及如何從服務器B下載文件的指針。
您可以使用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);
您真正要尋找的是Overthere Jumpstation中的功能。
您想要這樣連接:客戶端->服務器A->服務器B
使用overthere可以按如下方式建立該連接:
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);
此設置會將“服務器A”配置為用作到達“服務器B”的跳轉站。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.