[#] Использование утилит timeout & strace для мониторинга неактивности пользователя для разрыва соединения Shellinabox
habrabot(difrex,1) — All
2017-07-06 16:30:04


Недавно я занимался тем, что исследовал какие существуют решения для реализации web-ssh прокси-сервера. Суть задачи заключается в том, чтобы дать пользователям возможность соединяться с произвольным ssh-сервером посредством web-интерфейса. Обычно, решения web-ssh предназначены для соединения с сервером, на котором они развернуты, но в рамках моей задачи мне хотелось, чтобы пользователь мог указать IP, порт, имя и пароль пользователя (или ключ) и выполнить соединение с произвольным сервером. С ходу найти подобного решения мне не удалось.


> Вообще-то, конечно, есть Guacamole, но для моей задачи использование этого приложения было слишком затратным как по ресурсам разработки, так и по функциям и их организации, поэтому от Guacamole я отказался.

Однако, для открытого пакета shellinabox я обнаружил решение на [блоге][1] на немецком языке, которое я и решил довести до нужного мне уровня. В итоге, получился симпатичный контейнер Docker, который можно найти как на [GitHub][2] так и на [Dockerhub][3], который решает все необходимые задачи.



Но, статья не об этом, а о сопутствующем коде на Python, который мне пришлось написать. Дело в том, что мне не нравилось, что если пользователь открыл web ssh и куда-то ушел, то сессия будет висеть бесконечно, что на мой взгляд неприемлемо.

[Читать дальше →][4]

[1]: https://tools.bartlweb.net/webssh/
[2]: https://github.com/bwsw/webshell
[3]: https://hub.docker.com/r/bwsw/webshell/
[4]: https://habrahabr.ru/post/332544/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut