如何連接到Java中的SSH服務器?我不需要/需要一個shell。我只想連接到SSH服務器並獲取file.txt
的內容。我怎樣才能做到這一點?與Java的SSH連接
回答
Java不支持原生地,但你可以使用庫像JSch做
看看Jaramiko。
您必須使用第三方庫 - JSch就是其中之一。谷歌與「Java ssh
」,你會得到很多其他選項。
您可以檢查JSSH,它是一個Java SSH庫。
http://www.ganymed.ethz.ch/ssh2/在Java中實現了ssh2客戶端。我用它來進行端口轉發。
使用JSch
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import java.io.*;
/**
*
* @author World
*/
public class SSHReadFile
{
public static void main(String args[])
{
String user = "john";
String password = "mypassword";
String host = "192.168.100.23";
int port=22;
String remoteFile="/home/john/test.txt";
try
{
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
System.out.println("Establishing Connection...");
session.connect();
System.out.println("Connection established.");
System.out.println("Crating SFTP Channel.");
ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
sftpChannel.connect();
System.out.println("SFTP Channel created.");
InputStream out= null;
out= sftpChannel.get(remoteFile);
BufferedReader br = new BufferedReader(new InputStreamReader(out));
String line;
while ((line = br.readLine()) != null)
System.out.println(line);
br.close();
}
catch(Exception e){System.err.print(e);}
}
}
輸出:
Establishing Connection...
Connection established.
Crating SFTP Channel.
SFTP Channel created.
This is content from file /home/john/test.txt
偉大的答案爲我工作,但只是使一定要關閉你打開的所有東西。 session.disconnect和sftpChannel.quit。 – 2015-12-16 19:49:51
當調用構造函數時,引發以下異常:'GRAVE:JSF1073:se ha interceptado javax.faces.event.AbortProcessingException durante el procesamiento de INVOKE_APPLICATION 5:UIComponent-ClientId = tipoMovimientoGrid:j_idt15,Mensaje = java.lang.ClassCircularityError:com/jcraft/jsch/JSchException java.lang.ClassCircularityError:com/jcraft/jsch/JSchException \t at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:178)' – Mauro 2016-08-24 17:53:58
嘗試連接Windows Server時出錯: com.jcraft.jsch.JSchException:java.net.ConnectException:連接被拒絕:連接 – 2017-10-03 11:31:10
我用這對我來說
Channel channel=session.openChannel("exec");
String command = "Your Command here";
((ChannelExec)channel).setCommand(command);
InputStream in=channel.getInputStream();
((ChannelExec)channel).setErrStream(System.err);
channel.connect();
- 1. SSH連接Java
- 2. MacRuby:與net/ssh的SSH連接?
- 3. 與MySQL的SSH連接
- 4. Java和SSH:保持連接
- 5. 與Eclipse RSE的連續SSH連接
- 6. 用於java連接的Ganymed SSH問題
- 7. 使用Java中的JTA連接到SSH
- 8. 無法與一個獨立的SSH客戶端連接/可使用Java SSH客戶端的瀏覽器連接
- 9. ssh連接上連接
- 10. mysqldump與shell腳本中的ssh連接
- 11. 與Git的SSH連接問題
- 12. 與網絡失去連接:: SSH :: Perl的
- 13. ssh與applekey上的privatekey連接
- 14. 與NAnt腳本的SSH連接
- 15. ssh連接
- 16. SSH連接`authorized_keys`
- 17. Haskell SSH連接
- 18. C#SSH連接
- 19. 無法使用Java配置ssh連接
- 20. 如何使用Expect與SSH連接?
- 21. Php:Mysql與ssh主機名連接
- 22. 如何執行與SSH連接bash
- 23. 無法與gitlab建立ssh連接
- 24. Net :: SSH :: Perl中的SSH連接超時
- 25. SSH反向連接
- 26. ssh連接超時
- 27. Jelastic Apache SSH連接
- 28. ssh連接拒絕
- 29. SSH連接超時
- 30. SSH連接重載
工作,我寧願人們不要使用Ganymed,因爲它不再保持。 – timonti 2013-09-16 11:14:39
@timonti因爲你是維護者? – 2013-09-16 11:37:50
「請注意:蘇黎世聯邦理工學院不再維護代碼,如果您需要更新,請訪問以下網站code.google.com/p/ganymed-ssh-2/」 – 2016-08-14 13:45:12