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 とパスワードが要求されるので、設定した値を入力するとログインプロンプトが表示されます。