SSH In Browser Using WebRTC
ShellInABox
Иногда нужно иметь доступ к консоли из web-браузера. Для этого есть много решений. Одно из них - shellinabox. Старая неподдерживаемая версия: https://code.google.com/p/shellinabox/ она есть в репозиториях ubuntu. Текущая поддерживаемая: https://github.com/shellinabox/shellinabox
Будем собирать текущую:
sudo apt-get install git libssl-dev libpam0g-dev zlib1g-dev dh-autoreconf git clone https://github.com/shellinabox/shellinabox.git && cd shellinabox autoreconf -i ./configure && make dpkg-buildpackage -b
Если встречается ошибка:
undefined reference to `SSL_CTX_set_options'
То нужно переустановить старую версию libssl-dev и пересобрать:
sudo apt-get -y install libssl1.0-dev ./configure && make dpkg-buildpackage -b -d
И потом ставить:
sudo dpkg -i ../shellinabox_{ver}_{arch}.deb
После установки shell доступен по адресу: https://___SERVER_IP___:4200 Демон запускается скриптом: /etc/init.d/shellinabox Конфигурационный файл лежит тут: /etc/default/shellinabox Описание возможных параметров запуска доступны тут: https://github.com/shellinabox/shellinabox/wiki/shellinaboxd_man
ShellInABox за haproxy
Мне было необходимо, чтобы shellinabox работал на страничке типа https://site.name/sh/
/etc/haproxy/haproxy.cfg
frontend http mode http bind *:80 use_backend sh if { path_beg -i /sh } backend sh mode http server local_host localhost:4200
ShellInABox за nginx
server { listen 443; server_name server.name; client_max_body_size 1024M; ssl on; ssl_certificate /etc/ssl/certs/server.crt; ssl_certificate_key /etc/ssl/private/server.key ssl_session_timeout 360m; ssl_protocols SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:5000; proxy_read_timeout 600s; } location /sh { proxy_pass http://127.0.0.1:4200/sh; access_log off; proxy_redirect default; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } server { listen 80; server_name server.name; return 301 https://$host$request_uri; }
/etc/default/shellinabox
# Should shellinaboxd start automatically SHELLINABOX_DAEMON_START=1 # TCP port that shellinboxd's webserver listens on SHELLINABOX_PORT=4200 # Parameters that are managed by the system and usually should not need # changing: # SHELLINABOX_DATADIR=/var/lib/shellinabox # SHELLINABOX_USER=shellinabox # SHELLINABOX_GROUP=shellinabox # Any optional arguments (e.g. extra service definitions). Make sure # that that argument is quoted. # # Beeps are disabled because of reports of the VLC plugin crashing # Firefox on Linux/x86_64. SHELLINABOX_ARGS="--no-beep -s /sh/:SSH:localhost -t"
Discussion