這應該是可能的和大多數Java SSH API,作爲其簡單地連接到所述第一和然後連接一個隧道的輸入/輸出到一個新的客戶端實例後向前執行端口到所述第二主機的情況。
但是,使用J2SSH Maverick開放源代碼API,我們可以很容易地爲您做轉發設置。
下面的代碼演示瞭如何執行此操作,首先打開與第一臺服務器的連接。然後一旦連接調用openRemoteClient,它將爲第二個返回一個SshClient對象。在後臺使用端口轉發連接第二個客戶端。
該示例使用密碼認證,但您當然可以使用任何類型的認證。
// Create initial connection
SshConnector con = SshConnector.createInstance();
SshClient ssh = con.connect(new SocketTransport("host.external", 22), "ubuntu");
// Authenticate
PasswordAuthentication pwd = new PasswordAuthentication();
pwd.setPassword("xxxxxxx");
ssh.authenticate(pwd);
// Created forwarded connection
SshClient remoteClient = ssh.openRemoteClient("host.internal", 22, "ubuntu");
// Now you have to authenticate the second client
.....
您是否嘗試過從server1執行[email protected]?如果您只是從server1執行ssh server2,您可能沒有訪問權限/特權... – StackFlowed
您很可能會將server1設置爲代理並使用端口轉發。這樣做相對容易。在.ssh/config文件中,您基本上爲server2設置了一個別名,並告訴ssh使用server1作爲連接的代理。查看:[此鏈接](https://help.ubuntu.com/community/SSH/OpenSSH/PortForwarding)。 – PapaBuduiit
爲什麼你想製作一個程序?你可以只使用ProxyCommand連接到Server1和運行netcat來使Server2上提供 – Joni