Windows管理者のためのLinuxでのSSHコマンドのマスタリング

LinuxとWindowsはかつては宿敵でしたが、今ではより良い関係を築けるようになりました。実際、今ではWindowsでもSSHをネイティブに使用できます。クライアントとしてもサーバーとしても。Windows管理者でありながらLinuxマシンも管理する必要がある場合、Linuxで(セキュアシェル)SSHコマンドに慣れることが必要です!

これはブログシリーズ「Linuxの世界でのWindowsユーザー」の第4部です。もし人気のあるLinuxの概念についてもっと学びたい場合は、第1部第2部第3部を確認してください。

この投稿では、LinuxでSSHを有効にする方法と、WindowsのSSHクライアントを設定してリモートのLinuxサーバーに接続する方法について学びます。

注意:すべての例はOpenSUSE Linuxを使用します。

デスクトップ環境からの移動

このシリーズの最初の投稿では、KDEデスクトップ環境の使用を推奨していました。OpenSUSEのセットアップを行っている間、別の魅力的なオプションがあることに気づいたかもしれません。それは、OpenSUSEのサーバーエディションです。

Server Edition of OpenSUSE

ほとんどのLinuxディストリビューション(OpenSUSEを含む)のサーバーエディションをインストールした場合、デスクトップが完全にないことに気付いたかもしれません。OpenSUSE、Ubuntu Server、CentOSなどの人気のあるディストリビューションのサーバーエディションは、Windows Server Coreのようなものです:デスクトップはありません。

Linuxの文化でデスクトップが一般的に避けられる理由を理解するには、CLIとSSHを理解する必要があります。

SSH:リモート管理の金基準

SSHは、多くの他のリモート管理プロトコルと同様に、クライアントとサーバーに基づいたシステムです。クライアントはネットワーク経由でサーバーにリモート接続し、コマンドを実行したりファイルを転送したりすることができます。SSHは、Linuxをリモートで管理する際の事実上の標準です。

SSHは長い間存在しており、Linuxエコシステムに深く組み込まれているため、コマンドライン管理ユーティリティがLinuxサーバー環境を主導しています。ほとんどのLinuxサーバーディストリビューションにはグラフィカルインターフェースがありません。

LinuxでSSHコマンドを使用する

話はこれくらいにして、まずはOpenSUSE LinuxでSSHを有効にしてみましょう。これを行うには、YaSTパッケージマネージャーを使用します。OpenSUSEでYaSTを使用してSSHを有効にするには、次の手順を実行します:

  1. スタートメニューをクリックし、ターミナルと入力して、OpenSUSEのインストール時にKDEデスクトップマネージャーをインストールした場合はKonsoleを選択します。
  2. ターミナルで、sudo yastを実行してYaSTを開きます。
  3. YaSTに入ったら、systemまで下キーを押し、services managerまで右キーを押してEnterキーを押して進みます。
  4. sshdまで下キーを押し、SSHサービスを開始するためにalt+sキーを押します。
  5. 手動から起動時に変更するためにalt+rキーを押します。これにより、再起動後もSSHサーバーサービスが開始されます。
  6. 変更を適用するためにalt+oキーを押してokします。

以下でこれらの手順を実際に見ることができます。

Using YaST from the command line to enable SSH

ファイアウォールを介してSSHを許可する

ほとんどのLinuxディストリビューションには、Windowsと同様に保護するためのファイアウォールが付属しています。OpenSUSEのファイアウォールについては、ここで詳しく読むことができます。WindowsからリモートでSSHサービスにアクセスできるようにするには、ファイアウォールを介して許可する必要があります。以下の手順で行ってください。

  1. ターミナルのままで、sudo yastを使用して再度YaSTを開始します。
  2. Security and Usersまで下キーを押し、Firewallまで右キーを押してEnterキーを押して進みます。
  3. Zones –> Publicに移動し、右側のServices—Portsペインに移動します。
  4. サービスでsshを見つけるために下キーを押します。
  5. スペースバーでsshを選択し、選択を追加するためにalt+dキーを押します。
  6. 変更を受け入れるにはalt+aキーを押します。

上記の手順は以下のように視覚化されています。

Using YaST from the command line to let SSH through the firewall

Windowsと同様に、Linuxにはファイアウォールルールを適用するための異なる信頼レベルがあります。これらのレベルはゾーンと呼ばれます。 Windowsにはデフォルトでパブリック、ワーク、プライベートのゾーンがあります。 Linuxにはもっとたくさんのゾーンがありますが、デフォルトではパブリックゾーンが使用されます。

