リモートに接続する

LinuxBeginner
オンラインで実践に進む

はじめに

この実験では、Linux のsshコマンドを使って他の Linux システムにリモート接続して管理する方法を学びます。SSH(Secure Shell)は、システム管理者やネットワークエンジニアにとって強力なツールで、幅広いタスクをリモートで安全に実行できるようにします。

到達目標

この実験が終了すると、以下のことができるようになります。

  • sshコマンドを使って、リモートシステムに安全に接続する
  • SSH を使って、リモートシステムでコマンドを実行する
  • リモートシステム管理の基本を理解する

labex ユーザーのパスワードを取得する

SSH を使用する前に、labexユーザーのパスワードを知る必要があります。この実験環境では、パスワードは環境変数として保存されています。

  1. デスクトップ環境内のターミナルウィンドウを開きます。環境変数は、デスクトップ環境のターミナルのみに設定されています。

Retrieve Password

  1. パスワードを取得するには、次のコマンドを実行します。

    printenv | grep PASSWORD
    

    注: このコマンドは、デスクトップ環境のターミナルで実行する必要があり、トップメニューバーから開いたターミナルでは実行しないでください。

    このコマンドは、「PASSWORD」を含むすべての環境変数を表示します。LABEX_PASSWORD=...と表示される行を探します。イコール記号の後の文字があなたのパスワードです。

  2. このパスワードをメモしておきます。以降の手順で必要になります。

重要: labexユーザーのパスワードを変更しないでください。実験環境はこの特定のパスワードで設定されており、変更すると実験の検証手順が失敗する場合があります。この実験全体を通じて、常にLABEX_PASSWORD環境変数で提供されるパスワードを使用してください。

SSH を使ってローカルシステムに接続する

パスワードを取得したので、SSH を使ってローカルシステムに接続する練習をしましょう。これは、リモートシステムに接続することをシミュレートしています。

SSH connection terminal example

  1. ターミナルで、次のコマンドを使って SSH を使ってローカルシステムに接続します。

    ssh labex@127.0.0.1
    

    ここで、127.0.0.1は、ローカルマシンを指すループバック IP アドレスです。これはよく「localhost」と呼ばれます。

  2. ホストの正当性に関するメッセージが表示される場合があります。このメッセージが表示されるのは、この「リモート」システムに初めて接続しているからです。本番環境では、進む前に指紋を確認する必要があります。この実験では、yesと入力して Enter キーを押して続けます。

  3. パスワードの入力を求められたら、手順 1 で取得したパスワードを入力します。入力している間、パスワードは表示されません。

  4. 成功すると、新しいプロンプトが表示されます。これは、同じマシン上にいるにもかかわらず、SSH を介して接続されていることを示しています。

  5. SSH セッションを終了するには、exitと入力して Enter キーを押します。これにより、元のターミナルセッションに戻ります。

SSH を使って簡単なコマンドを実行する

SSH を使って「リモート」システムでコマンドを実行する練習をしましょう。完全な SSH セッションを開始せずに迅速なコマンドを実行する必要がある場合に便利です。

  1. 次のコマンドを使って、SSH 経由でローカルシステムのホームディレクトリの内容を一覧表示します。

    ssh labex@127.0.0.1 'ls -l ~'
    

    このコマンドは次のように分解されます。

    • ssh: SSH 接続を開始するコマンド
    • labex@127.0.0.1: 接続先のユーザーと IP アドレス
    • 'ls -l ~': リモートシステムで実行したいコマンド。引用符で囲まれています
  2. パスワードの入力を求められたら、labexユーザーのパスワードを入力します。

  3. ls -l ~コマンドの出力が表示され、ホームディレクトリの内容が表示されるはずです。この出力は、実際には同じマシンであっても、「リモート」システムからのものです。

  4. 今回は完全な SSH セッションを開始しなかったことに注意してください。コマンドが実行され、すぐに元のターミナルに戻りました。

疑似端末割り当て付きで SSH を使用する

一部のコマンドは、適切に実行するために疑似端末が必要です。特に対話型コマンドやフォーマットされた出力を生成するコマンドです。疑似端末割り当てを強制するために、SSH で-tオプションを使用する練習をしましょう。

  1. システムの稼働時間を表示するには、次のコマンドを実行します。

    ssh -t labex@127.0.0.1 'uptime'
    

    -tオプションは、SSH に疑似端末を割り当てるように強制します。対話型環境で実行されることを期待するコマンドには、これが必要になる場合があります。

  2. パスワードの入力を求められたら、labexユーザーのパスワードを入力します。

  3. システムが稼働している時間と、ロード平均情報が表示されるはずです。

  4. 次に、対話型コマンドを試してみましょう。次のコマンドを実行します。

    ssh -t labex@127.0.0.1 'top -n 1'
    

    これは、通常はシステムプロセスの対話型ビューを提供するtopコマンドを実行しますが、ここでは-n 1オプションを使用して 1 回の反復後に終了します。

  5. 再び、パスワードの入力を求められたら、labexユーザーのパスワードを入力します。

  6. システム上で実行されている上位のプロセスが表示されるフォーマットされた出力が表示されるはずです。

リモートファイルを作成してアクセスする

「リモート」システム上でファイルを作成してアクセスする練習をしましょう。これは、SSH を使ってリモートシステム上のファイルを操作できる方法を示しています。

  1. SSH を使って、リモートシステムのホームディレクトリにremote_test.txtという名前のファイルを作成します。

    ssh labex@127.0.0.1 'echo "This is a test file created remotely" > ~/remote_test.txt'
    

    このコマンドは、SSH を使ってリモートシステムでechoコマンドを実行し、その後、新しいファイルにテキストを出力します。

  2. 次に、先ほど作成したファイルの内容を表示しましょう。

    ssh labex@127.0.0.1 'cat ~/remote_test.txt'
    

    catコマンドは、ファイルの内容を表示するために使用されます。

  3. ターミナルに「This is a test file created remotely」というメッセージが表示されるはずです。

  4. ファイルの存在を確認するために、一覧表示しましょう。

    ssh labex@127.0.0.1 'ls -l ~/remote_test.txt'
    

    これにより、ファイルの詳細(権限、サイズ、作成日など)が表示されます。

まとめ

この実験では、sshコマンドを使って Linux システムにリモート接続して管理する方法を学びました。環境変数からユーザーパスワードを取得し、SSH を使ってローカルシステムに接続する(リモート接続をシミュレートする)、リモートでコマンドを実行する、疑似端末割り当て付きで SSH を使用する、および「リモート」システム上のファイルを作成してアクセスする練習を行いました。

これらのスキルは、システム管理者や Linux システムをリモートで管理する必要のある誰にとっても基本的なものです。私たちはローカルシステムを練習に使いましたが、同じコマンドと技術を使って、ネットワークやインターネットを介した本当のリモートシステムに接続して管理することができます。

リモートシステムを扱う際は常にセキュリティを優先してください。強力なパスワードを使用し、システムを最新状態に保ち、本番環境ではキーベースの認証などの追加のセキュリティ対策を検討してください。

システム管理の旅を続けるにつれて、SSH はリモート管理とトラブルシューティングに欠かせないツールであることがわかるでしょう。