मैं जावा में किसी एसएसएच सर्वर से कैसे कनेक्ट कर सकता हूं? मुझे एक खोल चाहिए/नहीं चाहिए। मैं सिर्फ एसएसएच सर्वर से कनेक्ट करना चाहता हूं और कह सकता हूं, file.txt
। मैं उसे कैसे कर सकता हूँ?जावा के साथ एसएसएच कनेक्शन
उत्तर
जावा कि मूल रूप से समर्थन नहीं करता है, लेकिन आप JSch की तरह एक पुस्तकालय का उपयोग कर सकते करने के लिए यह
Jaramiko पर एक नजर डालें।
आपको किसी तृतीय-पक्ष लाइब्रेरी का उपयोग करना होगा - JSch उनमें से एक है। Google "Java ssh
" के साथ Google और आपको कई अन्य विकल्प मिलेंगे।
आप JSSH देख सकते हैं, जो एक जावा एसएसएच लाइब्रेरी है।
http://www.ganymed.ethz.ch/ssh2/ जावा में एक 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। –
जब कन्स्ट्रक्टर का आह्वान किया जाता है तो निम्नलिखित अपवाद फेंक दिया जाता है: 'ग्रैव: जेएसएफ 1073: से हा इंटरसेप्टैडो javax.faces.event.AbortProcessingException durante el procesamiento de INVOKE_APPLICATION 5: यूआईसीओम्पोनेंट-क्लाइंटआईडी = टिपोमोविमिएंटियोग्रिड: j_idt15, मेन्साजे = java.lang.ClassCircularity त्रुटि: कॉम/jcraft/jsch/JSchException java.lang.ClassCircularityError: com/jcraft/jsch/JSchException \t javax.faces.event.MethodExpressionActionListener.processAction (MethodExpressionActionListener.java:178) ' – Mauro
विंडोज़ सर्वर कनेक्ट करते समय त्रुटि हो रही है: com.jcraft.jsch.JSchException: java.net.ConnectException: कनेक्शन से इनकार कर दिया: कनेक्ट –
मैं इस का इस्तेमाल किया और मुझे
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();
के लिए काम किया है, क्योंकि यह नहीं रह गया है मैं पसंद करेंगे लोग Ganymed का उपयोग नहीं करते बनाए रखा। – timonti
@ टिमोंटोई क्योंकि आप रखरखाव थे? –
"कृपया ध्यान दें: ETH ज़्यूरिख अब कोड को बनाए रखता नहीं है। अगर आपको अपडेट की आवश्यकता है तो कृपया निम्नलिखित वेबसाइट, code.google.com/p/ganymed-ssh-2/ पर जाएं," –