Как подключиться к серверу SSH в Java? Мне не нужна/нужна оболочка. Я просто хочу подключиться к серверу SSH и получить содержимое, скажем, file.txt
. Как я могу это сделать?SSH-соединение с Java
ответ
Java не поддерживает, что изначально, но вы можете использовать библиотеку как JSch сделать это
Посмотрите на Jaramiko.
Вы должны использовать стороннюю библиотеку - JSch является одним из них. Google с «Java ssh
», и вы получите множество других опций.
Вы можете проверить JSSH, являющийся библиотекой Java SSH.
http://www.ganymed.ethz.ch/ssh2/ реализует клиент ssh2 на Java. Я использую его для переадресации портов.
Использование 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. –
При вызове конструктора выбрано следующее исключение: '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
получение ошибки при попытке подключиться к серверу Windows: com.jcraft.jsch.JSchException: java.net.ConnectException: соединение отклонено: connect –
Я использовал это и работал для меня
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. Разбор кода Java с Java
- 2. Проблемы с API Java Java
- 3. Манипулирование Java классы с Java
- 4. Как выполнить Java с Java?
- 5. Проблема с API Java Java
- 6. Проблема с Java-маршаллингом Java
- 7. Проблема с запуском Java Java
- 8. Выполнение Java-программы удаленно с Java
- 9. Проблема с наследованием класса Java/Java Аннотация
- 10. «Ваша версия java устарела» с последним java
- 11. Ошибка Java с JAXB и Java 1.6
- 12. Java-почта с Java Mail api
- 13. Java Войти с Java дерби DB
- 14. Java: Unrar rar-файл с командой java
- 15. Отправка информации с Java на Java-скрипт?
- 16. Запуск Java-программы с помощью Java-программы
- 17. Подключение к Java DB с Java программы
- 18. Ошибка Java с плавающей запятой Java?
- 19. java RMI-связь с не-Java-объектом?
- 20. Как создать .java-файл с помощью java?
- 21. Переход с Java 7 на Java 6
- 22. set MaxRecords с Java Java-библиотекой
- 23. Приложение для Java Java с дублированием
- 24. Заливка с помощью Java Pane - JAVA
- 25. Форматирование Java-кода с использованием Java
- 26. Замена Java 7 с Java 6
- 27. парсинг java с использованием php или java?
- 28. Бесплатный Java-язык java gui с построителем
- 29. Начало Java-сервисов Java. С чего начать
- 30. Проблема с производительностью загрузки Java-диска Java
Я предпочел бы люди не используют Ганимед, так как он больше не является поддерживается. – timonti
@ timonti, потому что вы были сопровождающим? –
«Обратите внимание: ETH Zurich больше не поддерживает код. Посетите следующий веб-сайт, code.google.com/p/ganymed-ssh-2/, если вам нужны обновления» –