Purpose of the Repository
The dssh repository aims to combine various functionalities and tools to create a robust SSH-based system for accessing remote and local consoles. It incorporates features from multiple sources such as tssh, embed-encrypt, sshd from gliderlabs, and others to provide secure and versatile access over NAT using jump hosts, and offers support for serial console connections via tools like ser2net and putty. The README provides detailed instructions on how to access local and remote consoles using different configurations and tools, along with acknowledgments to contributors and projects that inspired or contributed to dssh.
Features and Technologies Used
The dssh repository is implemented primarily in Go, with a small portion in Batchfile. It integrates various technologies and tools to enhance SSH and serial console access functionalities, including:
- tssh from trzsz: Provides foundational SSH functionalities.
- embed-encrypt: Adds certificate authority key management with embedded encryption.
- gliderlabs/ssh: Supplies the SSH server capabilities.
- ser2net: Facilitates serial to network connections, allowing access to serial consoles over the network.
- ssh-j.com: Enables access over NAT using a jump host.
- Putty and telnet: For direct or browser-based connections to serial consoles.
- RouterOS and hub4com: Support for integrating with various hardware and network configurations.
Overall, dssh is a comprehensive tool designed for secure and flexible access to consoles, combining multiple open-source projects and technologies to offer a wide range of connectivity options.
dssh:=(tssh from trzsz)+(CA key with embed-encrypt)+(sshd from gliderlabs)+(access over NAT using jumphost ssh-j.com)+(ser2net with putty or direct connect to serial console or over browser)
- Lonny Wong.
- Paul Scheduikat.
- Glider Labs.
- ValdikSS.
- 9elements.
- Patrick Rudolph.
- Simon Tatham.
- Corey Minyard.
- Vyacheslav Frolov.
- MikroTik.
- Cristian Maglie
- y. отсутствует зачит локальная последовательная консоль на первом свободном порту USB. Или путь к последовательному порту на Linux как /dev/ttyUSB0. Или последовательный порт на Windows как COM1. Или суффикс порта от 0 до 9.
- X. IP или FQDN или ssh-алиас или dssh-алиас
.как сокращение алиасаdsshили dssh-алиас:как сокращение алиасаssh-j. Вместо алиаса:можно использовать алиас.в этом случае если на хосте dssh-клиента не запущен dssh-сервер то будет использован алиас:для доступа к dssh-серверу через посредника ssh-j.com. - x. отсутствует зачит 0.0.0.0 или локальный IP или локальный алиас:
+как127.0.0.1или_как локальный IP 192.168.1.2 к роутеру 192.168.1.1. - host. X или x.
- port. TCP порт.
- port5000. суффикс порта 5000 от 0 до 9 значит порт от 5000 до 5009 или port.
- noWin7withoutCygwin. кроме Windows 7 без Cygwin.
- Win7withoutCygwin. для Windows 7 без Cygwin.
- Win7withCygwin. для Windows 7 с Cygwin.
- Вместо PuTTY, plink 0.7 для доступа к локальной последовательной консоли на первом USB порту y со стартовым режимом 9600,8,N,1,N
dssh -U9600или короче с префиксом скоростиdssh -U9или без указания режима тогда берётся последний режим на портуdssh -UUили корочеdssh -z. Можно задать любой стартовый режим на y а потом переключать! На MacOS 12.7.6 тоже работает. Для Linux нужно членство в группе dialout. - Вместо PuTTY, plink для доступа к локальной последовательной консоли на порту
COM1для Windowsdssh -HCOM1или короче с суффиксом портаdssh -H1. Если символ отмены в параметре-eзадан какnoneто для завершения ввода используется^Zиначе^D. Если параметр-eне задан то для завершения ввода можно использовать^Zили<Enter>~.но лучше использовать^D. - Вместо PuTTY, plink,
busybox microcomдля доступа к локальной последовательной консоли на порту/dev/ttyUSB0не для Windowsdssh -H/dev/ttyUSB0илиdssh -HttyUSB0или корочеdssh -H0. Если символ отмены в параметре-eзадан какnoneто для завершения ввода используется^D. Если параметр-eне задан то для завершения ввода можно использовать<Enter>~.но лучше использовать^D. - Вместе с PuTTY для доступа к y
dssh -uкак в 1.1 берётся последний режим на порту. На Linux и Darwin используется putty или plink если их нет тоbusybox microcom. - Вместе с plink для доступа к y
dssh -zuили корочеdssh -u. Ключ-zвместе с ключами-uили-Zзначит в том же окне. - Вместе с telnet для доступа к y через telnet://0.0.0.0:5000
dssh -Z. Для Windows в новом окне. - Вместе с telnet для доступа к y через telnet://0.0.0.0:5000
dssh -zZ. - В окне веб браузера для доступа к y через http://0.0.0.0:8000
dssh -8 8000илиdssh -80или корочеdssh -s. Иногда порты на 127.0.0.1 блокируется политикой безопасности. Тогда вместоdssh -80илиdssh -sиспользуемdssh -80 _илиdssh -s _. - Как в 1.8 но через http://192.168.1.2:8000
dssh -80 192.168.1.2или если у роутера 192.168.1.1 тоdssh -80 _x. - Как в 1.9 но через http://127.0.0.1:8009
dssh -8 8009 127.0.0.1или корочеdssh -89 +. Иногда порты на 127.0.0.1 блокируется политикой безопасности. Тогда вместо (1.10)[#1.10] можно использовать (1.9)[#1.9]. - Как в 1.9 но через telnet://192.168.1.2:5000
dssh -25000 192.168.1.2илиdssh -20 192.168.1.2или корочеdssh -s _. - Как в 1.10 но через telnet://127.0.0.1:5000
dssh -25000 127.0.0.1или корочеdssh -s +. - Когда используется
dssh -20 -88это всё равно, что совместноdssh -20иdssh -H: -88. Режим посредника. - Команда
dssh -2 port5000 xработает и как RFC2217 телнет-клиент 1.15 и как RFC2217 телнет-сервер типа ser2net только без команд для модема. - Команда
dssh -H host:[port5000]работает как RFC2217 телнет-клиент и может удалённо менять режимы работы последовательной консоли: baudRate - скорость в бодах, dataBits - количесто бит в символе, parity - чётность, stopBits - количество стоповых бит. Еслиdssh -HHто пробуем доступ через LANdssh -H 127.0.0.1:5000или корочеdssh -H:иначе через локальный dssh-серверdssh -H: .иначе через dssh-серверdssh -H: : - Чтоб поделиться локальной последовательной консолью через sshd-сервер X
dssh -s20 Xили корочеdssh -s X. Для подключения к этой консолиdssh -H127.0.0.1:5000 Xилиdssh -H5000 Xилиdssh -H: Xили корочеdssh -HH Xили без управленияdssh -W5000 Xили без управления и без перевода консоли в сырой (raw) режимssh -W127.0.0.1:5000 X. - Чтоб поделиться локальной последовательной консолью через dssh-сервер
dssh -s20 .или корочеdssh -s .. Для подключения к этой консолиdssh -HHили без управленияdssh -W5000 .или без управления и без перевода консоли в сырой режимssh -W127.0.0.1:5000 :. - Чтоб поделиться через LAN локальной последовательной консолью без dssh-сервера и без sshd-сервера
dssh -20или корочеdssh -s. Для подключения к этой консолиdssh -H host[:port5000]или без управленияdssh -W host[:port5000]илиtelnet host 5000. - Если sshd-сервер и dssh-сервер на одном хосте то можно поделиться локальной последовательной консолью через sshd-сервер X
dssh -s Xа подключится через dssh-серверdssh -HHи наоборот - поделиться локальной последовательной консолью через dssh-серверdssh -s .а подключится через sshd-сервер Xdssh -HH X. - Команда
dssh -s hostэто то же что иdssh -80 host. Чтоб управляющие последовательности ANSI обрабатывать в веб-браузере.
- port2200. суффикс порта 2200 от 0 до 9 значит порт от 2200 до 2209 или port.
- При наличии на хосте Сети запускаем dssh-сервер
dsshилиdssh +. Сервер будет ждать на 0.0.0.0:2200 или соответствено на 127.0.0.1:2200. - При наличии у клиента Сети подключаемся к dssh-серверу
dssh .Это сработает и за NAT так как подключение к dssh-серверу идёт через посредникаssh-j.com0.4. Еслиdsshна direct.accesible.dssh то можно подключится к немуdssh -j. Для чего через посредника узнаём direct.accesible.dssh через CGIdssh -T : dssh --eipsа потом напрямуюdssh -j direct.accesible.dssh. Это сработает и через LAN. - При отсутствии на хосте Сети запускаем dssh-сервер
dssh _илиdssh -d x[:port2200]и сообщаем клиенту x[:port2200]. - При отсутствии на клиенте Сети но при наличии локальной сети к
xподключаемся к dssh-серверуdssh -j x[:port2200]. - Если клиент находится на хосте с dssh-сервером, подключаемся к нему без посредников
dssh .илиdssh -j :илиdssh -j x[:port2200]или через посредникаdssh :. - Так же как в 1.4 и 1.5 но с параметром
.. Например вместе с PuTTYdssh -u .или вместе c plinkdssh -zu .. Должно выполняться условие 6.8. - Вместе с ssh в отдельном окне
dssh -Z .похоже на 1.6 или вместе с ssh в том же окнеdssh -zZ .похоже на 1.7. Должно выполняться условие 6.8. C Cygwin на Windows 7dssh -Z .значитdssh -zZ . - Так же как в 1.8-1.12 но с параметром
-Hcmdдля Windows или-Hbashдля Linux. Напримерdssh -Hcmd -20 .или корочеdssh -0Hcmdили через браузер и Linuxdssh -0Hbash -88. Если через LAN то соответственноdssh -0Hcmd -j x[:port2200]илиdssh -0Hbash -88 -j x[:port2200]. - Вместо
ssh Xкакdssh Xи наоборот вместоdssh :dssh -Z :какssh :.
- Как в 2.2-2.6 только добавив ключи
-z-U-H-2-8из раздела 1. Напримерdssh -z .зто похоже наdssh . dssh -zилиssh . dssh -zно лучшеdssh -0чтоб отдать и использовать удалённую консоль dssh-сервера илиdssh -0 Xчтоб отдать и использовать удалённую консоль sshd-сервера X. - Если на 192.168.1.2 запущен RFC2217 телнет-сервер c доступом к последовательной консоли через порт 5000 например
dssh -25000 _или корочеdssh -s _как в 1.12 или сервис ser2net или RouterOS с портом USB и адаптером USB2serial то с 192.168.1.3 можно подключитьсяdssh -W192.168.1.2:5000в сыром режиме без управления режимом последовательной консоли илиdssh -H192.168.1.2:в режиме RFC2217 c управлением режимом последовательной консоли. - Если на 192.168.1.1 запущен dssh-сервер а на 192.168.1.2 запущен RFC2217 телнет-сервер c доступом к последовательной консоли через порт 5000 как в 3.2 то можно подключиться без управления режимом консоли
dssh -W192.168.1.2:5000 .или с управлениемdssh -H192.168.1.2: .. Как в 3.2 только отовсюду. - Если на 192.168.1.1 запущен sshd-сервер X а на 192.168.1.2 запущен RFC2217 телнет-сервер c доступом к последовательной консоли через порт 5000 как в 3.2 то присоединиться к консоли можно
ssh -W192.168.1.2:5000 Xилиdssh -H192.168.1.2: X. - Если на хосте запущен dssh-сервер и на нём же запущен RFC2217 телнет-сервер c доступом к последовательной консоли например
dssh -20или корочеdssh -sто можно подключиться отовсюдуdssh -W127.0.0.1:5000 .илиdssh -W:5000 .илиdssh -W5000 .илиdssh -H127.0.0.1:5000 .илиdssh -H5000 .илиdssh -H: .или корочеdssh -HH. - Когда используется
dssh -20 .илиdssh -80 .или корочеdssh -0то телнет или веб-сервер запускается на хосте dssh-сервера а порт указанный в-2или-8переносится локально как-L. Управление режимом последовательной консоли по ключу-8ведётся не по протоколу RFC2217 а по ssh. Похоже наdssh . dssh -20илиdssh . dssh -80. Можно и такdssh -HH .что выглядит похожим наdssh -HH Xно при этомdssh -HH .запускает на dssh-сервере RFC2217 телнет клиента какdssh -20 .аdssh -HH Xне запускает его там а просто использует если он запущен. - Когда используется
dssh -0 Xэто аналогdssh X dssh -20или корочеdssh X dssh -80. Это работает если на X естьdssh - Режим посредника на dssh-сервере с direct.accesible.dssh
dssh. Приятно, что посредник ssh-j.com используется только при подключении. После подключения трафик через него не идёт. 8.1 Отдадим локальную последовательную консольdssh -js. 8.2 Используем отданную последовательную консольdssh -jHHили через веб (например в Windows 7)dssh -jHH -88. 8.3 Отдадим локальный интерпретатора команд bashdssh -jsHbash. 8.4 Используем отданный интерпретатора командdssh -jHHили через веб (например в Windows 7)dssh -jHH -88.
- Запускаем на удалённом хосте dssh-сервер
dssh. - Команда
dssh -2 5000 .илиdssh -20 .или корочеdssh -0запускает на хосте с dssh-сервером RFC2217 телнет-сервер с портом 5000 и локальный телнет-клиент. По умолчанию порт 5000 будет подключен к последовательной консоли на первом USB порту. Ключами-H-Uможно указать другой последовательный порт и другую стартовую скорость. Если порт 5000 на хосте с dssh-сервером занят тоdssh -20 .или корочеdssh -0запустит только локальный телнет-клиент. - Присоединяемся к консоли на порту 5000
dssh -H5000 .или корочеdssh -HHили с PuTTYdssh -uHHили c telnetdssh -ZHH. Эти команды запускают локальный телнет-клиент. Таких подключений может быть несколько. - Если клиенты находятся на хосте то присоединиться к консоли можно
dssh -20 -j :илиdssh -20или как в 4.3. - Другие клиенты в локальной сети хоста могут присоединиться к консоли
dssh -20 -j host[:port2200]. - Если в пунктах 4.2-4.5 заменить
-20на-80то вместо telnet://host:5000 будет использоваться http://host:8000 то есть будет запущен веб-сервер на порту 8000. Напримерdssh -8 8000илиdssh -80. Это используется вdssh -0которая вместоdssh -20 .запуститdssh -80 .. - Другие клиенты в локальной сети хоста могут присоединиться к консоли
dssh -88 -j host[:port2200]. - Если в 4.2-4.7 добавить ключ
-Hcmdдля Windows или-Hbashдля Linux или Cygwin то вместо последовательной консоли будет совместно использоваться интерпретатор команд. - Если RFC2217 телнет-сервер с портом 5000 запущен на sshd-сервере X то подключится к нему можно
dssh -H:0 Xили корочеdssh -HH X. Если вместо порта 5000 порт 5002 тоdssh -H:2 X. Если вместо порта 5000 порт 7000 тоdssh -H7000 X.
- Если через Cygwin, MSYS2/MINGW, git-bash то как обычно
dssh X - Иначе вместо
dssh Xесли установлен OpenSSH будет запущенdssh -Z X. - Иначе будет использоваться
start ssh://X. - Иначе для доступа к удалённому интерпретатору команд через браузер
dssh -80 -0Hsh lилиdssh -80 -0Hcmd w - Иначе для доступа к локальной консоли через браузер
dssh -80 - Иначе для доступа к удалённой консоли dssh-сервера через браузер
dssh -0 - Иначе для доступа к удалённой консоли интерпретатора команд dssh-сервера через браузер когда dssh-сервер на Linux
dssh -0Hbashили когда dssh-сервер на Windowsdssh -0Hcmd. - Иначе чтоб подключиться через браузер к телнет-серверу 192.168.1.2:5000 3.3 через dssh-сервер
dssh -H192.168.1.2:5000 -80 .или корочеdssh -0H192.168.1.2 - Иначе чтоб подключиться через браузер к телнет-серверу 192.168.1.2:5000 3.4 через sshd-сервер X
dssh -H192.168.1.2:5000 -80 Xили корочеdssh -0H192.168.1.2 X.
- Авторизация основана на вложенном ключе Центра Сертификации
.\internal\ca. Его можно обновлять запускомgo run cmd/main.go. - Вложение шифруется ключом
.\key.enc. Его можно удалить а потом создать новый запустивgo run github.com/abakum/embed-encrypt. - Ключ расшифровки вложения извлекается не публикуемой функцией Priv из
internal\tool\tool.go. Пример такой функции смотри в eex. - Доступ к экземпляру сервера в пространстве имён посредника ssh-j.com задаётся именем
[email protected]где 59d7a68 это начало хэша комита git смотриgit log -1или первую строку при запускеdssh -Vто есть без дополнительный параметров клиентdssh .подключится к dssh-серверу через посредника если они одного комита. - Для доступа клиента к dssh-серверу другого комита нужно указать имя через ключ
-ldssh -l 59d7a68 .. - Врочем вместо начала хэша комита можно использовать что-то попроще например переименовываем файл
dsshвivanovи посылаем Иванову. Он запускает dssh-серверivanovа мы подключаемся какdssh -l ivanov .. - Если Петров умеет запускать программы с параметром то можно и не переименовывать
dsshвpetroff. Петров запуститdssh -l petroffа мыdssh -l petroff .. Вместо фамилий можно для Linuxdssh -l $(hostname)для Windowsdssh -l %COMPUTERNAME%и подключаться напримерdssh -l debian .иdssh -l windows .. Имейте в виду что имена могут буть заняты на посреднике ssh-j.com. - Для доступа к dssh-серверу через
ssh,PuTTY,plink, илиWinSCPважно иметь доступ к агенту ключей с хотя бы одним ключём напримерid_rsaи хоть раз запуститьdssh . exitчтоб записать сертификат замка в~/.ssh/id_rsa-cert.pubи сертификат хоста в~/.ssh/dssh. Для PuTTY plink и WinSCP соответственно DetachedCertificate и SshHostCAs.
- Вывод кастомных сообщения - DebugF и WarningF из login.go.
- Для красоты - type StringSet из login.go, type afterDo []func() для afterLoginFuncs, onExitFuncs, restoreStdFuncs из main.go.
- Глобальный конфиг для Windows - initUserConfig из config.go, resolveEtcDir, ExpandEnv в getHostKeyCallback из login.go, config.go.
- Авторизация хостов по сертификатам - caKeysCallback, caKeys в getHostKeyCallback из cert.go.
- Авторизация клиентов по сертификатам - addCertSigner, args.Config.GetAllSigner, args.Config.GetAllCASigner, idKeyAlgorithms в getPublicKeysAuthMethod из login.go.
- Чтение HostKeyAlgorithms - setupHostKeyAlgorithmsConfig из login.go, algo.go. Смотри
ssh -Q HostKeyAlgorithms. - Перенос агента авторизации - getForwardAgentAddr, getAgentClient в sshAgentForward из login.go.
- Чтение ExitOnForwardFailure - dynamicForward, localForward, remoteForward, sshForward из forward.go .
- Запуск в Windows 7 без Cygwin и MSYS2 через
-T- setupVirtualTerminal, sttyExecutable из term_windows.go. - Чтение IdentitiesOnly в getPublicKeysAuthMethod из login.go.
- Уникальный SecretEncodeKey и подсказка
encPassword barпри указании-o Password=fooв getPasswordAuthMethod из login.go. - Возможность прервать dynamicForward, localForward, remoteForward по Ctr-C используя restoreStdFuncs.Cleanup перед ss.client.Wait в sshStart из main.go.
- Возможность прервать сессию по
<Enter><EscapeChar>.newTildaReader в wrapStdIO из trzsz.go и newServerWriteCloser в sshLogin из login.go. - Для системного прокси Windows нужен socks4 поэтому github.com/smeinecke/go-socks5 вместо github.com/armon/go-socks5 в forward.go.
- goScanHostKeys ищет все ключи хоста для добавки в known_hosts. Есть мнение, что это не безопасно.
- Чтение KexAlgorithms - setupKexAlgorithmsConfig из login.go, kex.go. Смотри
ssh -Q KexAlgorithms. - Исправлена опечатка в keepAlive
- makeStdinRaw для stdioForward в sshStart.
- Если запустить на хосте
dsshи проверив доступdssh :потом к хосту можно подключиться для удалённой разработки черезRemote - SSH extensionвыбрав алиасssh-jили ":" вConnect to Host. - Благодаря tssh 0.1 можно прописать в
~/.ssh/configпослеHost proxyencPassword barиDynamicForward 127.0.0.1:1080чтоб не вводить пароль при запускеdssh -5 proxyдля использования Socks5 прокси 7.11. Чтобsshне ругался на неизвестный параметрencPasswordв начале~/.ssh/configвставьтеIgnoreUnknown * - Для системного прокси на Windows нужен Socks4 прокси поэтому
dssh proxy7.14. - В 4.11 можно вместо интерпретатора команд указывать команду или посредника. Например
dssh -Htop .это почти то же что иdssh -t . top. Вот только значение ключа-Hесли не содержитили:не должно заканчиваться на цифру - иначе это будет принято за порт последовательной консоли. Например вместоdssh -Htest2 .надоdssh -H"test2 " .Если в значение ключа-Hесть пробелы то пробел в конец можно не добавлять. Напримерdssh -H"ping 8.8.8.8". Если в значение ключа-Hесть:то это посредник и может заканчиваться на цифру. - Команды с
-Hcmdили-Hbashможно использовать для отладки когда на хосте нет последовательно порта. - Можно использовать
dsshкак посредника: Если у клиентаAXесть доступ к телнет-серверу по адресу host:port и доступ к sshd-серверу X то отдаём эту консоль через Xdssh -Hhost:[port5000] -20 Xили корочеdssh -sHhost Xесли у клиентаBXBYесть доступ к sshd-серверам X и Y то используем еёdssh -HH Xили заходим на Xdssh Xи передаём её на Ydssh -sHH Yили корочеdssh -t X dssh -sHH Yесли у клиентаСYесть доступ к sshd-серверу Y то используем еёdssh -HH Y. Все команды управления режимом последовательной консоли передаются по цепочке посредников. Вместо последовательной консоли может быть консоль интерпретатора команд. Вместо sshd-серверов могут быть dssh-сервера: Если у клиентаAесть доступ к телнет-серверу по адресу host:[port5000] и доступ к dssh-серверу то отдаём эту консольdssh -sH host:[port5000]если у клиентаBYесть доступ к dssh-серверу и к sshd-серверу Y то используем еёdssh -HHили передаём её на Ydssh . dssh -sHH Yесли у клиентаСYесть доступ к sshd-серверу Y то используем еёdssh -HH Y. - Можно использовать
dsshв качестве посредника в~/.ssh/configProxyCommand dssh -W %h:%p .какProxyCommand ssh -W %h:%p ssh-j. Напримерdssh -J ssh-j XкакHost XиProxyCommand dssh -W %h:%p . - Если для
Host overSocks5указатьProxyCommand plink -load %n -raw %h -P %pиProxyPutty socks5://127.0.0.1:1080то вPuTTY\Sessions\overSocks5будет записано,ProxyMethod=2ProxyHost=127.0.0.1ProxyPort=1080иplinkсделает то же что иProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %pилиProxyCommand connect -S 127.0.0.1:1080 %h %pssh-connect. Можно задать иProxyPutty socks4://host[:port]какProxyCommand nc -X 4 -x host[:port] %h %pиProxyPutty socks4a://host[:port]иProxyPutty http://host[:port]какProxyCommand nc -X connect -x host[:port] %h %pиProxyPutty ${http_proxy}. Если вHost overSocks5указанProxyPuttyто PuTTY не будет использоватьProxyCommandа ssh будет. Можно отдельно указать дляHost D1080ProxyPutty socks5://127.0.0.1:1080а дляHost overSocks5ProxyCommand plink -load D1080 -raw %h -P %p. Приятно, что это сработает и на Windows и на Linux если установлен plink. - Можно использовать dssh-клиента в качестве посредника для доступа к dssh-серверу через
socks5://127.0.0.1:1080какdssh -45ND1080 . - Чтоб перезапустить dssh-сервер используйте ключ
-rили--restart. Сервер остановится и запустится через 15 секунд. - Чтоб остановить dssh-сервер используйте ключ
--stop. - Если невозможно подключиться к dssh-серверу командой
dssh -j hostно возможно с алиасаjhто подключаемсяdssh -J jh -j host. Если на dssh.sshd.host запущен и dssh-сервер и sshd-сервер и невозможно подключитьсяdssh -j hostто можноdssh -J dssh.sshd.host -j :или корочеdssh -J dssh.sshd.host. Смотри 2.2. - Если невозможно подключиться к dssh-серверу командой
dssh -j hostно возможно сdssh.hostна котором установленdsshто подключаемсяdssh dssh.host dssh -j host.
- Подключаем USB2serial переходник в USB порт устройства под управлением RouterOS.
- Запускаем удалённый доступ к последовательной консоли RouterOS
/port remote-access add port=usb1 tcp-port=5000 protocol=rawPorts. Для смены режима на консоле/port set 0 flow-control=none stop-bits=1 parity=none baud-rate=9600/port set 0 baud-rate=auto - Если LAN dssh-сервера это 192.168.0.1 а у устройства с RouterOS LAN это 192.168.0.2 то подключаемся
dssh -W192.168.0.2:5000 .илиdssh . dssh -W192.168.0.2:5000. Это похоже наssh -W192.168.0.2:5000 ssh-jтолько ssh не переводит консоль в сырой режим а dssh переводит. - Иначе разрешим доступ с WAN на 22 порт tcp
/ip firewall filter add action=accept chain=input dst-port=22 protocol=tcpдля доступа по SSH с WAN. И разрешим доступ с lo по tcp/ip firewall filter add action=accept chain=input in-interface=lo protocol=tcpдля туннеля с WAN на 5000 порт. (80 для управления по webfig, 8291 по winbox) - Если алиас RouterOS это X то подключаемся
dssh -W5000 X. - Останавливаем удалённый доступ к последовательной консоли RouterOS
/port remote-access remove 0 - Для возможности смены клиентом режима удалённой последовательной консоли через протокол RFC2217 запускаем аналог ser2net на RouterOS
/port remote-access add port=usb1 tcp-port=5000 - Если LAN хоста с запущенными
dsshэто 192.168.0.1 а у устройства с RouterOS LAN это 192.168.0.2 то подключаемсяdssh -H192.168.0.2:5000 .или корочеdssh -H192.168.0.2: .. - Если алиас RouterOS это X то подключаемся
dssh -H127.0.0.1:5000 Xилиdssh -H: Xили корочеdssh -HH Xэто то же что иdssh -NL127.0.0.1:5000:127.0.0.1:5000 Xа потомdssh -H:. - Если запустить
ssh -NL127.0.0.1:5000:127.0.0.1:5000 Xтоdssh -H:сработает только однажды потому, что после закрытияdssh -H:статус/port remote-accessостанется подключенным. Это особенность ssh. - Если алиас хоста с sshd-сервером X и на нём запущен
ser2net -C "5000:telnet:0:/dev/ttyUSB1:115200 8DATABITS NONE 1STOPBIT LOCAL -XONXOFF remctl"или hub4com какcom2tcp-rfc2217 com1 5000типаdssh -H1 -20 +то подключаемсяdssh -H127.0.0.1:5000 Xилиdssh -H: Xили корочеdssh -HH X. - Если на хосте с dssh-сервером запущен
ser2net -C "127.0.0.1,5000:telnet:0:/dev/ttyUSB1:115200 8DATABITS NONE 1STOPBIT LOCAL -XONXOFF remctl"или hub4com какcom2tcp-rfc2217 --interface 127.0.0.1 com1 5000типаdssh -H1 -20то подключаемсяdssh -H127.0.0.1:5000 .илиdssh -H: .или корочеdssh -HH. - Если ser2net или hub4com доступен по LAN как
xи на нём запущенser2net -C "x,5000:telnet:0:/dev/ttyUSB1:115200 8DATABITS NONE 1STOPBIT LOCAL -XONXOFF remctl"илиcom2tcp-rfc2217 --interface x com1 5000типаdssh -H1 -20 xто подключаемсяdssh -Hx:5000илиdssh -Hx:.
-zто же что и-UUкак в 1.1.-20 xто же что-UU+ стартует RFC2217 телнет-сервер наx:5000как в 1.11 + стартует RFC2217 телнет-клиент в том же окне.-ZH host:port5000то же что иtelnet -e^Q host port5000для Windows в новом окне как в 1.6. Для Cygwin на Windows 7 или Linux в том же окне.-Z20 xто же что и-20 x+telnet -e^Q x 5000для Windows в новом окне. Для Cygwin на Windows 7 или Linux в том же окне.-Z xкак в 10.4.-zZ xто же что и-20 x+telnet -e^Q x 5000в том же окне и без управлением режимом консоли.-u20 xто же что и-20 x+putty -telnet x -P 5000как в 1.4.-uкак и-uUUэтоputty -serial y -sercfg 9600,8,N,1,Nесли перед этим режим был задан как-U9и без управлением режимом консоли.-zuкак и-zuUUэтоplink -serial y -sercfg 9600,8,N,1,Nесли перед этим режим был задан как-U9и без управлением режимом консоли. Для Cygwin на Windows 7putty -serial y -sercfg 9600,8,N,1,N.-uH host:port5000то же что иputty -telnet host -P port5000как в 1.4.-88 xто же что-UU+ стартует веб-сервер наx:8008+chrome http://x:8008.-22 -88 xто же что-UU+ стартует RFC2217 телнет-сервер наx:5002+ стартует веб-сервер наx:8008+chrome http://x:8008
-z .как в 10.1 только на хосте сdssh. Какssh : dssh -z.-20 .или-HH .или короче-0как в 10.2 только на хосте сdssh+ 127.0.0.1:5000 переносится локально как-Lна 127.0.0.1:5000 сервера.-H host:port5000 .то же что иdssh -W host:port5000 .только с управлением по RFC2217 или RFC1073 как в 3.5.-Z20 .или короче-Z0то же что и-20 .как в 11.2 +telnet -e^Q 127.0.0.1 5000учитывая перенос портов управление будет консолью на хосте сервера.-Z Xто же что иssh Xдля Windows новом окне.-zZ Xто же что иssh Xдля Windows в том же окне.-u20 .или короче-u0то же что и-20 .+putty -telnet 127.0.0.1 -P 5000учитывая перенос портов управление будет консолью на хосте сервера.-u Xто же что иputty @Xдля Windows новом окне как в 1.4. Для Linux то же что иplink -load X. Перед стартом putty алиас X создаётся из ssh алиаса X.-zu Xто же что иplink -load Xкак в 11.8.-s .как в 10.2.-88 .то же что-UU+ стартует веб-сервер на хосте dssh-сервера127.0.0.1:8008+ локальный порт 127.0.0.1:8008 переносится на порт 127.0.0.1:8008 сервера +chrome http://127.0.0.1:8008учитывая перенос портов управление консолью будет на хосте сервера.-22 -88 .то же что-UU+ 127.0.0.1:5002 и 127.0.0.1:8008 переносятся на 127.0.0.1:5002 и 127.0.0.1:8008 сервера + стартует RFC2217 телнет-сервер на127.0.0.1:5002+ стартует веб-сервер на127.0.0.1:8008+chrome http://127.0.0.1:8008учитывая перенос портов управление консолью будет на хосте сервера.-s20 Xили короче-s Xкак в 10.2 + 127.0.0.1:5000 sshd-сервера X переносится как-Rна 127.0.0.1:5000 локального телнет-сервера с RFC2217. Это работает не только c dssh-сервером.-H host:[port5000] X127.0.0.1:port5000 переносится sshd-сервером X на host:port5000 + локальный телнет-клиент по RFC2217 управляет через sshd-сервер X телнет-сервером с RFC2217 на host:port5000 как в 9.9. Это работает не только c dssh-сервером. Отданная как в 11.3 через sshd-сервер X консоль может использоваться как в 11.4 так и 11.2.-sкак в 10.2.dssh -t X dssh -22илиssh -t X dssh -22как 11.2 только через sshd-сервер X.
12. Параметры для VNC доступа. Передавать VNC трафик можно и через посредника ssh-j.com, но не будем злоупотреблять его добротой - лучше использовать VNC напрямую:
- sshd.lan на хосте запущен sshd и он доступен через LAN. Локальный sshd-сервер.
- sshd.wan на хосте запущен sshd, роутер настроен для переноса порта 22 с sshd.wan на sshd.lan:22 и он доступен через WAN. Глобальный dssh-сервер.
- dssh.lan на хосте запущен
dssh _и он доступен через LAN. Локальный dssh-сервер. - dssh.wan на хосте запущен
dsshилиdssh +, роутер настроен для переноса порта 2200 с dssh.wan на dssh.lan:2200 и он доступен через WAN. Глобальный dssh-сервер. - dssh.x на хосте запущен
dsshи он доступен и c LAN и с WAN. - vncserver.lan - на хосте установлен vnc-сервер и он доступен через LAN. Показывающий локально.
- vncserver.sshd.wan - на хосте установлен vnc-сервер и он доступен через WAN как sshd.wan. Показывающий глобально через sshd.
- vncserver.dssh.wan - на хосте установлен vnc-сервер и он доступен через WAN как dssh.wan. Показывающий глобально через dssh.
- vncviewer.lan - на хосте установлен vnc-клиент и он доступен через LAN. Наблюдатель локально.
- vncviewer.sshd.wan - на хосте установлен vnc-клиент и он доступен через WAN как sshd.wan. Наблюдатель глобально через sshd.
- vncviewer.dssh.wan - на хосте установлен vnc-клиент и он доступен через WAN как dssh.wan. Наблюдатель глобально через dssh.
- Увидеть рабочий стол vncserver.sshd.lan можно с vncviewer.lan командой
dssh -77 vncserver.sshd.lan. Если на vncserver.sshd.lan установлен dssh то используетсяdssh -077 vncserver.sshd.lan dssh -77. - Увидеть рабочий стол vncserver.dssh.lan можно с vncviewer.lan командой
dssh -077 -j vncserver.dssh.lan dssh -77или корочеdssh -77 -j vncserver.dssh.lan. - Если роутер настроен для переноса порта 22 c vncserver.sshd.wan на vncserver.sshd.lan:22 то увидеть его рабочий стол c vncviewer.wan можно командой
dssh -77 vncserver.sshd.wan. - Если роутер настроен для переноса порта 2200 c vncserver.dssh.wan на vncserver.dssh.lan:2200 то увидеть его рабочий стол c vncviewer.wan можно командой
dssh -77 .. Примерно как в viewWindowsServerDirect viewLinuxServerDirect. - Если роутер настроен для переноса порта 2200 c vncviewer.dssh.wan на vncviewer.dssh.lan:2200, а на vncserver.dssh.wan запущен
dsshто увидеть его рабочий стол можно c vncviewer.lan командойdssh -77 .- магия. Примерно как в viewWindowsServerOverDirectClient viewLinuxServerOverDirectClient. - Чтоб увидеть рабочий стол vncserver.lan c vncviewer.lan запустите на vncviewer.lan
dssh -077 sshd.lanа на vncserver.landssh -s77 sshd.lan. Режим локального sshd посредника. - Чтоб увидеть рабочий стол vncserver.dssh.wan c vncviewer.wan запустите на vncviewer.wan
dssh -077 .а на vncserver.wandssh -s77 .. Режим глобального dssh посредника. - Если на vncviewer.sshd.lan запущен sshd то чтоб с vncserver.lan показать свой рабочий стол запустите
dssh vncviewer.sshd.lan dssh -077а потомdssh -s77 vncviewer.sshd.lan. - Чтоб с vncserver.lan показать свой рабочий стол локальному наблюдателю vncviewer.dssh.lan запустите
dssh -j vncviewer.dssh.lan dssh -077а потомdssh -s77 -j vncviewer.dssh.lan. - Чтоб с vncserver.wan показать свой рабочий стол глобальному наблюдателю vncviewer.dssh.wan запустите
dssh . dssh -077а потомdssh -s77 ..
13. Параметры для SFTP доступа. Передавать SFTP трафик можно и через посредника ssh-j.com, но не будем злоупотреблять его добротой - лучше использовать SFTP напрямую:
- sftp.lan - на хосте установлен sftp-клиент WinSCP или FileZilla и он доступен через LAN.
- sftp.sshd.wan - на хосте установлен sftp-клиент и он доступен через WAN как sshd.wan.
- sftp.dssh.wan - на хосте установлен sftp-клиент и он доступен через WAN как dssh.wan.
- Увидеть файлы sshd.lan можно с sftp.lan командой
dssh -9 sshd.lan. - Увидеть файлы dssh.lan можно с sftp.lan командой
dssh -9 -j dssh.lan. - Если роутер настроен для переноса порта 22 c sshd.wan на sshd.lan:22 то увидеть его файлы c sftp.wan можно командой
dssh -9 sshd.wan. - Если роутер настроен для переноса порта 2200 c dssh.wan на dssh.lan:2200 то увидеть его файлы c sftp.wan можно командой
dssh -9. - Если невозможно подключиться напрямую к dssh-серверу на dssh.sshd.host командой
dssh -9j dssh.sshd.hostно возможно через посредникаjhкомандойdssh -J jh dssh.sshd.hostто подключаемсяdssh -9J jh,dssh.sshd.host -j :или корочеdssh -9J jh,host.dssh.sshd. - Возможность авторизоваться по сертификату ЦС имеет WinSCP, но не FileZilla. Чтоб сертификат хоста
dsshзаимствовался у PuTTY для этого в реестр WinSCP заносится признак "SshHostCAsFromPuTTY"=dword:00000001. Если конфигурация WinSCP хранится не в реестре сделайте это сами.
- Читать исходники. Иногда исходники и коментарии понятней руководств.
- Писать свою программу тщательно комментировать её и писать руководства. \8^)