Làm cách nào để kết nối với máy chủ SSH bằng Java? Tôi không cần/muốn một cái vỏ. Tôi chỉ muốn kết nối với máy chủ SSH và nhận nội dung, ví dụ: file.txt
. Làm thế nào tôi có thể làm điều đó?Kết nối SSH với Java
Trả lời
Java không hỗ trợ mà natively, nhưng bạn có thể sử dụng một thư viện như JSch để làm điều đó
Hãy xem Jaramiko.
Bạn phải sử dụng thư viện của bên thứ ba - JSch là một trong số đó. Google có "Java ssh
" và bạn sẽ nhận được nhiều tùy chọn khác.
Bạn có thể kiểm tra JSSH, thư viện Java SSH.
http://www.ganymed.ethz.ch/ssh2/ triển khai trình khách ssh2 trong Java. Tôi sử dụng nó để chuyển tiếp cổng.
Sử dụng 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);}
}
}
đầu ra:
Establishing Connection...
Connection established.
Crating SFTP Channel.
SFTP Channel created.
This is content from file /home/john/test.txt
Câu trả lời hay có hiệu quả đối với tôi nhưng chỉ cần thực hiện chắc chắn đóng mọi thứ bạn mở. session.disconnect và sftpChannel.quit. –
Khi gọi các nhà xây dựng các ngoại lệ sau đây được ném: 'NGHIÊM: 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 tại javax.faces.event.MethodExpressionActionListener.processAction (MethodExpressionActionListener.java:178) ' – Mauro
nhận lỗi trong khi cố gắng kết nối máy chủ Windows: com.jcraft.jsch.JSchException: java.net.ConnectException: Kết nối bị từ chối: kết nối –
Tôi sử dụng này và làm việc cho tôi
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. Kết nối SSH Java
- 2. Simple SSH kết nối với JSch
- 3. Kết nối SSH với Python 3.0
- 4. Kết nối với amazon ec2 instance với ssh - timeout
- 5. Amazon AWS EC2 Instance - Không thể kết nối với SSH
- 6. Kết nối với máy chủ MySQL qua SSH trong PHP
- 7. SSH Tunnel cho Python MySQLdb kết nối
- 8. ipython:% dán qua kết nối ssh
- 9. Chạy các lệnh trên ssh với Java
- 10. Kết nối với SockJS từ Java?
- 11. Vấn đề kết nối Db2 với java
- 12. Kết nối SVN + SSH đưa ra lỗi 210002, kết nối mạng đóng bất ngờ
- 13. Có thể tmux ngăn kết nối ssh từ xa
- 14. Tìm số cổng hiện đang kết nối SSH
- 15. Pexpect - im lặng đầu ra kết nối ssh
- 16. Sử dụng tệp PPK trong Mac Terminal để kết nối với kết nối từ xa qua SSH
- 17. máy chủ ssh kết nối với máy chủ cổng xxx 22: Kết nối đã hết thời gian trên linux-ubuntu
- 18. Có thể kết nối SSH bằng JavaScript không?
- 19. cách giảm giá trị thời gian chờ kết nối ssh
- 20. Ghi nhật ký chi tiết cho kết nối svn ssh
- 21. Kết nối với Websphere MQ bằng Java với SSL/Keystore
- 22. Mạng Java "Kết nối bị từ chối: Kết nối"
- 23. Java HttpURLConnection không kết nối khi tôi gọi kết nối()
- 24. Kết nối lại kết nối ổ cắm Java khi ngắt kết nối
- 25. Không thể kết nối bằng cách sử dụng các phím với Ruby và net/ssh
- 26. kết nối với amazon aws linux server bằng ssh trên mac
- 27. Kết nối với máy chủ CentOS từ xa bằng cách sử dụng Khóa SSH
- 28. Kết nối với máy chủ được liệt kê trong ~/.ssh/config khi sử dụng Fabric
- 29. Tại sao khóa SSH của tôi không hoạt động để kết nối với github?
- 30. Cách kiểm tra xem kết nối SSH đã được thiết lập với ví dụ AWS
Tôi muốn mọi người không sử dụng Ganymed vì nó không còn được duy trì. – timonti
@timonti vì bạn là người bảo trì? –
"Xin lưu ý: ETH Zurich không duy trì mã nữa. Vui lòng truy cập trang web sau, code.google.com/p/ganymed-ssh-2/, trong trường hợp bạn cần cập nhật" –