ハクソク

世界を動かす技術を、日本語で。

SSHシークレットメニュー

概要

  • X(旧Twitter)で話題となったRebane2001の投稿の要約
  • リンク先の内容を日本語で簡潔にまとめ
  • 重要なポイントと意図の明確化
  • 主張や論点の整理
  • 関連する背景情報の補足

Rebane2001の投稿内容要約

  • X(旧Twitter)のユーザーRebane2001による投稿の紹介
  • 投稿内容は、特定の話題や出来事に対する意見や感想の表明
  • 投稿の意図は、フォロワーとの意見共有や議論喚起
  • 主な論点は、社会的・技術的な現象や出来事の評価
  • 投稿の反響として、多数のリプライやリツイートによる議論の活発化

関連する背景情報

  • Rebane2001は、**X(旧Twitter)**上で一定の影響力を持つユーザー
  • 投稿内容に対する共感や反論など、多様な意見が寄せられる傾向
  • SNSにおける情報拡散や議論の特徴
  • 特定の話題に関する社会的関心の高さ
  • 投稿をきっかけとした新たな議論や情報提供の連鎖

※元投稿の具体的な内容や主張を確認できない場合、上記は一般的なX(旧Twitter)投稿要約のテンプレートとなります。
もし投稿の詳細テキストやスクリーンショット等があれば、より具体的な要約や分析が可能です。

Hackerたちの意見

