CodeGym /コース /Docker SELF /SSHの紹介: リモートアクセスの設定、鍵の使用

SSHの紹介: リモートアクセスの設定、鍵の使用

Docker SELF
レベル 4 , レッスン 3
使用可能

SSHの紹介: リモートアクセスの設定、鍵の使用

1. SSHって何?

想像してみて、君が地球の片側にいて、設定する必要があるサーバーが反対側にある感じ。学校のITスペシャリストが教室を駆け回って設定するのは、正直しんどいでしょ。幸いにもSSH (Secure Shell) があれば、リモートでサーバーを管理できるよ。

SSHはネットワークプロトコルで、安全にリモートのコンピュータに接続できるようにしてくれるものなんだ。暗号化を使って接続するから、送信データは外部から覗かれる心配がない。SSHは、昔のTelnetみたいな送信データをそのまま公開する(日本のはがきみたいに)古い方法を置き換えてくれる。

SSHの利点

  1. セキュリティ. SSHは暗号化を利用して、データを盗聴から守る。
  2. 柔軟性. サーバーのリモート管理、ファイル転送、トンネリング作成、全てSSHを通じて可能だよ。
  3. クロスプラットフォーム. Linux、Windows (WSL含む)、MacOSでも動作するよ。

これでSSHが何のために必要か分かったら、次は実践に進もう。


2. SSHクライアントのインストール

サーバーに接続するためのクライアントから始めよう。もし現代のLinuxディストリビューションを使っているなら、SSHクライアントはおそらく既にインストールされているよ。確認してみよう:

ssh -V

SSHクライアントのバージョン情報が表示されるはずだよ。もしコマンドが見つからなかったら、以下の方法でインストールしてみて(UbuntuやDebianベースのディストリビューションの場合):

sudo apt update
sudo apt install openssh-client

MacOSではSSHクライアントはプリインストールされているし、WSLで作業している場合はLinuxと同じようにインストールできるよ。


3. SSHを使ったリモートサーバーへの接続

サーバーへの接続は次のコマンドで行う:

ssh username@hostname
  • username — リモートサーバー上のユーザー名。
  • hostname — サーバーのIPアドレスまたはドメイン名。

接続例:

ssh student@192.168.1.10

設定が正しければ、システムがパスワードを要求する。パスワードを入力後、リモートサーバーのコンソールに入ることができるよ。おめでとう、「ハッカー映画のスーパーヴィランオペレーター」の職業が半分できたね。


4. SSHサーバーのインストールと設定

SSHサーバーのインストール

サーバーやリモート接続したいローカルマシンでSSHサーバーをインストールする必要があります。Ubuntuでは以下のコマンドを使います:

sudo apt update
sudo apt install openssh-server

SSHサービスのステータスを確認する方法:

sudo systemctl status ssh

active (running)のようなメッセージが表示されるはずです。サーバーが起動していない場合は以下を使用します:

sudo systemctl start ssh
sudo systemctl enable ssh

これでSSHサーバーが接続を受け付ける準備が整いました。


SSHサーバーの設定

SSHサーバーの主な設定ファイルは /etc/ssh/sshd_config です。このファイルを編集するために、nanoなどのテキストエディタを使います:

sudo nano /etc/ssh/sshd_config

以下のパラメータに注目してください:

  • Port 22 — SSHが使用するポート。
  • PermitRootLogin no — rootの接続を禁止する(セキュリティ上noにすることを推奨)。
  • PasswordAuthentication yes — パスワードによる接続を許可。

設定を変更した後、SSHサーバーを再起動します:

sudo systemctl restart ssh

5. キー認証の使用

パスワードでの接続は便利だけど、あまり安全じゃないよね。ベストな選択肢はSSHキーの利用だよ。

SSHキーの生成

クライアントマシンで以下のコマンドを実行してみて:

ssh-keygen

スクリプトが鍵の保存場所を聞いてくるよ(デフォルトは~/.ssh/id_rsa)。Enterを押してそのまま受け入れることもできる。それから、パスフレーズも聞かれるけど、簡単にするために空にしておいた方がいいかも(ただしそれほど安全じゃないけどね)。

コマンドを実行した後、鍵のファイルが作成されるよ:

  • id_rsa — プライベートキー(これは公開しちゃダメだよ。リリース前のコードみたいに絶対慎重に扱おう、とくに借金まみれのプロジェクトならね)。
  • id_rsa.pub — パブリックキー(このキーを接続に使えるよ)。

サーバーへの鍵の転送

ssh-copy-idコマンドを使って、パブリックキーをサーバーに転送してみて:

ssh-copy-id username@hostname

これでサーバーの~/.ssh/authorized_keysファイルにパブリックキーが追加されるよ。これでパスワードなしで接続できるようになるんだ。

試してみよう:

ssh username@hostname

うまくいけば、もうパスワードは聞かれないよ。これで生活がちょっと楽になったね。

SSHとWSL

WindowsでWSLを使っている場合も、SSHを利用できるよ。WSLのターミナルを開いてSSHクライアントをインストールしよう:

sudo apt update
sudo apt install openssh-client

その後の手順はLinuxと同じだよ。


6. 実践部分: localhostでのSSH設定

練習のために、同じネットワーク内の2台のマシン間でSSH接続を設定するか、自分のコンピュータで(localhostをアドレスとして使用して)試してみてね。

  1. 1台のマシンにSSHサーバとクライアントをインストールします。
  2. ローカルアドレスで接続します:
ssh your_user@localhost
  1. 上で示したように鍵を使った接続を設定します。

最終的に、パスワードの入力なしで接続できるはずだよ。


7. SSHの設定とエイリアスの利用

複数のサーバーに頻繁に接続する場合、SSHの設定を~/.ssh/configファイルに追加しておけば、便利に使えるよ:

Host myserver
    HostName 192.168.1.10
    User student
    IdentityFile ~/.ssh/id_rsa

これで、次のコマンドだけで接続できるようになるよ:

ssh myserver

よくあるエラーとその対処法

  1. エラー "Connection refused"。これはリモートマシンでSSHサーバーが起動していないことを意味しているよ。サーバーがインストールされていて、起動していることを確認してみて。

  2. エラー "Permission denied"。パスワードが間違っているか、キーが正しく設定されていない場合に起こるよ。サーバー上の~/.ssh/authorized_keysファイルの中身をチェックしてみて。

  3. エラー "No route to host"。サーバーがネットワーク上に存在するか確認してみて(pingを使おう)。


これでSSHの設定方法、キーの利用、そして一般的な問題の回避方法についての知識が身についたね。このツールは、職場でのサーバー設定や自宅でのRaspberry Piの管理など、どこでも活用されているよ。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION