リモートに接続する

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

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

到達目標

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

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

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/SystemInformationandMonitoringGroup -.-> linux/top("Task Displaying") linux/UserandGroupManagementGroup -.-> linux/passwd("Password Changing") linux/UserandGroupManagementGroup -.-> linux/sudo("Privilege Granting") linux/UserandGroupManagementGroup -.-> linux/env("Environment Managing") linux/RemoteAccessandNetworkingGroup -.-> linux/ssh("Secure Connecting") subgraph Lab Skills linux/echo -.-> lab-34{{"リモートに接続する"}} linux/ls -.-> lab-34{{"リモートに接続する"}} linux/cat -.-> lab-34{{"リモートに接続する"}} linux/top -.-> lab-34{{"リモートに接続する"}} linux/passwd -.-> lab-34{{"リモートに接続する"}} linux/sudo -.-> lab-34{{"リモートに接続する"}} linux/env -.-> lab-34{{"リモートに接続する"}} linux/ssh -.-> lab-34{{"リモートに接続する"}} end

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 [email protected]

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

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

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

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

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

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

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

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

    ssh [email protected] 'ls -l ~'

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

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

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

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

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

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

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

    ssh -t [email protected] 'uptime'

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

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

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

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

    ssh -t [email protected] 'top -n 1'

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

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

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

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

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

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

    ssh [email protected] 'echo "This is a test file created remotely" > ~/remote_test.txt'

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

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

    ssh [email protected] 'cat ~/remote_test.txt'

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

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

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

    ssh [email protected] 'ls -l ~/remote_test.txt'

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

まとめ

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

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

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

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