Webブラウザからターミナル shellinabox

LINEで送る
Pocket

Windows からLinuxサーバにログインする場合、ターミナルエミュレータを使ってサーバにログインしていると思います。しかし出先のインターネットカフェのPCを利用している場合、勝手にターミナルエミュレータをインストール出来ませんし。場所によっては http, https 以外の通信を許可していない環境もあるかもしれません。shellinabox は、ブラウザ経由でリモートログインを実現するツールです。ブラウザからアクセス出来るので通常であれば、どんな環境からもサーバにログイン出来ます。

shellinabox は、以下のコマンドでインストールします。

$ sudo apt-get -y install shellinabox
$ sudo systemctl enable shellinabox
$ sudo systemctl start shellinabox

ブラウザを開き 4200 番ポートに https でアクセスするとこの接続ではプライバシーが保護されませんと表示されますが、特に問題ないので「Servernameにアクセス(安全ではありません)」をクリックすると、ログインプロンプトが表示されます。
 
https://servername:4200
 

 
しかし、このままではログインプロントの画面が誰でも参照できセキュリティ的に問題があります。アクセス制限を行うために apache のリバースプロキシ機能とshellinabox の localhost-only モードを利用しセキュリティを強化します。

shellinabox の設定ファイルを以下のように書き換え shellinabox を再起動します。これで localhost からしかアクセス出来ないようになります。

[/etc/default/shellinabox]
SHELLINABOX_ARGS="--no-beep"
       ↓
SHELLINABOX_ARGS="--no-beep --localhost-only"
$ sudo systemctl restart shellinabox
apache2 をインストールします。
$ sudo apt-get -y install apache2
apache のモジュールを有効にします。
$ sudo a2enmod proxy_http
$ sudo a2enmod ssl
$ sudo a2ensite default-ssl

リバースプロキシの設定をします。
[/etc/apache2/mods-enabled/proxy.conf]

<IfModule mod_proxy.c>

    ProxyRequests Off
    SSLProxyEngine on
    <Proxy *>
        Require ip 172.16.80.91     <- IPによるアクセス制限をする場合
        Require all granted         <- 全てのIPからの接続を許可する場合。
    </Proxy>
    ProxyPass /shell https://localhost:4200/
    ProxyPassReverse /shell https://localhost:4200/

    <Location /shell>

        AuthUserFile /var/www/html/.htpasswd
        AuthName "Authorization Required"
        AuthType Basic
        require valid-user
    </Location>
</IfModule>

BASIC 認証のパスワードを設定します。

$ sudo htpasswd -c /var/www/html/.htpasswd username (任意のユーザ名)
New password:
Re-type new password:
Adding password for user username
apache2 の再起動を行います。
$ sudo systemctl restart apache2.service

https://servername/shell

先ほど設定した BASIC 認証の ID とパスワードが要求されるので、設定した値を入力するとログインプロンプトが表示されます。

LINEで送る
Pocket

  • このエントリーをはてなブックマークに追加

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください