SSH
業務でLinuxサーバーを扱う上で大切な技術である「SSH」、今回はそのポイントについて解説します。【連載コラム:Linuxシステム管理標準教科書を読む(2)】
Linuxの基本的なスキルを習得したら、Linuxサーバーをシステムとして長期に運用管理していくためのスキルを身につけるのはいかがでしょうか。このコラムでは、「Linuxシステム管理標準教科書」の全体調整を担当した筆者が改めて大切なポイントを解説していきます。
「Linuxシステム管理標準教科書」第1章4項では、ユーザーとグループの管理の流れからSSHを取り上げています。
これは一つには実務でLinuxサーバーのシステム管理を行うにはSSHによるリモートログインが必須であることと、この後に解説しているシステム管理者であるrootユーザーの取り扱いを考える上で重要な項目だからです。システム管理の現場でSSHを知らない、では済まされないので、脱初心者を目指してSSHについてしっかりと理解しましょう。【連載コラム:Linuxシステム管理標準教科書を読む(2)】
目次
公開鍵認証は必須
SSHは暗号化通信を行ってくれる他、ログイン認証においてパスワード認証以外に公開鍵認証のような認証方式もサポートしています。システム管理者には最低限のセキュリティの知識が要求されますが、公開鍵による認証や、証明書といった概念もきちんと理解しておく必要があり、その題材としてもSSHは適切です。
単に手順を覚えるのではなく、秘密鍵や公開鍵がどのような役割を果たしているのか、しっかりと理解するところまで踏み込んで調べてみましょう。
秘密鍵公開鍵のペアはいくつ作る?
公開鍵認証で使う公開鍵と秘密鍵は1つのペアになっていて、その他のものと組み合わせることはできません。そのため、このペアをどれぐらい作ればいいのか、というのは常に話題になります。また、人によって意見が異なるものです。
鍵の作成ポリシーに正解はありませんが、秘密鍵はしっかりと守る必要がある、ということだけは共通です。
1つのペアを使い回す場合
筆者は基本的に1つのペアを使う方で、接続先になるサーバーに同じ公開鍵を設置していきます。
ごく希に違うペアを作成しますが、ほぼ使い捨てという感じで、役目が終われば消してしまっています。秘密鍵は端末に入っていますが、異なる端末からログインすることがほぼないので大きな問題になりません。
都度ペアを作る場合
違うパターンとしては、使用する端末ごとにペアを作る場合です。
これはシステムのセキュリティの都合上、特定の端末からしか接続を許さないような場合に、その接続用にペアを作成するものです。いわゆる「踏み台」と呼ばれる端末を経由した作業環境などで多く見られます。自分自身の秘密鍵とは別の秘密鍵を踏み台端末に置くことになるので、何かあった時にも安心ということも言えます。
秘密鍵を共有するのはアリ?
逆に、サーバー側のユーザーは1つで、複数の人がそのユーザーを共有したい、という場合があります。この時、鍵の取り扱いはどうするべきでしょうか。
そもそもユーザーを共有しない
そもそも、ユーザーを共有しないという考え方があります。そのユーザーで直接ログインするのではなく、suコマンドで切り替えるとか、sudoコマンドを使って実行権限を切り替える方法などです。セキュリティを考慮すると、この方法が一番いいように思えますが、リモートログインではなく、SCPやSFTPでファイルをやり取りしたい場合には使いにくい方法です。
秘密鍵公開鍵のペアを共有する
作業用と割り切って、そのユーザー用の秘密鍵公開鍵のペアを作成し、秘密鍵を配布するパターンです。一番分かりやすいですが、秘密鍵をコントロールするのが難しくなります。たとえば、作業から外れる人が出てくると、以前のペアを無効化してペアを作り直す必要があります。楽なようで、長い目で見て面倒なパターンなので、できれば避けた方がよいでしょう。
各人の公開鍵をユーザーに登録する
ユーザーの公開鍵登録(~/.ssh/authorized_keys)には、複数の公開鍵を登録できます。登録されている公開鍵と対になっている秘密鍵を持っている人であれば、ログインできることになります。複数登録の手間はありますが、この方法が最もシンプルな解決方法なので、直接ログインをさせたいのであれば、この方法を採るのがよいでしょう。
公開鍵を無くしてしまったら?
基本的に秘密鍵と公開鍵はペアで管理するので公開鍵だけ無くしてしまうことはあまりありませんが、万が一無くしてしまった場合、秘密鍵から公開鍵を再生成することができます。ssh-keygenコマンドで行えるので、是非方法を調べてみてください。
秘密鍵から公開鍵は生成できますが、逆に公開鍵から秘密鍵を生成することは当然できません。公開鍵はその名の通り、誰かに見られても大丈夫なものなのですね。
SCP/SFTPクライアントも使ってみよう
教科書では紹介できていませんが、SCPやSFTPを使ってサーバーとの間でファイルをやり取りすることはよくあります。SSHでのリモートログインができるようになったら、ファイル転送ツールについても接続を確認しておくとよいでしょう。
WinSCP
Windowsでよく使われているクライアント
https://winscp.net/eng/docs/lang:jp
Cyberduck
macOSでよく使われているクライアント。WIndows版もある。通称「あひるちゃん」。
https://cyberduck.io/
Linuxシステム管理標準教科書とは
「Linuxシステム管理標準教科書」(システム管理教科書)は2015年4月にリリースされた標準教科書シリーズの1冊です。
Linuxシステムの運用管理という観点で書かれており、システム管理者という業務において知っておかなければならない基本的なトピックが解説されています。「Linux標準教科書」「Linuxサーバー構築標準教科書」でコマンド操作やサーバー構築の基本を学んだら、このシステム管理教科書を読んで、単にLinuxを使うのではなく、システムとして長期的に管理運用していくためのスキルを身につけてください。
- 筆者紹介
宮原 徹 氏
Linux標準教科書、Linuxサーバー構築標準教科書などの監修者。LinuCレベル1/レベル2 Version10.0の改訂作業にも協力。また、幅広いOSSに関する情報提供の場として「オープンソースカンファレンス(OSC)」の企画運営も。
バックナンバー
第1回:ユーザーとグループの管理