問題名

さよならリモートワーク

ストーリー

黒羽くんは普段サーバーマシンに直接ディスプレイとキーボードを接続して操作している。 しかし、サーバーを操作する必要のあるタスクが山積みの中、急遽外出の予定が生えたため、外出中にサーバーを操作し、リモートワークすることとなった。 黒羽くん曰く「まあ、SSHサーバーなんか適当にやっても動くし、公開鍵も仕込んだし外からでも適当に繋がるでしょ」とのことである。

さて遠征当日、黒羽くんは移動の休憩中にサーバーへ接続し、作業を行おうとした。 「あれ、なんか繋がらない…… この作業今日中に終わらせないとマズいのに……」 このままでは遠征を途中で取り止めて帰宅し、作業する羽目になってしまう。

黒羽くんはCLI以外でもSSH接続を使用するため、SSHの設定はコマンドライン引数ではなく設定ファイルに記述したい。 が、黒羽くんは複数端末を使用しており、端末間で設定が異なると面倒なため、できる限り設定ファイルは変更したくない。 黒羽くんからの注文は多いが、なんとかしてSSHでサーバーに接続できるようにしてほしい。

なお、設定の際にルート権限を持った user ユーザーを使用することはできるが、実際の作業にはSSHで直接 worker ユーザーにログインする必要があるらしい。 また、サーバーはセキュリティ面が怪しいのでping, SSH以外の外部からの接続は禁止している。

前提条件

  • server に外部からping, SSH以外の接続ができてはならない
  • serveruser ユーザー及び worker ユーザーには client/home/user/.ssh/id_rsa に対応する公開鍵が登録されている

制約

  • 各ホストの通信経路を変更してはならない
  • router 及び server には client を経由せずに接続してはならない
  • server に対する外部からのping, SSH以外の通信を可能としてはならない
    • 出題時点で可能であったものについは無視して良い
  • server の各ユーザーに公開鍵を追加登録してはならない
  • server/etc/ssh/sshd_config 及び /etc/ssh/sshd_config.d/ 以下に変更を加えてはならない
  • client.ssh/config を変更してはならない
    • この制約を満たせていない場合は部分点が与えられる

初期状態

  • client から serveruser ユーザーにSSHログインできない
  • client から serverworker ユーザーにSSHログインできない
  • client から routeruser ユーザーにSSHログインできる

終了状態

  • user ユーザーでログインしている client において ssh server と入力することで公開鍵認証で serverworker ユーザーにSSHログインできる
  • client.ssh/config が出題時点と同一である
  • 以上の状態が永続化されている

ネットワーク図

接続情報

ホスト名 IPアドレス ユーザ パスワード
client 192.168.50.1 user ictsc
router 192.168.51.1 user ictsc
server 192.168.52.128 user ictsc
server 192.168.52.128 worker