WindowsからLinuxへの接続

幸いなことに、最近のWindows 10には組み込みのSSHクライアントがあります。 Linuxホストに接続するには、コマンドプロンプト(cmd)またはPowerShellコンソールを開き、接続するユーザー名とIPまたはホスト名を指定します。

> ssh <username>@<ip address>

すべてうまくいけば、SSHクライアントは指紋の受け入れを求めるはずです。指紋は、対象のIPアドレスが乗っ取られていないことを確認するための識別子です。

Windows 7を実行している場合、LinuxホストにまだSSHで接続できます。ただし、ここからMicrosoft SSHクライアントをダウンロードする必要があります。このSSHクライアントはWindows 10と同じものです。

yesと入力し、パスワードを入力すると、サーバーに接続されます!これで、コンピューターそのもののターミナルを開いているかのようにコマンドラインを使用できます。

ルーターを通じてSSH(デフォルトポート22)をインターネットに公開しないでください。ボットはインターネット上を絶えず巡回し、開いているSSHポートを探しています。ボットが開いているポートを見つけると、ブルートフォース攻撃でパスワードを試行し始めます。

WindowsでSSHを使用する際のマウスサポートの有効化

Windows 10のネイティブなSSHクライアントを使用する際の大きな欠点の1つは、マウスサポートがないことです(少なくともこの記事が書かれた時点では)。これは、以前のブログ投稿で学んだように、Midnight Commanderでマウスを使用することができないということです。

幸いにも、OpenSSH Windowsクライアントのバージョン8以降では、マウスサポートを使用できます!では、このクライアントをインストールしましょう。

  1. OpenSSH-Win64の最新リリースをここからダウンロードし、生成されたzipファイルを展開します。このチュートリアルでは、展開先を~\Downloads\OpenSSH-Win64と仮定します。
  2. PowerShellコンソールを開き、cd ~\Downloads\OpenSSH-Win64を使用して~\Downloads\OpenSSH-Win64に移動します。
  3. .\\ssh -Vを実行してSSHクライアントのバージョンを確認します。このガイドの執筆時点では、バージョンは8.1.0.0-p1であるはずです。
  4. .\ssh <user>@<ip>を使用してLinuxサーバーにSSH接続します。
  5. ログインしたら、mcを実行してMidnight Commanderを実行し、マウスを使用できることを確認します。

これらの手順の全体像は、以下のビジュアルで確認できます。

デフォルトのSSHクライアントのオーバーライド

新しいバージョンをより永続的に使用する場合は、デフォルトのWindows 10 SSHクライアントをオーバーライドする必要があります。これにより、コマンドラインでsshを実行するたびに、新しいバージョン(マウスサポート付き)が使用されます。

クライアントを~\Downloads\OpenSSH-Win64フォルダに展開したと仮定します。

  1. 展開したOpenSSH-Win64フォルダを任意の永続的なフォルダに移動します。このチュートリアルでは、C:\users\public\OpenSSH-Win64を使用します。
  2. スタートをクリックし、実行を選択し、sysdm.cplと入力するか、コントロールパネルからシステムを開きます。
  3. 詳細設定タブの下で、環境変数をクリックします。
  4. システム環境変数の下で、Pathをクリックします。
  5. 新規をクリックして新しいパスを追加し、SSHクライアントのフォルダパス(この場合はC:\users\public\OpenSSH-Win64)を提供します。
  6. 上に移動をクリックして、%SystemRoot%\system32フォルダの上に配置します。これにより、コマンドラインでsshと入力すると、Windowsはまずここを探します。
  7. PowerShellコンソールを開き、ssh -Vを実行します。バージョンが8.1.0.0-pであるはずです。

これらの手順は以下にまとめられています。

Overriding the Default SSH Client

%SystemRoot%\system32よりも優先するフォルダを設定することは、セキュリティ上のリスクを伴う場合があります。誰かがあなたのコンピュータにアクセスできる場合、OpenSSH-Win64フォルダにウイルスを挿入し、cd.exeのようなWindowsユーティリティとして名前を付けることができます。

