パスワードなしの SSH キーを使用してリモート Ubuntu 20.04 サーバーにログインする方法
Ubuntu または他の Linux サーバー (Debian、CentOS、Fedora など) をリモートで使用している場合は、SSH キー認証を使用してパスワードなしでログインする方法を次に示します。
ユーザー パスワード ログインと比較して、SSH キー認証は、キーを持っている人だけが接続を許可し、キーはさまざまなアルゴリズムで適切に暗号化されるため、より安全です。また、パスワードなしでログインすることでSSH接続も簡単になります。
1. SSH サービスを有効にします (サーバー側で実行します)。
リモートサーバーで SSH サービスを有効にしていない場合。まずサーバーに接続し、コマンドを実行して openssh をインストールする必要があります。
sudo apt install openssh-server
CentOS および Fedora サーバーの場合は、代わりに sudo dnf install openssh-server
コマンドを使用してください。
インストール後、次のコマンドでサービスを有効にして開始します。
sudo systemctl enable ssh && sudo systemctl start ssh
最後に、次のコマンドを実行して SSH サービスのステータスを確認します。
sudo system status ssh
サービスがアクティブで実行中であることが確認できた場合は、ローカル コンピューターで以下のコマンドを使用して、SSH 経由でサーバーへのリモート接続を開始できます。
ssh user@server_ip
user と server_ip を置き換えます。デフォルトの 22 でない場合は、-p port_number
を使用してポート番号を指定します。
2. SSH キー認証を有効にします (ローカル PC でコマンドを実行):
認証キーはローカル コンピューターで生成されます。通常、それらは秘密鍵と公開鍵で構成されます。公開キーをリモート Linux サーバーにアップロードすると、ローカル マシンの秘密キーを使用して SSH ログインできるようになります。
注: このチュートリアルは Ubuntu ローカル コンピューターでテストされていますが、Debian、Fedora、CentOS、Arch Linux を含むほとんどの Linux で動作するはずです。
1. OpenSSH クライアントをインストールします。
OpenSSH クライアントは、ほとんどの場合、すぐに使用できる状態でインストールされます。お持ちでない場合は、ローカル コンピューターで次のコマンドを実行してインストールします。
sudo apt install openssh-client
CentOS および Fedora の場合は、代わりに sudo dnf install openssh openssh-clients
を使用してください。
2. SSH キー ペアを生成します。
ssh-keygen コマンドを使用すると、RSA、ECDSA、および ED25519 アルゴリズムを介して SSH キー ペアを生成できます。 RSA は広く使用されており、最もよくサポートされていますが、ED25519 はより優れたセキュリティと優れたパフォーマンスを提供します。
a.) まず、ローカル コンピュータのターミナル ウィンドウで .ssh ディレクトリを作成し、そこに移動します。
mkdir -p ~/.ssh && cd ~/.ssh
b.) 次に、コマンドを実行してキー ペアを生成します。
ssh-keygen -t ed25519 -f linode_ed25519 -C "root@linode"
コード内の「ed25519」を好みの暗号化アルゴリズムに置き換えることができます。また、「-f linode_ed25519」はキー名を指定し、「-C "root@linode"」はオプションのコメントです。
c.) セキュリティ上の理由から、自分以外の他のユーザーにはアクセス許可を設定しない (読み取り不可であっても) ことを強くお勧めします。
chmod 600 ~/.ssh/linode_ed25519*
「linode_ed25519」を、前の手順で設定したキー名に変更します。最後にアスタリスク「*」があるため、「linode_ed25519.pub」ファイルにも適用されます。
3. 公開キーをホスト サーバーにアップロードします (ローカル PC で実行します)。
次のコマンドを使用して、公開キー (私の場合は「linode_ed25519.pub」) をローカル コンピューターからリモート サーバーにアップロードします。
cd ~/.ssh && ssh-copy-id -i linode_ed25519.pub user@server_ip
リスニング ポートがデフォルトの 22 でない場合は、「-p 番号」を忘れずに追加してください。また、キーをアップロードするにはリモート ユーザーのパスワードを入力する必要があります。
その後、ローカル コンピュータで SSH ログインを再試行すると、b で設定したキー パスワードが要求されます。):
ssh user@server_ip
「キャンセル」を選択すると、代わりにユーザーのパスワード認証が求められます。
4. パスワードなしの SSH キー ログインを有効にします (ローカル PC で実行します)。
[ログイン時にこのキーのロックを自動的に解除する] にチェックを入れ、最後のスクリーンショットでパスワードを 1 回だけ入力します。ただし、一部のデスクトップ環境では、この使いやすい機能が提供されない場合があります。したがって、OpenSSH 認証エージェントである「ssh-agent」がその仕事を行うために存在します。
まずシェルコマンドで「ssh-agent」を実行します。
eval 'ssh-agent'
次に、SSH キーをエージェントに追加します。
ssh-add linode_ed25519
以降、認証キーのパスワードを入力しなくてもSSHコマンドでログインします。
5. SSH ユーザーパスワードログインを無効にします (サーバー側で実行します)。
キー認証のセットアップが完了したら、ユーザー パスワード ログインを無効にして、他のユーザーがサーバーにアクセスできないようにすることができます。
まず、リモート サーバーに接続し、コマンドを実行して ssh デーモン構成ファイルを編集します。
sudo nano /etc/ssh/sshd_config
次に、「#PasswordAuthentication yes」行のコメントを解除し、その値を no に設定します。次のようになります。
パスワード認証いいえ
次に、Ctrl+X を押し、y と入力して Enter キーを押してファイルを保存します。
最後にSSHをリロードします
sudo systemctl reload ssh
コマンドを使って楽しんでください!