Linux サーバーを管理している場合は、SSH 経由でログインしたり、scp を使用してファイルをコピーしたりするたびにパスワードを入力するのがどれほど面倒であるかをご存知でしょう。このチュートリアルでは、SSH パスワードなしのログインを実現するための SSH キーの使用方法を紹介します。scp を使用してファイルをコピーする場合、パスワードを入力する必要はありません。 SSH ログインと SCP ファイルのコピーを容易にすることに加えて、SSH パスワードなしログインにより、Linux サーバーに別のセキュリティが追加されます。
SSH パスワードなしログインのセットアップ手順
- まず、Linux システム上で SSH キーのペア (SSH キーと SSH 公開キー) を生成します。キーは独自の Linux システム上に保持されます。
- 次に、公開キーが Linux サーバーにアップロードされます。その後、パスワードなしで SSH 経由でログインできるようになります。 SSH キーは身元証明のようなものです。
1 独自の Linux システムで SSH キーと公開キーを生成する
ターミナルを開き、以下の ssh-keygen を使用して RSA キーと公開キーを生成します。 -t はタイプを示し、RSA 暗号化キーを生成することを意味します。
ssh-keygen -t rsa
RSA はデフォルトの暗号化タイプでもあります。したがって、単に ssh-keygen と入力することもできます。デフォルトの RSA 長は 2048 ビットです。セキュリティを非常に重視する場合は、4096 ビットの長さを指定できます。
ssh-keygen -b 4096 -t rsa
SSH キーの生成プロセス中に、キーを保存するファイルを指定するように求められます。Enter キーを押すだけでデフォルトのファイルを使用できます。次に、SSH キーを暗号化するためのパスワードを入力する必要があります。パスワードは 20 文字以上である必要があります。 SSH キーは、ホーム ディレクトリの .ssh/id_rsa ファイルに保存されます。 SSH 公開キーは、.ssh/id_rsa.pub ファイルに保存されます。
Generating public/private rsa key pair. Enter file in which to save the key (/home/matrix/.ssh/id_rsa): 按Enter键 Enter passphrase (empty for no passphrase): 输入一个密码 Enter same passphrase again: 再次输入密码 Your identification has been saved in /home/matrix/.ssh/id_rsa. Your public key has been saved in /home/matrix/.ssh/id_rsa.pub. The key fingerprint is: e1:dc:ab:ae:b6:19:b0:19:74:d5:fe:57:3f:32:b4:d0 matrix@vivid The key's randomart image is: +---[RSA 4096]----+ | .. | | . . | | . . .. . | | . . o o.. E .| | o S ..o ...| | = ..+...| | o . . .o .| | .o . | | .++o | +-----------------+
.ssh/id_rsa ファイルを見ると、このファイルが暗号化されていることがわかります。つまり、入力したパスワードで暗号化されます。
less .ssh/id_rsa
2SSH公開キーをLinuxサーバーにアップロードします
これは、ssh-copy-id コマンドを使用して実行できます。
ssh-copy-id username@remote-server
リモート ユーザーのパスワードを入力すると、SSH 公開キーが自動的にアップロードされます。 SSH 公開キーは、リモート Linux サーバーの .ssh/authorized_keys ファイルに保存されます。
アップロード完了後は、SSH ログイン時に再度パスワードを入力する必要はありません。ただし、SSHキーを使用して初めてログインする場合は、SSHキーの暗号化パスワードを一度入力する必要があります。 (一度入力するだけで、次回からは自動的にログインされます。キーのパスワードを入力する必要はなくなります。)
scp コマンドを使用してファイルを転送する場合、パスワードを入力する必要はありません。
SSH キーの知識
Linux システムにはキーリング管理プログラムがあります。キー リングはユーザーのログイン パスワードによって保護されます。 Linux システムにログインすると、キー リングのパスワードが自動的にロック解除され、キー リングにアクセスできるようになります。 SSH キーのパスワードもキーリングに保存できます。したがって、SSH キーを使用してリモート Linux サーバーに初めてログインするときは、SSH キーのパスワードを 1 回入力する必要があります。将来的には、SSH キーを使用してログインするときにパスワードを入力する必要はなくなります。 Ubuntu のキーリング プログラムは seahorse です。
SSH キーは身元証明のようなものです。リモート Linux サーバーは、生成された SSH 公開キーを使用してメッセージを暗号化し、SSH キーのみがメッセージを復号化できます。したがって、他の人があなたの SSH キーを持っていない場合、暗号化されたメッセージを復号化することができず、その結果、あなたの Linux サーバーにログインできなくなります。
SSH パスワードなしログインの設定は非常に簡単です。