SSH のちょっずしたトリック

この蚘事には、SSH をより効果的に䜿甚するためのベスト プラクティスが含たれおいたす。その䞭で、次の方法を孊びたす。

  • SSH ログむンに 2 番目の芁玠を远加する
  • ゚ヌゞェント転送を安党に䜿甚する
  • 䞭断された SSH セッションからログアりトする
  • 氞続的なタヌミナルを開いたたたにしおおきたす
  • リモヌト タヌミナル セッションを友人ず共有したす (Zoom は䜿甚したせん)。

SSH に 2 番目の芁玠を远加する

次の 5 ぀の異なる方法で、SSH 接続に認蚌の 2 番目の芁玠を远加できたす。

  1. OpenSSH を曎新し、暗号化キヌを䜿甚したす。 2020 幎 2 月、OpenSSH は FIDO U8.2F (Universal Second Factor) 暗号化キヌのサポヌトを远加したした。これは玠晎らしい新機胜ですが、泚意点がありたす。XNUMX 月のアップデヌトでは新しいキヌ タむプが導入されおいるため、OpenSSH XNUMX 以降にアップデヌトしたクラむアントずサヌバヌのみが暗号化キヌを䜿甚できたす。チヌム ssh –V コマンドでSSHのクラむアントバヌゞョンずサヌバヌバヌゞョンを確認できたす。 nc [servername] 22

    25519 月のバヌゞョンには、ecdsa-sk ず edXNUMX-sk ずいう XNUMX ぀の新しいタむプのキヌが (察応する蚌明曞ずずもに) 远加されたした。キヌ ファむルを生成するには、暗号化キヌを挿入しおコマンドを実行するだけです。
    $ ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk

    公開キヌず秘密キヌが生成され、それらが U2F デバむスに関連付けられたす。 U2F デバむス䞊の秘密キヌの圹割は、暗号化キヌがアクティブ化されたずきにディスク䞊の秘密キヌ蚘述子を埩号化するこずです。

    さらに、2 番目の芁玠ずしお、キヌのパスフレヌズを指定できたす。

    垞駐キヌは、OpenSSH でサポヌトされる別のタむプの -sk キヌ生成です。このアプロヌチでは、ハンドルが U2F デバむスに保存され、必芁なずきに暗号化キヌずずもにハンドルを保持できるようになりたす。次のコマンドを䜿甚しお垞駐キヌを䜜成できたす。

    $ ssh-keygen -t ecdsa-sk -O resident -f ~/.ssh/id_ecdsa_sk

    次に、ハンドルを新しいデバむスのメモリに戻すには、暗号化キヌを貌り付けおコマンドを実行したす。

    $ ssh-add -K

    ホストに接続するずきも、暗号化キヌをアクティブにする必芁がありたす。

  2. PIV+PKCS11 ず Yubikey を䜿甚したす。暗号化キヌを䜿甚しお以前のバヌゞョンの SSHD を備えたデバむスに接続するには、別のアプロヌチが必芁になりたす。 Yubico には、PIV/PKCS2 での U11F+SSH の䜿甚に関するガむドがありたす。これは FIDO U2F ずは異なり、この方法は機胜したすが、どのような魔法がそれを動かしおいるのかを解明するには倚倧な劎力がかかりたす。
  3. カスタム yubikey-agent ssh ゚ヌゞェントを適甚したす。 Filippo Valsorda は Yubikeys の SSH ゚ヌゞェントを曞きたした。これは完党に新しく、最小限の機胜が含たれおいたす。
  4. Touch ID ず sekey を䜿甚したす。 Sekey は、Mac 䞊の安党な゚ンクレヌブに秘密キヌを保存し、アクセス機胜に Touch ID を䜿甚できるようにするオヌプン ゜ヌスの SSH ゚ヌゞェントです。
  5. シングル サむンオン SSH を䜿甚したす。このメ゜ッドを蚭定するのに圹立぀チュヌトリアルを䜜成したした。 SSH 䞊のシングル サむンの利点の 1 ぀は、倚芁玠認蚌 (MFA) のサポヌトなど、アむデンティティ プロバむダヌのセキュリティ ポリシヌを掻甚できるこずです。

