MOSFET’s blog

学んだことの備忘録

SSHでログインする仕組み

SSH(Secure Shell)は、ネットワーク上で安全に通信を行うためのプロトコルです。以下に、SSHでのログインの仕組みを簡単に説明します。

1. SSHキーの生成

まず、SSHキーを生成します。SSHキーは公開鍵と秘密鍵のペアで構成されています。以下のコマンドを使用して、SSHキーを生成します。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

オプションの詳細

  • -t:鍵のタイプを指定します。一般的にはrsadsaecdsaed25519などがあります。rsaは最も広く使われているタイプです。
  • -b:鍵のビット長を指定します。RSA鍵の場合、2048や4096が一般的です。ビット長が長いほど安全ですが、生成や使用時に時間がかかることがあります。
  • -C:鍵にコメントを付けるオプションです。通常は、キーの所有者を識別するためにメールアドレスを使用します。

以下は、オプションを使ったコマンドの例です。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

このコマンドを実行すると、以下のような出力が表示されます。

Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa): [Press Enter]
Enter passphrase (empty for no passphrase): [Enter a passphrase]
Enter same passphrase again: [Repeat passphrase]
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:...
The key's randomart image is:
+---[RSA 4096]----+
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
+----[SHA256]-----+

2. 公開鍵をサーバーに追加

生成した公開鍵を、ログイン先のサーバーに登録します。公開鍵は~/.ssh/id_rsa.pubに保存されています。この公開鍵を、サーバーの~/.ssh/authorized_keysファイルに追加します。

自動で公開鍵を追加する方法

ssh-copy-idコマンドを使用すると、公開鍵をサーバーに自動的に追加することができます。このコマンドは、ローカルの公開鍵をリモートサーバーの~/.ssh/authorized_keysに追加します。

ssh-copy-id user@server_address

このコマンドを実行すると、以下のような出力が表示されることがあります。

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/username/.ssh/id_rsa.pub"
The authenticity of host 'server_address (192.168.1.1)' can't be established.
ECDSA key fingerprint is SHA256:...
Are you sure you want to continue connecting (yes/no)? yes
user@server_address's password:
Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'user@server_address'"
and check to make sure that only the key(s) you wanted were added.

手動で公開鍵を追加する方法

または、手動で公開鍵をauthorized_keysファイルに追加することもできます。

cat ~/.ssh/id_rsa.pub | ssh user@server_address 'cat >> ~/.ssh/authorized_keys'

3. SSHでサーバーにログイン

公開鍵をサーバーに追加した後、SSHを使用してサーバーにログインできます。

ssh user@server_address

このコマンドを実行すると、秘密鍵を使用してサーバーに安全にログインできます。

まとめ

以上がSSHを使ってサーバーにログインする基本的な手順です。SSHは、暗号化された安全な通信を提供するため、リモートサーバーへのアクセスに広く利用されています。