ssh-agent に、サブコマンドを指示する引数を付けた場合の挙動について

ssh-agent には次のようにして、サブコマンドを指示する引数を付ける起動法があります。

ssh-agent cmd

たとえば ssh-agent bash のようにして、エージェント配下の環境を引き継ぐために使うものですが、man ssh-agent を読むと、その際の挙動について、次のようにあります。

If a command line is given, this is executed as a subprocess of the
agent.  When the command dies, so does the agent.

そのまま素直に読めば ssh-agent が親プロセスとなり、子プロセスの側で引数として名前を与えたものを exec する、という意味に読めます*1……が、実際にやってみると、逆であることがわかります。

以下は私の手元の FreeBSD で、試してみた一例ですが(ps コマンドの結果から見つけやすくするため、起動するコマンドは csh にしています)、

$ exec ssh-agent csh
% ps axd
  PID TT  STAT       TIME COMMAND
    0  -  DLs     4:16.86 [kernel]
    1  -  ILs     0:00.08 - /sbin/init --
  121  -  Is      0:00.01 |-- adjkerntz -i
(略)
73430 v0  R       0:00.63 |-- mlterm
73431 15  Ss      0:00.08 | `-- csh
73445  -  Ss      0:00.00 |   |-- ssh-agent csh
73910 15  R+      0:00.01 |   |-- ps axd
73911 15  S+      0:00.01 |   `-- less

というように、親プロセスのほうが引数として与えたほうを exec していて、ssh-agent は子プロセスの側に、つまり、それ以降にこのシェルから実行されるプロセスから見ると、きょうだいプロセスの位置にあります。

実装の変更にドキュメントが追随していないだけか、とも思ったのですが、どうも最初からのようです。

もうちょっと調査したら、OpenSSH プロジェクトに報告するつもりで……いたのですが、だいぶ放置してしまっています。どこにもアウトプットしてなかったので、ここに置いておきます。

*1:記憶にある限り、既存の解説書などの図でも、全てそのようになっています。

技術書典7にサークル参加します

配置は「え19C」です。新刊は、技術系よろず(?)同人誌「ElectroComplex」3号(¥300)です。内容は今までと同じく記事1本で、サークル詳細から引用しますが「ネットにはいまいちスッキリとした解説の見つからない、バックアップにおけるハノイの塔手法(Tower of Hanoi backup rotation scheme)について、筆者による独自研究の粋を尽くした解説をお送りします」という記事となります。

既刊まとめ買いのディスカウント価格は検討中です。また、在庫状況は全く読めていません……

技術書典6にサークル参加します

配置は「い16」です。新刊は、技術系よろず(?)同人誌「ElectroComplex」2号(¥300)です。内容は創刊号に引き続き記事1本で、電子工作の製作例紹介となります。特殊なMOSFETを使用した無電源AMラジオについて解説します。

既刊(創刊号)については、¥300 ==> ¥200 で頒布します。在庫は(前回の頒布数から予測すると)十分にある予定です。

PCを別のケースに入れ替えた話

先代の Antec P182 が、先日の分解清掃の際にフロントパネルの爪をいくつか折ってしまったりなどだいぶ老朽化した感じもあり(また、マザーボード取付部にメンテナンスホールが無いなど設計も古いので)、新しいケースに入れ替えることにしました。ケースには SilverStone SST-FT02 を選びました。

発売からそれなりに時間が過ぎていることもあり、流通状況はあまり良くありませんが、オークションに出るのを待つなどしなくても通販系のショップなどにたまに入荷するようです(ただし、異常に高額で売ってる店もあるので注意)。FT02 と RV02 の、マザーボードの90度回転配置と(通常の配置では後部になる側が、上部になる)、左右が逆の配置(マザーボードを右側面ではなく左側面に取り付ける)は、同様のものを他に見ないユニークなもので、しばらくはこのケースを使う予定です。

1枚目の写真ですが、組込み前にファンを全て換装しました。下部の3連180mm吸気ファンは SST-AP181 から AP182 に、上部の120mm排気ファンは Noctua の風量特化型ファン NF-S12A を付けています。AP182 は可変範囲が広く、また可変範囲であれば任意の速度に設定できるので、冷却重視にも静音重視にもベストの選択かと思います。ボリュームのつまみをいったん外す必要がありますが、ケースの元々は速度設定スイッチがあった場所に同じネジで取り付けできます(LとHのマークが逆になりますが。あと配線の向きが合わないので、周辺と干渉するのを避けるために曲げざるをえませんが、その際に端子を折ってしまわないよう注意)。

また排気ファンは、吸気をメインとする「正圧」がコンセプトの SilverStone のケースでは、正常動作中であれば静圧は必要ないわけですから、やはり風量特化型ファンがベストの選択かと思います。

CPUクーラーです。メーカーの公称では165mmまでとなっていますので、Cryorig のハイエンドクーラーなどでなければたいていは入るでしょう。Noctua NH-D15 がやはりちょうど公称165mmです。

こちらのクーラーは、別のパーツの店頭在庫がありそうだった店に偶然に残っていた、サイズの「無限 大」(Mugen Max, SCMGD-1000)を、SST-FHP141 のデュアルファンにしたものです(こちらも現在、かなり流通が細くなっていますが……)。ちょっと特殊で38mm厚のため、25mm厚ファン用クリップで取付けられるよう、長さ28mmのスペーサーを加工してクリップ取付用の台座にしています。まぁはっきり言って無駄なこだわりですので、普通には、このファンを挟むようなほぼ専用の設計と言える SST-HE01 を使えばよいでしょう。HE01 であればトリプルファン化も可能ですし。

組み込み後の写真です。電源の部分のパンチングメタルは、かなりでかい(長い)電源でないと位置が合いませんので、たいていの場合、電源の吸気はケース内側からにせざるをえないかと思います(あるいは正圧設計を活用してファンレス電源を組み合わせるのも良い手かも。SST-NJ600 が出るのを待ってるんですが……いつ出るのやら)。狭い設置場所で無理に撮影したため(ライカ判に換算して14mmのレンズ)、不自然に奥行きが強調された、不動産屋のイメージ写真のようになっていますが、全体の感じはだいたいつかめると思います。