проблема с ssh при использовании sshj в java

Я пытаюсь получить удаленное подключение к серверу для выполнения некоторых команд. Я новичок в этом, поэтому начал гуглить. После некоторых поисков я попробовал:

Я использую sshj0.2.3.jar.

И вот как я это реализовал:

public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub
    final SSHClient ssh = new SSHClient();
    ssh.loadKnownHosts();
    ssh.connect("serverName");
    try{
        ssh.authPublickey("myUserId");
        final Session session = ssh.startSession();
        try{
            final Command cmd = session.exec("net send myMachineName Hello!!!");
            System.out.println(cmd.getOutputAsString());
            System.out.println("\n Exit Status: "+cmd.getExitStatus());
        }finally{
            session.close();
        }
        }finally{
            ssh.disconnect();
        }   
    }

}

Но я получаю следующее исключение:

    Exception in thread "main" java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory
    at net.schmizz.sshj.DefaultConfig.(DefaultConfig.java:92)
    at net.schmizz.sshj.SSHClient.(SSHClient.java:133)
    at SSHTEST.main(SSHTEST.java:24)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at java.net.URLClassLoader.findClass(URLClassLoader.java:419)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:643)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:345)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:609)
    .....

Нужны ли мне дополнительные банки, сколько дополнительных банок мне нужно. Правильно ли я реализую? пожалуйста помоги.

Заранее спасибо.


person user234194    schedule 02.09.2010    source источник


Ответы (3)


При поиске в Google sshj первый результат показывает ответ:

Зависимости

Ява 6+. Требуется slf4j. bouncycastle настоятельно рекомендуется и необходим для использования некоторых криптоалгоритмов. jzlib требуется для использования сжатия zlib.

person Chris Bunch    schedule 02.09.2010
comment
Я использую 1.5 java. Есть ли другой подход. Я просто хочу выполнить некоторые команды на удаленном сервере. Спасибо. - person user234194; 02.09.2010
comment
Да - вам нужен slf4j для разрешения конкретного сообщения, которое вы видите. - person Chris Bunch; 02.09.2010
comment
Я загрузил zip-файл с slf4j.org/download.html, но получаю ту же ошибку. . - person user234194; 02.09.2010
comment
Теперь я получаю эти исключения: Исключение в потоке main java.io.IOException: Не удалось загрузить известные_хосты в net.schmizz.sshj.SSHClient.loadKnownHosts(SSHClient.java:528) в SSHTEST.main(SSHTEST.java:25) - person user234194; 02.09.2010
comment
Библиотека считывает файл known_hosts в местоположении по умолчанию — ~/.ssh/known_hosts. Самый простой способ создать его — использовать ssh для однократного входа на удаленный сервер. ssh запрашивает подтверждение и создает запись для удаленного хоста. С этого момента Java может безопасно использовать этот хост. Если вы хотите использовать файл из другого места, используйте другую версию loadKnownHost с расположением файла в качестве параметра. Это может быть полезно в Windows или примере. - person Peter Tillemans; 04.09.2010

Да, вам нужны файлы jar для slf4j (см. 2-страничное руководство)

slf4j поставляется с API, а затем с подключаемой реализацией, но предлагаемый slf4j-simple должен подойти.

person Peter Tillemans    schedule 02.09.2010
comment
Я использую 1.5 java. Есть ли другой подход. Я просто хочу выполнить некоторые команды на удаленном сервере. Спасибо. - person user234194; 02.09.2010
comment
slf4j не предъявляет особых требований и, насколько я знаю, совместим с Java 1.4. Если вы поместите это в путь к классам, эта ошибка исчезнет, ​​и вы сможете следить за сообщениями журнала на консоли. - person Peter Tillemans; 02.09.2010
comment
Теперь я получаю эти исключения: Исключение в потоке main java.io.IOException: Не удалось загрузить известные_хосты в net.schmizz.sshj.SSHClient.loadKnownHosts(SSHClient.java:528) в SSHTEST.main(SSHTEST.java:25) - person user234194; 02.09.2010
comment
Библиотека считывает файл known_hosts в местоположении по умолчанию — ~/.ssh/known_hosts. Самый простой способ создать его — использовать ssh для однократного входа на удаленный сервер. ssh запрашивает подтверждение и создает запись для удаленного хоста. С этого момента Java может безопасно использовать этот хост. Если вы хотите использовать файл из другого места, используйте другую версию loadKnownHost с расположением файла в качестве параметра. Это может быть полезно в Windows или примере. - person Peter Tillemans; 04.09.2010

slf4j — это всего лишь фасад, и вам нужно предоставить конкретную реализацию. Если вас не волнует логирование, вставьте slf4j-nop-$(ver).jar, который присутствует в дистрибутиве slf4j.

person shikhar    schedule 03.09.2010