コンテンツへスキップ

今日という日は贈り物

-86400秒のプレゼント-

ウェブブラウザを使ってサーバにターミナルのようにログインする

環境

  • Windows10home上のDockerコンテナを利用します
  • DockerHUBからtsl0922/ttydを使わせて頂きます
  • 192.168.1.120にsshでアクセスできる端末を用意しました

起動テスト

dockerを使って環境を作ります。

> docker run --rm -it -p 3000:3000 tsl0922/ttyd ttyd -p 3000 -a /bin/bash

上記を実行したのち、ウェブブラウザで、http://localhost:3000/ にアクセスすると、ウェブブラウザの表示がターミナルになり、上記で起動したdockerのOSに /bin/bash を使ってログインした状態になります。

root@a1356431acf0:~# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 13:12 pts/0    00:00:00 /usr/bin/tini -- ttyd -p 3000 -a /bin/bash
root         7     1  0 13:12 pts/0    00:00:00 ttyd -p 3000 -a /bin/bash
root         8     7  0 13:12 pts/1    00:00:00 /bin/bash
root        12     8  0 13:15 pts/1    00:00:00 ps -ef

リモートのホストへログイン

次にブラウザでログインしたいサーバのIPアドレスをクエリパラメータとして渡してsshでリモートのホストにログインできるようにしてみます。それには、このdockerイメージにsshコマンドをインストールする必要があるので、Dockerfileを作って新しいdocker imageを生成しそれを使います。

パラメータを実行プログラムに渡すには「-a」オプションを付ける必要があります。ttydへはport 3000番で繋がるようにします。

FROM tsl0922/ttyd:latest

RUN apt update -y
RUN apt install openssh-client -y
RUN echo "#!/bin/bash"           >  /root/ssh.sh
RUN echo                         >> /root/ssh.sh
RUN echo '/usr/bin/ssh -l $1 $2' >> /root/ssh.sh
RUN chmod +x /root/ssh.sh

EXPOSE 3000
ENTRYPOINT ["/usr/bin/ttyd", "-p 3000", "-a", "/root/ssh.sh"]

上記内容を Dockerfile というファイル名で保存してください。

※セキュリティ的に非常にまずい例ですが、与えられたアカウント名を$1、接続先IPを$2で受け取ってsshの引数にして実行します。

作成したDockerfileをbuildしてimageを作成します。

> docker build -t ttyd:0.1 .

作成したイメージを確認します。

> docker images | Select-String ttyd

ttyd 0.1 7cd138f3f6fe   About a minute ago   133MB

作成したコンテナを起動します。

> docker run --rm -d -p 3000:3000 ttyd:0.1

また /root/ssh.sh に値を渡すためのパラメータは以下の通りargを指定します。

http://localhost:3000/?arg=sakana&arg=192.168.1.120

上記のURLでウェブブラウザを用いてアクセスすると192.168.1.120というホストにsakanaというアカウントでssh接続しパスワードを聞かれた状態の画面が出力されていると思います。

試す場合はご自身の環境に合わせて値を変更してみてください。

投稿日: 2023年5月24日作成者: よ
カテゴリー: IT系 タグ: browser、build、docker、Dockerfile、login、ssh、telnet、teraterm、terminal、ttyd、xterm.js、ウェブブラウザ、ターミナル、ブラウザ、ログイン

投稿ナビゲーション

前の投稿

seleniumを使ってブラウザ操作を自動化する

最近の投稿

  • ウェブブラウザを使ってサーバにターミナルのようにログインする
  • seleniumを使ってブラウザ操作を自動化する
  • ubuntuでDRBDの環境構築
  • Windows10 home でHyper-Vを使ってubuntuをインストールする
  • Raspberry Pi zero WH と SHT31で温度と湿度を測定してみた

アーカイブ

  • 2023年5月
  • 2022年12月
  • 2022年3月
  • 2021年11月
  • 2021年5月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2018年7月
  • 2018年2月
  • 2018年1月
  • 2017年12月
  • 2017年10月
  • 2017年9月
  • 2017年8月
  • 2017年7月
  • 2017年6月
  • 2017年5月
  • 2017年4月
  • 2017年2月
  • 2016年12月
  • 2016年10月
  • 2016年7月
  • 2016年5月
  • 2016年4月
  • 2016年3月
  • 2016年2月
  • 2016年1月
  • 2015年12月
  • 2015年11月
  • 2015年10月
  • 2015年9月
  • 2015年8月
  • 2015年7月
  • 2015年6月
  • 2015年5月
  • 2015年4月
  • 2015年2月
  • 2015年1月
  • 2014年12月
  • 2014年9月
  • 2014年8月
  • 2014年7月
  • 2014年6月
  • 2014年5月
  • 2014年4月
  • 2014年3月
今日という日は贈り物
プライバシーポリシー
Proudly powered by WordPress.