SSH(Secure Shell)は、ネットワーク上で安全に通信を行うためのプロトコルです。以下に、SSHでのログインの仕組みを簡単に説明します。
1. SSHキーの生成
まず、SSHキーを生成します。SSHキーは公開鍵と秘密鍵のペアで構成されています。以下のコマンドを使用して、SSHキーを生成します。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
オプションの詳細
-t
:鍵のタイプを指定します。一般的にはrsa
、dsa
、ecdsa
、ed25519
などがあります。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は、暗号化された安全な通信を提供するため、リモートサーバーへのアクセスに広く利用されています。