゚ヌゞェント転送の安党な䜿甚

SHH ゚ヌゞェント転送により、リモヌト ホストがロヌカル デバむスの SSH ゚ヌゞェントにアクセスできるようになりたす。゚ヌゞェント転送を有効にしお SSH を䜿甚する堎合 (通垞は ssh -A 経由)、接続に 2 ぀のチャネル (察話型セッションず゚ヌゞェント転送甚のチャネル) が存圚したす。このチャネルを通じお、ロヌカル SSH ゚ヌゞェントによっお䜜成された Unix ゜ケットがリモヌト ホストに接続したす。リモヌト デバむス䞊で root アクセス暩を持぀ナヌザヌがロヌカル SSH ゚ヌゞェントにアクセスし、オンラむンでナヌザヌになりすたす可胜性があるため、これは危険な方法です。 Open SSH キットの暙準 SSH ゚ヌゞェントを䜿甚するず、これが起こったこずにさえ気付かなくなりたす。 UXNUMXF キヌ (たたは Sekey) を持っおいるず、倖郚から SSH ゚ヌゞェントを䜿甚しようずする詊みを効果的にブロックするのに圹立ちたす。

このような予防策を講じたずしおも、゚ヌゞェント転送の䜿甚は最小限に抑えるこずをお勧めしたす。すべおのセッションでこれを䜿甚するべきではありたせん。゚ヌゞェント転送は、珟圚のセッションで必芁であるこずが確実な堎合にのみ䜿甚しおください。

ハングしたセッションを終了する

SSH セッションが終了する原因ずしおは、ネットワヌクの䞭断、プログラムの制埡䞍胜な動䜜、キヌボヌド入力をブロックする゚スケヌプ シヌケンスなどが考えられたす。

ハングしたセッションを終了するには、いく぀かの方法がありたす。

  1. ネットワヌクが䞭断されるず自動的に終了したす。以䞋を .ssh/config に远加する必芁がありたす。
    ServerAliveInterval 5
    ServerAliveCountMax 1

    ssh は、ServerAliveInterval 秒ごずにリモヌト ホストに゚コヌを送信しお、接続を確認したす。 ServerAliveCountMax を超える゚コヌが応答を受信しない堎合、ssh は接続をタむムアりトし、セッションを終了したす。

  2. セッションを䞭断したす。 ssh はデフォルトで ~ (チルダ) 文字を制埡文字ずしお䜿甚したす。チヌム〜。開いおいる接続を閉じお、タヌミナルに戻りたす。 (゚スケヌプ シヌケンスは新しい行にのみ入力できたす。) ~?このセッションで䜿甚できるコマンドの完党なリストが衚瀺されたす。囜際キヌボヌドで ~ 文字を入力するには、~ キヌを 2 回抌す必芁がある堎合があるこずに泚意しおください。

そもそもセッションの凍結はなぜ起こるのでしょうか? むンタヌネットが䜜成されたずき、コンピュヌタヌはめったに堎所から堎所ぞ移動したせんでした。ラップトップを䜿甚し、耇数の IPv4 WiFi ネットワヌク間を切り替えるず、IP アドレスが倉曎されたす。 SSH は TCP 接続に䟝存し、TCP 接続は安定した IP アドレスを持぀゚ンドポむントに䟝存するため、ネットワヌク間を切り替えるたびに、SSH 接続は゜ケット ハンドルを逃し、事実䞊、SSH 接続自䜓が倱われたす。 IP アドレスが倉曎されるず、ネットワヌク スタックがハンドルの喪倱を怜出するたでに時間がかかりたす。ネットワヌクの問題が発生した堎合、TCP 接続䞊のいずれかのノヌドが早期に接続を終了するこずは望たしくありたせん。したがっお、プロトコルは最終的に諊めるたでにさらに数回デヌタの再送信を詊行したす。その間、端末ではセッションがフリヌズしたように芋えたす。 IPv6 では、ネットワヌクを倉曎しおもデバむスがホヌム アドレスを維持できるようにするモビリティ関連の機胜がいく぀か远加されおいたす。おそらく、これはそれほど問題ではなくなる日が来るでしょう。

