パスワードなしで SSH サーバーにログインすることをお勧めします。 真剣に、それを取り除きます。 Linux サーバーで最も攻撃されているサービスの XNUMX つでパスワードを使用する必要はありませんよね? 準備 SSH サーバーを保護する 標準のパスワード ベースの認証を使用することはお勧めできません。 パスワードは攻撃者によって簡単に解読される可能性があり、悪意のある人物とサーバーの間に立っているのがパスワードだけである場合、間違いなく緊張するはずです。 これが、RSA キーベースの認証が非常に優れている理由です。 すでに受け入れられている RSA キーを持つコンピューターからのアクセスのみを許可するように、Linux サーバーを構成して保護することができます。 それ以外の人はすぐに拒否されます。 追加のボーナスとして、パスワードの有無にかかわらずこれらのキーを生成できます。それは完全にあなた次第です。 それにもかかわらず、ほとんどの場合、パスワードのない強力な鍵は良いことです. このガイドでは、Linux でパスワードなしの SSH ログインを有効にする方法を学習します。
自宅でも Linux マシンを使用している場合は、利便性が向上します。 Linux ワークステーションからラップトップへの SSH X 転送をセットアップしたいとしましょう。 リモート プログラムを起動するたびにパスワードを入力しますか? SSH キーを設定します。必要はありません。
パッケージをインストールする
必要なパッケージがいくつかあります。 すでにいくつかお持ちかもしれませんが、ぜひチェックしてみてください。 パッケージは、サーバーとクライアントの両方で同じです。 ただし、両方のマシンが互いのサーバーおよびクライアント (ホーム状態) である可能性も十分にあるため、これらのパッケージがインストールされていることを確認することをお勧めします。
OpenSSH メタパッケージは、デフォルトでは他のシステムにインストールされません Debianの أو Ubuntu. まだインストールしていない場合は、次のコマンドを実行してインストールできます。
sudo apt インストール ssh

Linux で独自の SSH キーを作成する
本当に簡単です SSH キーを作成する Linuxで。 キーを生成する必要があることを OpenSSH に伝えるだけです。 -b フラグでビット数を指定し、-t でタイプを指定することもお勧めします。 より強力な暗号化を提供するため、4096 ビット キーが最適です。
ssh-keygen -t ed25519
最初に、ツールはキーを保存する場所を尋ねます。 クリックするだけ Enter デフォルトのディレクトリに。 パスワードを要求されたら、パスワードレス キーとパスワードレス認証の場合は空白のままにします。 キーにパスワードを使用する場合は、ここに入力します。
コンピューターがキーを生成するのに数秒かかります。 完了すると、キーの ASCII アートワーク表現がデバイスに出力されます。
キーをリモートの Linux ホストに送信する
キーを使用するには、キーをリモート サーバーに送信する必要があります。 OpenSSH には、そのための別の組み込みツールもあります。 キーの場所と、サーバー上のどのユーザーに関連付けるかを伝えます。
ssh-copy-id -i ~/.ssh/id_ed25519.pub ユーザー名@ip_remote_host
交換 ip_remote_host SSH 経由で管理するリモート ホストの実際の IP アドレスを使用します。 ユーザー名をリモート ホストの実際のユーザー名に置き換えます。

-i オプションを使用して、公開鍵を含む ID ファイルを指定する必要があります。 このオプションを指定せずに SSH キーを使用しようとすると、エラーが発生する場合があります。

Linux で SSH 接続をテストする
リモート サーバーの SSH キーを使用して、接続が正常に機能しているかどうかをテストできます。
次のコマンドでログインします。
ssh ユーザー名@ip_remote_host
リモート ホストは、ユーザー アカウントのパスワードを要求せずにログインします。

ただし、プロセス中に間違いを犯した場合、SSH デーモンは自動的にユーザー アカウントのパスワード認証に戻ります。 これにより、RSA キーが機能していない場合でも、引き続きリモート サーバーにアクセスできます。

パスワードをブロックするように SSH を構成する
最適な保護のために、Linux サーバーで SSH パスワード ログインを無効にする必要があります。 SSH で XNUMX 要素認証を有効にするのと同様に、これにより、誰かがサーバーに無理やり侵入するのを防ぎます。

