SSHの紹介: リモートアクセスの設定、鍵の使用
1. SSHって何?
想像してみて、君が地球の片側にいて、設定する必要があるサーバーが反対側にある感じ。学校のITスペシャリストが教室を駆け回って設定するのは、正直しんどいでしょ。幸いにもSSH (Secure Shell) があれば、リモートでサーバーを管理できるよ。
SSHはネットワークプロトコルで、安全にリモートのコンピュータに接続できるようにしてくれるものなんだ。暗号化を使って接続するから、送信データは外部から覗かれる心配がない。SSHは、昔のTelnetみたいな送信データをそのまま公開する(日本のはがきみたいに)古い方法を置き換えてくれる。
SSHの利点
- セキュリティ. SSHは暗号化を利用して、データを盗聴から守る。
- 柔軟性. サーバーのリモート管理、ファイル転送、トンネリング作成、全てSSHを通じて可能だよ。
- クロスプラットフォーム. 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台のマシンにSSHサーバとクライアントをインストールします。
- ローカルアドレスで接続します:
ssh your_user@localhost
- 上で示したように鍵を使った接続を設定します。
最終的に、パスワードの入力なしで接続できるはずだよ。
7. SSHの設定とエイリアスの利用
複数のサーバーに頻繁に接続する場合、SSHの設定を~/.ssh/config
ファイルに追加しておけば、便利に使えるよ:
Host myserver
HostName 192.168.1.10
User student
IdentityFile ~/.ssh/id_rsa
これで、次のコマンドだけで接続できるようになるよ:
ssh myserver
よくあるエラーとその対処法
エラー "Connection refused"。これはリモートマシンでSSHサーバーが起動していないことを意味しているよ。サーバーがインストールされていて、起動していることを確認してみて。
エラー "Permission denied"。パスワードが間違っているか、キーが正しく設定されていない場合に起こるよ。サーバー上の
~/.ssh/authorized_keys
ファイルの中身をチェックしてみて。エラー "No route to host"。サーバーがネットワーク上に存在するか確認してみて(
ping
を使おう)。
これでSSHの設定方法、キーの利用、そして一般的な問題の回避方法についての知識が身についたね。このツールは、職場でのサーバー設定や自宅でのRaspberry Piの管理など、どこでも活用されているよ。
GO TO FULL VERSION