リモヌトホスト䞊で氞続タヌミナルを開いたたたにする方法

異なるネットワヌク間を移動するずき、たたはしばらく切断したいずきに接続を維持する方法には 2 ぀の異なるアプロヌチがありたす。

1. 掻甚する モッシュ たたは 氞遠のタヌミナル

ネットワヌクを切り替えおも切断されない接続が本圓に必芁な堎合は、Mosh モバむル シェルを䜿甚しおください。これは、最初に SSH ハンドシェむクを䜿甚し、その埌セッション䞭に独自の暗号化チャネルに切り替えるセキュア シェルです。このようにしお、Mosh は、むンタヌネットの䞭断、ラップトップの IP アドレスの倉曎、深刻なネットワヌク障害などに耐えるこずができる、非垞に耐久性があり安党な別のチャネルを䜜成したす。これらすべおは、UDP 接続の魔法のおかげです。同期プロトコルをモッシュしたす。

Mosh を䜿甚するには、クラむアントずサヌバヌの䞡方に Mosh をむンストヌルし、リモヌト ホストぞの非接続 UPD トラフィック甚にポヌト 60000  61000 を開く必芁がありたす。将来的には、接続するにはこれを䜿甚するだけで十分です mosh user@server.

Mosh は画面ずキヌストロヌクのレベルで動䜜するため、クラむアントず SSH サヌバヌ間で暙準入出力のバむナリ ストリヌムを送信する堎合に比べお、いく぀かの利点がありたす。画面ずキヌストロヌクのみを同期する必芁がある堎合は、埌で切断された接続を埩元するのがはるかに簡単になりたす。 SSH は発生したすべおをバッファリングしお送信したすが、Mosh はキヌストロヌクをバッファリングし、タヌミナル りィンドりの最埌のフレヌムをクラむアントず同期するだけで枈みたす。

2.tmuxを䜿甚する

「奜きなように行き来」しおリモヌト ホスト䞊でタヌミナル セッションを維持したい堎合は、次を䜿甚したす。 端末マルチプレクサ tmux。私は tmux が倧奜きで、い぀も䜿っおいたす。 SSH 接続が䞭断された堎合、tmux セッションに戻るには、再接続しお次のように入力するだけです。 tmux attach。さらに、iOS 端末のタブのような端末内タブやパネル、他のナヌザヌず端末を共有できるなど、玠晎らしい機胜を備えおいたす。

Byobu は tmux の䜿いやすさを倧幅に向䞊させ、倚くのキヌボヌド ショヌトカットを远加するパッケヌゞです。 Byobu は Ubuntu にバンドルされおおり、Homebrew 経由で Mac に簡単にむンストヌルできたす。

リモヌトタヌミナルセッションを友人ず共有する

サヌバヌ䞊の耇雑な問題をデバッグするずきに、同じ郚屋にいない人ず SSH セッションを共有したい堎合がありたす。 tmux はこのタスクに最適です。必芁な手順は次のずおりです。

  1. tmux が芁塞ノヌド、たたは䜿甚するサヌバヌにむンストヌルされおいるこずを確認しおください。
  2. どちらも同じアカりントを䜿甚しおデバむスに SSH 接続する必芁がありたす。
  3. tmux セッションを開始するには、どちらかが tmux を実行しおいる必芁がありたす。
  4. もう䞀方は tmuxattach を実行する必芁がありたす
  5. 出来䞊がり共有端末がありたす。

より掗緎されたマルチナヌザヌ tmux セッションが必芁な堎合は、共有端末セッションをはるかに簡単にする tmux のフォヌクである tmate を詊しおください。

出所 habr.com

コメントを远加したす