これを行う前に、SSH キーで確実にログインできることを確認することが重要です。これは、キーが壊れているとリモート サーバーにアクセスできなくなる可能性があるためです。
構成ファイルを見つけることができます SSH デーモン 「/etc/ssh」にあるファイル /sshd_config". sudo と任意のテキスト エディターを使用して、サーバー上のファイルを開きます。 たとえば、次のコマンドを実行して、このファイルを nano で開きます。
sudo nano / etc / ssh / sshd_config
をクリックして、以下の行を見つけます Ctrlキー+ W 例のように編集します。 両方のエントリのコメントを外し、値を次のように変更します لا。
パスワード
PasswordAuthentication いいえ PermitEmptyPasswords いいえ

設定 パスワード認証 パスワード認証を使用するかどうか。 これを設定しました "いいえ" SSHキーのみを使用したいためです。
決定する AllowEmptyPasswords サーバーが空のパスワードでのログインを許可するかどうか。 これは絶対に許可しないでください。 "いいえ"。

次に、「UsePAM」行を見つけて「いいえ」に変更します。 これにより、デーモンは SSH キー以外の認証方法 (パスワード、Kerberos など) を使用できなくなります。
UsePAM いいえ

をクリックしてファイルを保存します。 Ctrl + O 、その後 Ctrlキー+ X そしてリロード SSHサーバー.
sudo systemctl sshを再起動する
認証に SSH キーのみを使用するようにサーバーを正常に構成したので、有効な RSA キーなしでログインしようとすると、すぐに拒否されます。

よくある質問
Q 1. Linux サーバーに SSH キーを送信すると、「接続が拒否されました」というメッセージが表示されます。 どうすればこの問題を解決できますか?
答え。 SSH サーバーがリモート ホストで実行されていることを確認します。 これは、sudo systemctl status ssh を実行して確認できます。 サービスが実行されていない場合は、次のコマンドで開始できます: sudo systemctl start ssh.
サーバーでファイアウォールが実行されている場合は、sudo ufw state を実行してポート 22 が開いていることを確認してください。 SSH がリストされていない場合は、次のコマンドを実行して有効にすることができます: sudo ufw allow ssh.
Q2. ログインしようとすると「許可が拒否されました (公開鍵)」というエラーが表示されます。 私は何をしますか?
答え。 このエラーは、認証にキーを使用するようにサーバーを構成したが、パスワードを使用してログインしようとしていることを意味します。 これは、RSA キーが見つからないか、SSH セットアップが正しくないことが原因である可能性があります。 公開鍵がサーバーに正しくコピーされていること、および接続時に正しい公開鍵を指定していることを確認してください。
Q 3. 接続しようとすると「ホスト キーの検証に失敗しました」というエラーが表示されます。 どうすればこの問題を解決できますか?
答え。 このエラーは、SSH サーバーのホスト キーが変更されたことを意味します。 これは、サーバーが再インストールされた場合に発生する可能性があります。 新しい公開鍵を再生成して、リモート ホストにコピーできます。 この記事の手順を繰り返して、新しいキーを再生成し、サーバーに追加します。
Q4. 同じリモート Linux サーバーで複数の SSH キーを使用することはできますか?
答え。 はい。 OpenSSH で -f オプションを使用して、リモート サーバーへの接続に使用する正確なキーを指定できます。 たとえば、次のように実行します。
ssh -f ~/.ssh/id_rsa_2 username@remote_ip_address
これにより、デフォルトの「id_rsa」の代わりに「id_rsa_2」キーを使用してリモート サーバーに接続されます。
ただし、このコマンドは、リモート サーバーが新しいキーを既に認識している場合にのみ機能することに注意してください。 まず、ssh-copy-id を使用してリモート サーバーにコピーする必要があります。 上記の手順と同様に、パスワードまたは RSA キー認証を使用してこれを行うことができます。
Q 5. SSH キーをサーバーにコピーしようとすると、Permission Denied エラーが発生します。
答え。 この問題は、リモート サーバーのアクセス許可の問題が原因である可能性が最も高いです。 ほとんどの場合、ssh-copy-id ユーティリティは、リモート サーバーに接続すると、アクセスの問題を適切に解決するはずです。 ただし、この機能が動かなくなり、「id_rsa」をローカル マシンに正しくコピーできない場合があります。
これを修正するには、リモート サーバーにログインして実行します。
chmod 700 /home/$USER/.ssh/* && chmod 600 /home/$USER/.ssh.
これにより、「.ssh」フォルダーとその内容の両方に正しい許可ビットが設定されます。