OpenSSH-Win64フォルダを管理者以外の誰にでも読み取り専用に制限する必要があります。

  1. OpenSSH-Win64フォルダを右クリックし、プロパティをクリックします。
  2. セキュリティタブの下にある詳細ボタンをクリックします。
  3. 継承を無効にするをクリックして、カスタムフォルダのアクセス許可を設定し、親フォルダがOpenSSH-Win64フォルダのアクセス許可を上書きするのを防ぎます。
  4. 追加を選択し、Administratorsグループを見つけ、完全な権限を与えます。
  5. 追加をクリックし、Everyoneグループを見つけ、読み取り専用の権限を与えます。
  6. すべての子オブジェクトのアクセス許可を置き換えるチェックボックスを選択して、これらの設定をOpenSSH-Win64フォルダ内のすべてのファイルに伝播させます。そして、適用をクリックします。
  7. これで、OpenSSH-Win64フォルダに新しいファイルを作成してこれらの権限をテストできます。Windowsは管理者プロンプトを要求するはずです。

上記の手順をビジュアルで表示したものは以下の通りです。

restrict the OpenSSH-Win64 folder

Tmuxを使用した切断セッションの管理

ああ、面倒ですね!SSH経由で長時間実行されるコマンドを実行している途中でインターネットが切断されてしまいました。今、Linuxサーバーがどの状態にあるのか全くわかりません!そのコマンドは終了していますか?どうやって元に戻すのでしょうか?

切断されたセッションはSSHにおいて合法的な問題であり、幸いにも簡単な解決策があります。ターミナル多重化(tmux)が必要です。

tmuxは、ターミナル多重化の略語とプログラム自体の名前でもあります。

tmuxはSSHのセッションマネージャーです。切断された場合でもセッションを保持し、バックグラウンドで実行します。後でそのセッションに再接続したり、複数のセッションを作成してそれらの間を切り替えることができます。

tmuxを使用して切断されたセッションを管理するには、

  1. Linuxのターミナルで、次のように実行してtmuxユーティリティをダウンロードしてインストールします: sudo zypper install -y tmux

YaSTを使用してtmuxユーティリティをダウンロードすることもできます。

Tmux Utility

ほとんどのLinuxディストリビューションには異なるコマンドラインパッケージマネージャーがあります。OpenSUSEはzypperを使用します。Archはpacmanを使用します。Ubuntuはaptを使用します。Red Hatはdnfyumを使用します。幸いなことに、これらのパッケージマネージャーの構文はほぼ同じです。

2. Windowsコンピューターで、PowerShellコンソールを開き、LinuxサーバーにSSHで接続します。このチュートリアルでは、ユーザー名はhomelab、LinuxサーバーのIPアドレスは192.168.134.169です。

ssh <username>@<ip address>

3. 接続後にtmuxを実行してtmuxを開きます。下部に緑色のバーが表示されるはずです。

4. 任意のテキストを出力するコマンドを実行します。何でも構いません。このチュートリアルではneofetchを使用しています。また、lsコマンドも実行できます。

5. PowerShellを閉じてセッションを切断します。これにより、通信の途絶をシミュレートします。

6. 再びSSHを使用してLinuxサーバーに接続します。

7. tmux aを実行して以前のセッションに再接続します。以前のlsコマンドの出力が表示されるはずです。途切れることなくデータが保持されたことに喜びましょう!

上記の手順を視覚的に表したものが以下に表示されます。

Managing Disconnected Sessions with a Tmux

Midnight Commanderユーティリティtmux内で実行しようとすると、マウスサポートがないことに気付くかもしれません。代わりにmc -xを実行することで修正できます。

ログイン時にtmuxを有効にする

デフォルトでは、すべてのSSHセッションでtmuxは利用できません。これを変更するには、tmuxをSSHセッションに常にアタッチするように強制します。

LinuxサーバーにSSH接続していると仮定します:

  1. midnight commanderユーティリティを開きます。

2. .bashrcファイルをハイライトして編集ボタンを押します。

.bashrcファイルは、コマンドライン経由でログインするたびに実行されるシェル(バッチ)スクリプトです。

3. 以下のシェルスクリプトコードをテキストファイルの最後に追加します。

if [ -z "$TMUX" ]; then tmux attach -t default || tmux new -s default fi

4. 終了をクリックし、プロンプトが表示されたら保存します。

5. SSHセッションから切断して再接続して、tmuxの自動アタッチをテストします。下部に緑のバーが自動的に表示されるはずで、tmuxセッションに接続されていることを示します。

これはtmuxができることの一部に過ぎません。非常に強力なマルチタスキングプログラムです。Linux管理者に最もよく使われるコマンドを尋ねると、おそらくtmuxと答えるでしょう。

まとめ

これで、A Windows Guy in a Linux Worldブログシリーズの最新の投稿が終わりました。次回のインストールについてはATAブログをご覧ください!

Source:
https://adamtheautomator.com/ssh-command-in-linux/