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 работал на страничке типа 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
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;                                                                                                                                                                                                                    
}                                                                                                                                                                                                                                                            
    
# 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"
Enter your comment. Wiki syntax is allowed:
 
  • linux_faq/ssh_in_browser.txt
  • Last modified: 2020/01/13 08:20
  • by admin