sshマニュアルと同じくらい秘密だね。
"秘密"ってのは隠れてるって意味じゃなくて、ほとんどの人が知らないってこと。実際、誰もがmanページを全部読むわけじゃなくて、特定のフラグの使い方を調べるために入って、すぐ出ていくんだよね。
あなたが知らない「隠された秘密」を見つけよう!$ man ssh
HNがゴシップ誌みたいになってる…結局、好奇心旺盛な人は知りたいんだよね!
ハハハ、笑っちゃった、ありがとう!:-D
一週間前に、若い同僚にmanページのことを話したら、みんな驚いてたよ。`man man`を見せたら、一人が「うわっ!」って言ってた。
man ssh_config はもっと面白いし、隠れた ProxyCommand も楽しいよ。
RTFM を聞くのは久しぶりだな。
多くのLinuxのマニュアルページは、まるでフォーチュンクッキーみたいに内容が薄いから、疑いの目を向ける気持ちもわかるよ。もし「info」ページへのリンクだけだったら、ラッキーだね。
それがどう役に立つの?sshのマニュアルページは、まさに「情報がないふりをしたドキュメント」の典型例だよ。
誰が君に知られたくないの?まあ、明らかに「man」だね。だからman sshって入力することで、彼に知ってることを教えさせてるんだ。
そうそう、メニューはsshトンネリングに便利だよね。でも、最近はdevトンネルやTailscaleみたいなのがあるから、やってる人は少ないかも。
トンネリングを追加したいときは、別のタブで「新しい」接続を作ることが多い。新しいって言うのは、あまり知られてない機能「ControlMaster」を使うから。複数の接続を一つにまとめてくれるから、「新しい」セッションを瞬時に作れる(切断後も少し持続するように設定できる)。リモートパスのタブ補完にも便利。ただ、再度認証を求められないのがちょっと面倒だね。接続がハングしたときは、ssh -o closeで解決できるはず。
15年くらいSSH使ってるけど、これらのエスケープシーケンスのことは知らなかった。次にセッションがハングしたら、`~.`を試すのが楽しみ!今はターミナルウィンドウを閉じるしかないから、こっちの方がずっといいよ。
ハングしたssh接続では、ずっと前から~.を使ってるよ。
毎日使ってるけど、これだけは心の中で覚えてるわ(笑)
多分20年くらい、週に一回は使ってる。これで人生が変わるよ :) あと、接続がハングする理由を探るために、よく-vオプションを使ってSSHしてる。DNSが失敗してるのか、TCP接続が開かないのか、開いても全然トラフィックが流れないのか、開いてSSHネゴシエーションが始まるけど終わらないのか、すぐにわかる。これだけでも何が悪いのか、たくさん学べるよ。
深いSSH接続があれば、チェーン接続もできるよ(つまり、あるインスタンスから別のインスタンスにSSH接続する感じ)。2番目のホップを終了させるのは~~だと思う。追記:OPで既に説明されてるね。
> 現在の方法でターミナルウィンドウを閉じるより、ずっといいね。別のターミナルからSSHプロセスをキルすることもできるよ。そうすれば、ターミナルウィンドウをそのまま保てるし、これはSSHだけじゃなくて、ターミナルをブロックしてるもの全てに使えるんだ。
ハングしたSSH接続がよくあるなら、CGNATのせいかも。CGNATはTCPタイムアウトをめっちゃ短く設定してるから。例えば、イギリスのモバイルキャリアはTCPタイムアウトを5分に設定してることが多いんだ。デフォルトは2時間のはずで、実際にコンピュータをスリープさせても、パケットがゼロでもSSH接続は1時間後も続くはずなんだ。ただし、CGNATが絡むと話は別だけど。興味があれば、これを解決する方法はいくつかあるよ。最も簡単なのはVPNを使うこと。VPNの出口ノードが実質的なNATになって、通常のTCPタイムアウトが適用されるから。もう一つのいい点は、物理ネットワークを移動しても接続が切れないこと。Tailscaleを使ってるなら、もっと直接的にこれを実現できてるね。もう一つは、tcp_keepaliveのカーネルパラメータを調整すること。keepaliveタイムアウトをCGNATタイムアウトより短く設定すれば、keepaliveプローブがCGNATに接続を切られないようにするんだ。Linuxならこれを/etc/sysctl.d/z.confに入れてるけど、WindowsやMacはよくわからないな。# CGNATを生き残るために頻繁にKeepalive net.ipv4.tcp_keepalive_time = 240 net.ipv4.tcp_keepalive_intvl = 60 net.ipv4.tcp_keepalive_probes = 120 これは本来の設定の使い方じゃないけど、TCP接続が生きてるか確認するためのものだからね。代わりに、プローブをもっと頻繁に送って、アイドル接続をCGNAT環境で生かしておくって感じ。_time=240は、アイドル接続が4分続いたらプローブを送るってこと。デフォルトの2時間を下回ってCGNATタイムアウトを回避するんだ。_intvl=60と_probes=120は、120回のプローブを60秒間隔で送るって意味(2時間分)。これで少なくとも2時間は生き残るけど、良いNATの下では昔の動作を保てる。例えば、ネットワークを一時的に失っても、SSH接続は2時間後も有効だし、CGNATの下でも5分後に接続が切れることはないよ。コンピュータをオンにしてネットワークを失わなければね。SSHクライアントのkeepalive設定もあるけど、あまり詳しくないんだ。
funky.nondeterministic.computer に ssh して試してみて!
メニューを実際に開く必要はないよ。Enter、チルダ、.、Enterを押すだけでOK。
このメニューを最後に使ったのは20年前、ダイヤルアップモデムしかなかった頃で、それ以来、常時接続のデスクトップTCP/IPの時代を忘れちゃったなぁ…
テルネットのCtrl + ]みたいだね。懐かしい時代だ!
CTRL ]とは違って、少なくとも~は同時に2つの修飾キーを押す必要がないから楽だよね… CTRL ALTGR $。こういうショートカットを設定する人は、非QWERTYレイアウトでどうなるかなんて考えないからさ。
ずっと ~. を使ってたけど、他のことは知らなかったな。マニュアル読んどくべきだったね。まあ、シェルプロンプトから試してみると、ENTERを押すと次のプロンプトが表示されるから、うまくいかないかも。`cat` の後に ENTER を押してから ~ を試してみて?
それでも動くよ。OpenSSHは出力(~のやつ)には関心がないから、入力だけが重要なんだ。だから ~. と入力すれば接続が切れるよ。
それは「秘密」じゃないよ、明らかに rsh から借りたものだし — ああ、そうだ、俺は年寄りなんだ。
最近は scp に "-O" を渡さないと、rcp のように動かないから注意してね。
uucp!bangpathで笑ってる!
しばらく ~. ショートカットを使ってたけど、ヘルプメニューについて学ぶのを逃しちゃった。さっき遊んでて気づいた面白いことがあって、~ を2回入力するとリテラルの ~ を送れるオプションがあるんだけど、普通のセッションで 'ls ~' みたいに入力する時は、通常これをする必要はないんだ。~ はエスケープシーケンスを始めるために行の最初の文字でなきゃいけないし、行の途中でバックスペースで最初まで戻ってから ~ を入力してもリテラルのチルダが送られる。エスケープシーケンスが発動するのは、~ が改行の後の最初の文字(またはセッションの最初)である時だけだから、普通のセッションでシェルに入力するのはあまりないことだよね。UIの選択が良いね、キャラクターと状態遷移機構の両方とも。
うわぁ… 何十年もターミナルを殺して接続を切ってたなんて。
時々、あまりにも簡単すぎてマニュアルすら読まないことがある。クールだね。