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
. - Вместо PuTTY, plink,
busybox microcom
для доступа к локальной последовательной консоли на порту/dev/ttyUSB0
не для Windowsdssh -H/dev/ttyUSB0
илиdssh -HttyUSB0
или корочеdssh -H0
. - Вместе с 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.com
0.4. Еслиdssh
на direct.accesible.dssh то можно подключится к немуdssh -j
. Для чего через посредника узнаём direct.accesible.dssh через CGIdssh -T : dssh -j :
а потом напрямую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
если есть PuTTY будет запущенdssh -u X
. Чтобы запустить без PuTTYdssh -T X
илиdssh -ND:1080 X
. - Иначе используем вместе с ssh
dssh -Z X
. - Иначе для доступа к локальной консоли через браузер
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 задаётся именем
59d7a68@ssh-j.com
где 59d7a68 это начало хэша комита git смотриgit log -1
или первую строку при запускеdssh -V
то есть без дополнительный параметров клиентdssh .
подключится к dssh-серверу через посредника если они одного комита. - Для доступа клиента к dssh-серверу другого комита нужно указать имя через ключ
-l
dssh -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-серверу через
putty
,plink
илиssh
важно иметь доступ к агенту ключей с хотя бы одним ключём напримерid_rsa
и хоть раз запуститьdssh . exit
чтоб записать сертификат замка в~/.ssh/id_rsa-cert.pub
и сертификат хоста в~/.ssh/dssh
.
- Вывод кастомных сообщения - 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 proxy
encPassword bar
иDynamicForward 127.0.0.1:1080
чтоб не вводить пароль при запускеdssh -5 proxy
для использования Socks5 прокси 7.11. Чтобssh
не ругался на неизвестный параметрencPassword
в начале~/.ssh/config
вставьтеIgnoreUnknown *
- Для системного прокси на Windows нужен Socks4 прокси поэтому
dssh proxy
7.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/config
ProxyCommand 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=2
ProxyHost=127.0.0.1
ProxyPort=1080
иplink
сделает то же что иProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p
илиProxyCommand connect -S 127.0.0.1:1080 %h %p
ssh-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 D1080
ProxyPutty socks5://127.0.0.1:1080
а дляHost overSocks5
ProxyCommand 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
. Если на host.dssh.sshd запущен и dssh-сервер и sshd-сервер и невозможно подключитьсяdssh -j host
то можноdssh -J host.dssh.sshd -j :
илиdssh host.dssh.sshd dssh -j
. Смотри 2.2.
- Подключаем USB2serial переходник в USB порт устройства под управлением RouterOS.
- Запускаем удалённый доступ к последовательной консоли RouterOS
/port remote-access add port=usb1 tcp-port=5000 protocol=raw
Ports. Для смены режима на консоле/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] X
127.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 трафик можно и через посредника, но не будем злоупотреблять его добротой - лучше использовать 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 .
.
- Читать исходники. Иногда исходники и коментарии понятней руководств.
- Писать свою программу тщательно комментировать её и писать руководства. \8^)