1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/seth_yang-dreamwork-sshd

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 7.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 05:58 b092227

dreamwork-sshd

Введение

Использование Apache SSHD, предоставляется доступный полупродукт сервера SSHD. Это позволяет быстро разрабатывать CLI-приложения на основе SSH.

Архитектура программного обеспечения

  • Нижний уровень использует Apache SSHD для предоставления сетевых услуг SSH.
  • Встроен Java-реализация telnet-протокола со следующими функциями:
    • RFC 318 (TELNET),
    • RFC 854 – RFC 861 (TELNET sub-options),
    • RFC 1073 (TELNET Window Size).
  • Расширение org.dreamwork.telnet.command.Command для быстрой разработки команд и реализации функций.

Использование

Простой пример:

package org.dreamwork.sshd.example;

import org.dreamwork.config.IConfiguration;
import org.dreamwork.config.PropertyConfiguration;
import org.dreamwork.network.sshd.Sshd;

import java.util.Properties;

public class BasicSshdApplication {
    public static void main (String[] args) throws Exception {
        IConfiguration conf = new PropertyConfiguration (new Properties ());

        Sshd sshd = new Sshd (conf);
        sshd.init (null);
        sshd.bind ();
    }
}

Затем выполните команду:

ssh -p 50022 root@127.0.0.1

для входа в сервис. Пароль по умолчанию для пользователя root — 123456. После входа вы можете использовать команду passwd для изменения пароля root.

Настройка сервиса SSHD

  • Сервис SSHD по умолчанию слушает порт 50022.
  • Файлы CA по умолчанию хранятся в ${user.home}/.ssh-server/known-hosts.
  • Файлы базы данных SQLite по умолчанию хранятся в ${user.home}/.ssh-server/database.db.

Эти параметры можно настроить с помощью следующих ключей:

  • service.sshd.port используется для настройки порта прослушивания.
  • service.sshd.cert.file используется для настройки пути к файлу CA.
  • database.file используется для настройки пути к файлу базы данных SQLite.
  • default.root.password используется для настройки пароля по умолчанию для root.

Все эти ключи могут быть переопределены с помощью системных свойств.

Встроенная база данных

Dreamwork SSHD использует базу данных для хранения пользовательских данных и параметров конфигурации системы.

Org.dreamwork.network.sshd.Sshd использует метод init(IDatabase) для передачи объекта базы данных. Если этот метод вызывается с параметром null, то внутри создаётся файл базы данных sqlite3. Если вы хотите, чтобы sshd-сервер и ваше приложение использовали одну и ту же базу данных, то параметр метода init должен быть непустым объектом базы данных.

Команды

Команды предоставляют человеко-машинный интерфейс для sshd-сервера через регистрацию реализаций класса org.dreamwork.telnet.command.Command на org.dreamwork.network.sshd.Sshd.

Встроенные команды

В базовой реализации sshd-server включает набор команд, которые можно просмотреть после входа в систему с помощью команды help:

console> h
clear            clear the screen and home cursor
echo             shows something
env              show environment
exit             alias for command 'quit'
help        h    show this help list
history          show history
passwd           change current or spec user's password
quit        q    exit
set              setting console env
shutdown         shutdown the sshd server
unset            unset a console env
user             user management

Расширение пользовательских команд

Пользовательские команды расширяются путём расширения абстрактного класса org.dreamwork.telnet.command.Command.

Простая пользовательская команда

Мы реализуем простую команду datetime для отображения текущего времени:

package org.dreamwork.sshd.example;

import org.dreamwork.telnet.Console;
import org.dreamwork.telnet.command.Command;

import java.io.IOException;
import java.text.SimpleDateFormat;

public class DateTimeCommand extends Command {
    private SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
    public DateTimeCommand () {
        super ("datetime", null, "show current date time");
    }

    /**
     * Выполнение команды
     *
     * @param console текущая консоль
     * @throws IOException io exception
     */
    @Override
    public void perform (Console console) throws IOException {
        console.println (sdf.format (System.currentTimeMillis ()));
    }
}
  • Конструктор: прототип Command(String name, String alias, String description), где:
    • name: имя основной команды, которая будет использоваться при вводе в консоли.
    • alias: псевдоним команды, который может предоставить краткую альтернативу имени.
    • description: краткое описание команды, которое будет использоваться командой help.
  • Функция обработки команды: подпись void perform(Console console) throws IOException, где:
    • console: объект консоли, на который можно распечатать результаты обработки команд.

Теперь мы можем зарегистрировать эту команду в sshd-сервере:

public class BasicSshdApplication {
    public static void main (String[] args) throws Exception {
        IConfiguration conf = new PropertyConfiguration (new Properties ());

        Sshd sshd = new Sshd (conf);
        sshd.init (null);

        // Регистрация DateTimeCommand
        sshd.registerCommands (new DateTimeCommand ());

        sshd.bind ();
    }
} ```
q    exit
set              setting console env
shutdown         shutdown the sshd server
unset            unset a console env
user             user management

Появилась ещё одна команда:

datetime         show current date time

Выполнение команды:

console> datetime
2020-02-25 19:37:41
console>

Глубокое изучение sshd-server и Command

Более продвинутое/глубокое содержание см. в разделе «[sshd-server 使用手册]».

Участие в проекте

  1. Fork этого репозитория.
  2. Создать ветку Feat_xxx.
  3. Зафиксировать код.
  4. Создать Pull Request.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/seth_yang-dreamwork-sshd.git
git@api.gitlife.ru:oschina-mirror/seth_yang-dreamwork-sshd.git
oschina-mirror
seth_yang-dreamwork-sshd
seth_yang-dreamwork-sshd
master