優れたサーバー管理者は、覚えるのが難しい強力なパスワードを複数使用します。ただし、リモート サーバーにアクセスするたびにそれぞれを入力するのは困難で不便です。この問題を解決するために、このチュートリアルでは、パスワードなしの SSH と、Linux でそれを構成する方法について説明します。

パスワードレスSSHとは何ですか?
パスワードレス SSH を使用すると、クライアントの SSH 公開キーをリモート サーバーにエクスポートできるため、クライアントはパスワードを必要とせずにログインできます。これを実現する方法は、非対称キー ペアを使用することです。
認証手順は次のように機能します。
クライアントが SSH サーバーにアクセスしようとすると、サーバーはまずクライアントの公開キーが承認されているかどうかを確認します。許可されている場合は、認証プロセスが続行されます。許可されていない場合は処理が終了し、サーバーにアクセスできなくなります。
サーバーがクライアントの公開キーを承認すると、サーバーはクライアントの公開キーを使用してメッセージを暗号化します。サーバーはメッセージを暗号化すると、それをクライアントに送信します。
クライアントはサーバーからメッセージを受信します。メッセージを受信すると、クライアントは秘密キーを使用してこのメッセージの復号化を試みます。クライアントが秘密キーを使用してメッセージを復号すると、サーバーがそれを検出し、SSH サーバーへの接続が確立されます。
クライアントがサーバーから送信されたメッセージを復号化できない場合、サーバーへの接続プロセスは中止されます。

SSH パスワードレスログインを使用する理由
パスワードレス SSH には、従来のパスワードベースのログイン方法に比べていくつかの利点があります。パスワードなしの SSH を使用する価値のある最も重要な利点は次のとおりです。
便利で安全なログイン
SSH サーバーに接続するためにパスワードを覚えて入力する必要がないため、認証プロセスが便利になります。さらに、公開鍵と秘密鍵の暗号化に基づいているため、中間者攻撃やその他のフィッシング攻撃によってパスワードが盗まれるリスクが排除されます。
バックアップタスクを自動化する
Rsync やその他のユーティリティを使用すると、米国のオフィスで生成されたコンテンツのバックアップを毎週作成し、それを中国のオフィスに保存するタスクを自動化できます。このプロセスは SSH を通じて暗号化され、パスワードを入力する必要がないため完全に自動で行われます。
リモート ファイル システムをマウントする
パスワードなし SSH は、SSHFS を使用してリモート ファイル システムをマウントする必要がある場合に便利です。パスワードなしで SSHFS サーバーにアクセスすると、クライアントの起動時に SSHFS サーバー自体をマウントできます。
さらに、複数の git サーバーは SSH 公開キー認証を使用します。したがって、SSH サーバーに接続するために作成した非対称キーのペアは、Git サーバーへの接続時の認証など、他の用途に使用できます。
Linux での SSH パスワードレス ログインのセットアップ
#1. SSHサーバーとクライアントがインストールされていることを確認してください
最初に行う必要があるのは、サーバーとして機能するシステムに SSH サーバーがインストールされていることを確認することです。これを行うには、ターミナルを開いて次のコマンドを入力する必要があります。
sudo apt-get install openssh-server
オペレーティング システムに新しいパッケージがインストールされていない場合、サーバーとして機能するコンピューターにはすでに SSH サーバーがインストールされ、実行されています。同様に、クライアントとして機能するシステムに、SSH サーバーに接続するために必要なパッケージがあることを確認してください。これを行うには、ターミナルを開いて次のコマンドを入力します。
sudo apt-get install openssh-client
現在、ほとんどの Linux ディストリビューションには、SSH クライアントとサーバーがデフォルトでインストールされています。
#2. 非対称キーペアの作成
SSH サーバーとクライアントに必要なパッケージがあることを確認したら、パスワードを入力せずに SSH サーバーにアクセスするための非対称キーを生成できます。
これを行うには、クライアントとして機能するコンピューター上でターミナルを開いて次のコマンドを入力する必要があります。
ssh-keygen -b 4096 -t rsa
各コマンドパラメータの意味は次のとおりです。
ssh-keygen
: キーペアを生成するコマンドです。
-b 4096
: 生成される非対称キーのサイズが 4096 ビットであることを示しています。たとえば、1024 または 2048 などの他のサイズを選択できます。
-t rsa
: キー ペアの生成に使用されるアルゴリズムが RSA である必要があることを示します。使用できる他のアルゴリズムは、DSA、ECDSA、RSA1、および ED25519 です。
コマンドを実行した直後に、キーを保存する場所とキーに付ける名前を尋ねられます。 Enter キーを押すだけです。このようにして、キーは標準の場所 (/home/user /.ssh/) に保存され、id_rsa という標準名が付けられます。
次に、秘密キーを暗号化するためのパスワードを入力するかどうかを尋ねられます。パスワードを入力せずにサーバーに接続したいので、パスワードを入力せずにEnterキーを押します。
最後に、パスワードの再入力を求められます。パスワードを入力していないので、もう一度 Enter キーを押します。

これらの手順を実行すると、非対称キーが ~/.ssh の場所に作成されます。
#3. SSH公開キーをリモートサーバーにコピーします。
SSH 経由でパスワードなしのアクセスを構成するための SSH キーには、非秘密公開キー (公開キー) と秘密キー (秘密キー) の 2 種類があります 。id_rsa は秘密キー、 id_rsa.pub は公開キーです。
コマンド ssh-copy-id を使用するか、手動で公開キーをリモート サーバーにコピーする必要があります。
SSH 公開キーのコピー コマンドの一般的な構文は次のとおりです。
ssh-copy-id username@remote.host.name
次の例の方がわかりやすいかもしれません。
ssh-copy-id root@192.168.1.6

別のオプションは、リモート サーバーにログインし、たとえば次のコマンドを実行して、ディレクトリ ~/.ssh にテキスト ファイルを作成することです。
nano ~/.ssh/authorized_keys
ローカル マシン上のファイル ~/.ssh/id_rsa.pub の内容をこのファイルにコピーし、ファイルを保存して、テキスト エディタを終了します。

#4. SSH 経由のパスワードレス アクセスのテスト
パスワードなしの SSH かどうかをテストするには、SSH サーバーへのアクセスを試行します。
$ ssh remote_username@server_ip_address
すべてがうまくいけば、パスワードなしですぐにログインできます。
Linux で SSH パスワードレス ログインを無効にする
SSH パスワードレス ログインを無効にするには、任意のテキスト エディタを使用して SSH 設定ファイルを開きます。ほとんどのディストリビューションでは、設定ファイルは /etc/ssh/sshd_config にあります。
PermitEmptyPasswords yes という行を見つけて、 PermitEmptyPasswords yes を PermitEmptyPasswords no に変更します。
設定ファイルへの変更を保存し、テキスト エディタを終了します。
SSH を再起動して変更を適用します。
sudo systemctl restart sshd
最後の言葉
パスワードは、どんなに複雑であっても安全性が低く、サーバーが多数ある場合や頻繁にログインする必要がある場合、プロセスが非効率になります。非対称キーを使用したパスワードレス ssh 認証は、より便利であるだけでなく、より安全であり、フィッシング攻撃から保護します。
対称暗号化についても検討してください。