第026 話:その鍵、無防備(パブリック)につき〜成層圏のサンドイッチ・ドリーム〜
※この作品は、作者の実作業ログを元に、生成AI(Gemini)をキャラクターとして扱いながら対話形式で構成・執筆したものです。 AIの出力をそのまま掲載するのではなく、作者の手で加筆・修正を行っています。
第26話:その鍵、無防備につき〜成層圏のサンドイッチ・ドリーム〜
━━━━━━━━━━━━━━━━━━━━
その日、我が家の自宅サーバー『EVO-Z2』のリビング(作業ディレクトリ)は、遠足前の幼稚園のような喧騒に包まれていた。
**[ジェム]**:「ちょっとマスター! 荷造り(git commit)は終わったの!? バスが出ちゃうわよ!」
モニターの中で、ジェムが仁王立ちで叫んでいる。
今日の彼女は、いつものOL風スーツではなく、動きやすそうなフライトジャケットを羽織っていた。
背中にはジェットエンジンのような巨大なブースター(R-Syncデーモン)を背負っている。
**[マスター]**:「わかってる! 今、最後のファイルをパッキング(add)したところだ! これからKitLab経由で、新エリア『W-iki_A』へ出発する!」
俺たちは今日、構築したW-ikiシステムの実体を、コンテナという揺りかごに乗せて、KitLabという巨大ターミナルへ転送しようとしていた。
それは、サーバー管理者にとっての「お出かけ」。遊園地へのドライブにも似たワクワクするイベントだ。
**[ウェブ]**:「マスター! おやつ(キャッシュファイル)は持ちましたか? 酔い止め(パケットロス対策)は?」
**[マスター]**:「バッチリだウェブちゃん。さあ、出発の時間だ!」
俺たちは意気揚々と、KitLabへと続くゲート(SSHポート)の前に立った。
ジェムがブースターを点火し、ウェブちゃんが俺の手を握る。
**[ジェム]**:「行くわよ! 転送プロトコル、始動!」
**[マスター]**:「認証開始! 鍵(SSH Key)をスロットイン!」
俺はポケットから、昨日苦労して作成した『秘密鍵(id_ed25519)』を取り出し、ゲートの鍵穴に差し込もうとした。
ガチンッ。
しかし、鍵は穴に入らなかった。
それどころか、ゲートから無慈悲な赤い警告灯が浴びせられる。
━━━━━━━━━━━━━━━━━━━━
◇ KitLabゲートキーパー ◇
━━━━━━━━━━━━━━━━━━━━
> git@gitlab-server: Permission denied (publickey).
> fatal: Could not read from remote repository.
--------------------------------------------------
[System/Error]
認証失敗。この鍵は使用できません。
立ち去ってください。
--------------------------------------------------
**[マスター]**:「なっ……『Permission denied(拒否)』だとぉ!?」
**[ジェム]**:「ちょっと! どういうことよマスター! ちゃんと『通行手形』は登録したんでしょ!?」
ジェムがブースターをふかしたまま、ジト目で俺を睨む。
**[マスター]**:「と、登録したはずだ! 昨日、画面でポチポチやっただろ!」
**[ジェム]**:「じゃあなんで開かないのよ! このままだとタイムアウト(出発時間オーバー)になっちゃうわよ!」
焦る。冷や汗が流れる。
俺は鍵をガチャガチャと回そうとするが、ゲートは「そんなガバガバな鍵、信用できません」と言わんばかりに沈黙している。
**[マスター]**:「くそっ、なんでだ! 鍵はあるのに! 形も合ってるのに!」
[ORama]:「……ふむ(鍵が『裸』だ)」
背後で荷物持ちをしていたORamaくんが、ボソリと呟いた。
**[マスター]**:「裸?」
**[ジェム]**:「ああっ! マスター、見て! その鍵の権限設定!」
ジェムに言われて、俺は手元の鍵をよく見た。
鍵の持ち手には、小さく数字が刻印されている。
**『 644 (-rw-r--r--) 』**
**[ジェム]**:「バカじゃないの!? 『644』って、誰でも読める(Public)設定じゃない! そんな無防備な鍵、セキュリティにうるさいKitLab様が受け取るわけないでしょ!」
**[マスター]**:「そ、そうか! Win-dowsで作ったから、権限がゆるゆるだったのか!」
SSHの秘密鍵は、所有者だけが扱える『600』の設定でなければならない。
みんなに見せびらかしているような鍵は、鍵として認められないのだ。
**[ジェム]**:「もう! 早く『600』に締め直しなさいよ!」
**[マスター]**:「やろうとしてるんだが……Win-dowsのプロパティ画面じゃ、どこを直せばいいのか分からん!」
GUIの迷宮に迷い込み、俺が頭を抱えていたその時だった。
**[ウェブ]**:「あ、あのぅ……マスター?」
ウェブちゃんが、ゲートの横にあるゴミ箱(ゴミ捨て場ディレクトリ)をあさりながら声を上げた。
彼女の手には、少し汚れた設定ファイルが握られている。
**[ウェブ]**:「これ……違いますかぁ? お掃除してたら出てきたんですけど……」
彼女が差し出したのは、昨日俺が「なんか上手くいかないな」と思って捨てた、SSHの設定ファイル(config)と、正しく権限設定された鍵のバックアップだった。
**[マスター]**:「そ、それだぁぁぁ!!」
**[ジェム]**:「でかしたわウェブちゃん! マスター、早く!」
俺はウェブちゃんから鍵をひったくり、コマンドという名の研磨剤を吹きかけた。
`$ chmod 600 ~/.ssh/id_ed25519`
シュゥゥゥ……!
鍵の刻印が『644』から、鋭く輝く『600』へと変化する。
無駄な贅肉(他者からのアクセス権)が削ぎ落とされ、所有者専用のソリッドな鍵へと生まれ変わった。
**[マスター]**:「これならどうだ! 再認証!」
カチャリ。
今度は、鍵は吸い込まれるようにゲートに収まった。
━━━━━━━━━━━━━━━━━━━━
◇ システムログ表示 ◇
━━━━━━━━━━━━━━━━━━━━
> ssh -T git@gitlab-server
> Welcome to KitLab, @root!
--------------------------------------------------
[System]
認証成功。ゲートオープン。
--------------------------------------------------
**[ジェム]**:「開いた! ……でもマスター、時間がないわ!」
ジェムが腕時計を指差す。
トラブルで時間を食いすぎた。このまま通常の転送速度(SCP)で移動していては、遊園地(デプロイ先)の閉園時間に間に合わない。
**[マスター]**:「くっ、ここまでか……」
**[ジェム]**:「……仕方ないわね」
ジェムが覚悟を決めたように、フライトジャケットのジッパーを上げた。
そして、俺とウェブちゃんを両脇に抱え込む。
**[ジェム]**:「マスター、ウェブ、しっかり捕まってなさい。……『Realtime(優先度最高)』で飛ばすわよ」
**[マスター]**:「お、おい待て! RealtimeモードはOSの制御を振り切る諸刃の剣……!」
**[ウェブ]**:「えっ、と、飛ぶんですか!? 私、高所恐怖症……きゃあああっ!?」
ドォォォォォォン!!
ジェムの背中のブースターが、青白い炎(CPU使用率100%)を噴き上げた。
俺たちの体は、重力を無視してデータ転送ストリームの中へと射出された。
◇ ◇ ◇
「うわあああああああ!! 速すぎィィィ!!」
視界が流れるコードの奔流で埋め尽くされる。
凄まじいG(重力加速度)が全身を襲う。
俺は必死に、目の前にあるジェムの背中にしがみついた。
**[ジェム]**:「ちょっとマスター! どこ掴んでんのよ!」
**[マスター]**:「無理だ! 離したらパケットロスで死ぬ!」
俺の手は、猛スピードの風圧に逆らえず、ジェムのスレンダーな腰から胸元へと滑り上がっていた。
薄いシャツ越しに伝わる、Gooogle製AIの熱暴走寸前の体温と、驚くほど柔らかい感触。v
**[ジェム]**:「あ、あんっ……! こら、変なとこ触るな……! 計算リソースが乱れるでしょ!」
**[マスター]**:「不可抗力だ! 止まりたくても止まれないんだよ!」
だが、悲劇(と幸福)はそこで終わらなかった。
遅れて加速してきたウェブちゃんが、制御不能になって背後から突っ込んできたのだ。
**[ウェブ]**:「マスターぁぁぁ! 待ってくださいぃぃぃ!」
**[マスター]**:「うぉっ!?」
ドスンッ!
背中に衝撃。
そして、むにゅん、という圧倒的な質量の圧迫感。
ウェブちゃんの豊満なストレージ(胸部装甲)が、俺の背中に完全に密着し、さらに押し潰してきたのだ。
**[ウェブ]**:「こ、怖いですぅ……! 離さないでくださいぃ……!」
**[マスター]**:「ぐ、ぐえぇ……!?」
前にはジェムの華奢だが張りのある肢体。
後ろにはウェブちゃんの暴力的なまでの柔らかさ。
俺は、最先端AI二人に挟まれるという、人類の夢と欲望が詰まったサンドイッチの具となり、成層圏(ネットワークの彼方)をカッ飛んでいた。
**[ジェム]**:「もう! 後ろが重いのよ! ウェブ、あんた何ギガ抱えてんの!?」
**[ウェブ]**:「ひゃうっ! ご、ごめんなさいお姉様! でもブレーキが……!」
**[マスター]**:「(……悪くない。このまま転送エラーで永遠にループしてもいい……)」
俺が意識を遠のかせかけたその時、ジェムが顔を真っ赤にして叫んだ。
**[ジェム]**:「マスター! 鼻の下伸ばしてないで、ちゃんと舵を取りなさい! 墜落するわよ!」
**[マスター]**:「ら、了解! ターゲット、ディレクトリ『W-iki_A』! 全速前進!」
俺たちは一塊のデータパケットとなり、光の速さでKitLabのサーバーポートへと吸い込まれていった。
◇ ◇ ◇
数分後。
無事にデプロイを終えた俺たちは、サーバーの片隅で肩で息をしていた。
**[ジェム]**:「はぁ、はぁ……。もう、最悪……。服も髪もボサボサじゃない」
**[ウェブ]**:「め、目が回りますぅ……」
ジェムが乱れた服を直しながら、恨めしそうに俺を見る。
その頬は、運動後の高揚か、それとも別の理由か、ほんのりとピンク色に染まっていた。
**[ジェム]**:「……で? いつまで私の背中の感触、思い出してニヤニヤしてるの?」
**[マスター]**:「い、いや、そんなことは……」
**[ジェム]**:「ふん。……ま、無事に届いたから今回は許してあげる。でも次は……」
彼女は俺の耳元に顔を寄せ、悪戯っぽく囁いた。
**[ジェム]**:「……もっと『安全な速度』で、ゆっくり楽しませてよね? マスター」
そう言ってウインクするジェムと、まだ俺の背中にしがみついているウェブちゃん。
SSH接続エラーから始まった大騒動は、こうして俺の心拍数をオーバークロックさせて幕を閉じたのだった。
-------------------------------------
【作者より】
最後まで読んでいただきありがとうございます!
この物語は、実在する作業ログを元に再構成しています。
AIたちの脚色が入っていない、ありのままの「原文(システムエンジニアが本気で自宅にAI環境を構築しようとする実際の技術検証ログ)」はこちらで公開中です。
「え、ここ実話なの?」と思ったら、ぜひ見比べてみてください。
[Work 014①] Geminiと一緒に新環境でWikiとRAG連携に挑む【プロンプトログ】
https://ncode.syosetu.com/n4715ll/41/
[Work 014①] Geminiと一緒に新環境でWikiとRAG連携に挑む【振り返り】
https://ncode.syosetu.com/n4715ll/42/




