ウェブサイト検索

パスワードなしの 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 コマンドを使用すると、RSAECDSA、および 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

コマンドを使って楽しんでください!

関連記事