Ubuntu20.04でSSHキーを追加する方法

Ubuntu20.04でSSHキーを追加する方法

SSHキーを使用してリモートUbuntuサーバーへの安全なパスワードなしのログインをセットアップします

SSHは、クライアントコンピューターがリモートサーバーに接続して通信するのに役立つ安全なクライアントサーバーネットワークプロトコルです。SSH接続により、端末に入力されたコマンドが暗号化されたチャネルを介してリモートサーバーに送信されます。

リモートサーバーへの接続に使用される認証メカニズムには、パスワードベースの認証(ブルートフォース攻撃を受けやすい)とSSHキーベースの認証(非常に安全)の2種類があります。

SSHキーベースの認証では、公開キーおよび秘密キーと呼ばれるキーペアがクライアントコンピューター上に生成されます。この公開鍵のコピーは、リモートサーバーで利用できるようになります。クライアントがサーバーに接続要求を送信すると、サーバーはランダムな文字列を生成し、公開鍵を使用して暗号化します。この文字列は、クライアントコンピューターで使用可能な秘密鍵を使用してのみ復号化できます。この方法により、秘密鍵を含むクライアントのみがサーバーにアクセスできるようになります。

このガイドでは、Ubuntu 20.04LTSサーバーでSSHキーを設定する方法を説明します。

コンピューターに既存のSSHキーがあるかどうかを確認します

SSHキーペアがコンピュータにすでに存在するかどうかを確認するには、ターミナルでこのコマンドを入力します。

ls -l ~/.ssh/id_*.pub

上記のコマンドがno such file or directoryまたはを返す場合は、no matches foundSSHキーペアが存在しないことを意味します。

既存のSSHキーペアがある場合は、同じキーペアを使用して2つのリモートサーバーにアクセスするか、異なる名前の別のキーペアを作成することもできます。次のステップに進み、両方の場合のSSHキーを生成する方法を見てみましょう。

クライアントコンピューターでのSSHキーの作成

コンピューターで新しいSSHキーペアを生成するには、次のようにコマンドを入力します。

ssh-keygen

デフォルトでは、SSHキーは2048ビットです。セキュリティを強化するために、より高いビットでSSHキーを生成する場合は、次のコマンドを使用します。

ssh-keygen -b 4096

コマンドが正常に実行されると、次のメッセージが画面に表示されます。

公開/秘密rsaキーペアを生成します。
キーを保存するファイルを入力します(/home/harshit/.ssh/id_rsa):

コンピュータに既存のSSHキーペアEnterがない場合は、を押すだけですが、既存のSSHキーがある場合は、以下に示すように、別のファイル名でキーを保存します。

キーを保存するファイルを入力します(/home/your_name/.ssh/id_rsa):/home/your_name/.ssh/id_rsa_xxx

xxx以下に示すように、ファイル名の末尾にあるを適切な名前に置き換えて、を押しEnterます。

キーを保存するファイル(/home/your_name/.ssh/id_rsa)を入力します:/home/your_name/.ssh/id_rsa_client_1

次のプロンプトでは、任意の長さのパスフレーズを入力するように求められます。これにより、デバイスで2レベルのセキュリティが確保されます。 

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

このパスフレーズを入力すると、その人があなたの秘密鍵にアクセスできたとしても、このパスフレーズがないとリモートサーバーにアクセスできなくなります。

プロセス全体が完了すると、次のメッセージが画面に表示されます。

Ubuntu20.04でSSHキーを追加する方法

SSHキーがシステムで生成されました。次に、リモートサーバーに公開鍵をコピーします。

公開鍵をリモートUbuntuサーバーにコピーする

公開鍵をリモートサーバーにコピーする最も簡単で迅速な方法は、ssh-copy-idユーティリティを使用することです。ただし、何らかの理由でこのユーティリティがマシンで使用できない場合は、このセクションで提供されている他の方法を使用することもできます。

ssh-copy-idユーティリティの使用

このssh-copy-idユーティリティは、デフォルトでUbuntuマシンで使用でき、デバイスからリモートUbuntuマシンの適切なディレクトリに公開鍵をコピーします。

公開sshキーをコピーするには、以下に示すように、ターミナルでコマンドを入力するだけです。

ssh-copy-id [email protected]

交換するusernamehostname、サーバーのユーザー名とホスト名で上記のコマンドインチ

初めてホストに接続する場合は、次のメッセージが端末に表示されます。入力してyes、を押しEnterます。

ホスト「172.105.XX.XX(172.105.XX.XX)」の信頼性を確立できません。
ECDSAキーのフィンガープリントはxx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xxです。
接続を続行してもよろしいですか(はい/いいえ)?はい

これで、ssh-copy-idユーティリティはid_rsa.pub公開SSHキーを含む名前のファイルをスキャンします。スキャンプロセスが完了すると、以下に示すように、リモートサーバーのパスワードを入力するように求められます。パスワードを入力して、を押しますEnter

/ usr / bin / ssh-copy-id:情報:新しいキーでログインしようとしています。すでにインストールされているキーを除外します。
/ usr / bin / ssh-copy-id:情報:1つのキーがまだインストールされていません-プロンプトが表示されたら、新しいキーをインストールします
[メール保護]のパスワード:

キーが追加されると、次のメッセージが出力として端末に表示されます。

追加されたキーの数:1
次に、「ssh ' [電子メールで保護] '」を使用してマシンにログインし、必要なキーのみが追加されていることを確認します。

クライアントコンピューターに複数のSSHキーがある場合は、適切な公開キーをリモートコンピューターにコピーするには、以下に示すパターンでコマンドを入力します。

ssh-copy-id -i id_rsa_xxx.pub [email protected]

💡ヒント

ターミナルに入力するときは、ファイル名の最後に.pubを付けることを忘れないでください。

配管方式による公開鍵のコピー

ssh-copy-idユーティリティが利用できない場合は、ターミナルで次のコマンドを入力します。このコマンドは少し長く見えるかもしれませんが、適切に機能します。

cat ~/.ssh/id_rsa.pub | ssh [email protected]_ip_address "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

交換するremote_usernameserver_ip_addressユーザー名とIPアドレスを持ちます。

コンピューターで複数のSSHキーを使用できる場合id_rsa.pubは、を選択した公開SSHキーファイルに置き換えます。たとえば、id_rsa_client_1.pub

プロンプトが表示されたらリモートユーザーのパスワードを入力し、を押しますEnter

[email protected]'s password:

パスワードを入力すると、id_rsa.pubファイルがauthorized_keysリモートサーバーのファイルにコピーされます。

公開鍵を手動でコピーする

パスワード認証を介してリモートシステムにアクセスできない場合は、この方法を使用してください。

ターミナルでコマンドid_rsa.pubを使用してファイルを開きますcat。テキストエディタから開くこともできます。目的はファイルの内容をコピーすることだけです。

cat ~/.ssh/id_rsa.pub

ファイルの内容は次のようになります。

SSH-RSA AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6Hy / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH [Eメール保護] _PC

次に、リモートサーバーにログインし、以下に示すコマンドを使用して、コピーしたコンテンツを貼り付けます。をabove_stringコピーしたコンテンツに置き換えます。

echo above_string >> ~/.ssh/authorized_keys

複数のSSHキーの構成(オプション)

この手順は、クライアントコンピューターに複数のSSHキーを設定しているユーザーを対象としています。SSHキーの設定が1つしかない場合は、このセクションをスキップしてください。

複数のSSHキーを管理するために、次に示すコマンドを使用してconfig.sshディレクトリ内にファイルを作成します。

cd ~/.ssh
vim config

入力i次の例に示すように、コマンドモードに入り、複数のホストの詳細を入力します。

Host remote-ubuntu-server
HostName 172.105.XX.XX
User root
IdentityFile ~/.ssh/id_rsa_client_1

Host remote-ubuntu-server
HostName 172.106.XX.XX
User root
IdentityFile ~/.ssh/id_rsa_client_2

同様に、他のリモートサーバーとそのキーの詳細を入力します。プロセスが完了したら、Esc:wqを押して保存して終了します。

これで、後続のプロセスは、クライアントコンピューターに単一または複数のSSHキーがある場合でも同じになります。

SSHキーを使用してリモートサーバーにログインします

公開鍵のコピープロセスが完了したら、以下に示すようにコマンドを入力してリモートサーバーにログインします。

ssh [email protected]_ip_address

キーペアの生成中にパスフレーズを指定した場合は、パスフレーズを入力するように求められます。認証プロセスが完了すると、新しいセッションが開きます。

これで、リモートサーバーでSSHキーベースの認証が正常に構成されました。ただし、パスワードベースの認証はサーバー上で引き続きアクティブです。これは、リモートサーバーがブルートフォース攻撃を受けやすいことを意味します。

そこで、リモートサーバーからパスワードベースのログインメカニズムを完全に無効にします。

パスワードベースのログインメカニズムを無効にする

変更を加える前に、リモートアカウントのrootユーザーまたはsudo対応ユーザーがSSHキーベースの認証システムを使用してサーバーにアクセスできることを確認してください。この手順では、パスワードベースのログインを完全にロックまたは無効にするため、少なくとも1人のユーザーroot権限がSSHキーを介してサーバーにアクセスできることが重要です。

リモートUbuntuサーバーにログインし、以下に示すコマンドを入力します。

sudo vim /etc/ssh/sshd_config
  • を押しEsc/「PasswordAuthentication」と入力してを押しenterます。 
  • 次に、を押してi、「PasswordAuthenticationyes」の値を「PasswordAuthenticationno」に変更します。
  • Esc上記のプロセスを押して繰り返し、「ChallengeResponseAuthentication」、「UsePAM」を見つけ、それらの値もに変更しますno
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

すべての値は次のように設定されるとno、プレスEsc、種類:wqとヒットenter

すべての変更をアクティブにするには、ssh以下のコマンドを使用してサービスを再起動します。

sudo systemctl restart ssh

次に、コンピュータで新しいターミナルウィンドウを開き、SSHキー認証が正しく機能していることを確認してから、現在のセッションを閉じます。

検証プロセスが完了したら、実行中のすべてのセッションを閉じます。

これで、Ubuntu20.04サーバーでSSHキーベースの認証が正常に構成されました。これで、パスワードベースのログインメカニズムを使用してサーバーにログインすることはできなくなりました。 


2020年のUbuntu20.04の15のベストテーマ

2020年のUbuntu20.04の15のベストテーマ

多くの新しい更新されたテーマは、Ubuntu20.04の新しいGNOMEデスクトップにインストールする準備ができています。ここに2020年の最高のubuntuテーマのリストがあります

Ubuntuの「Alt-Tab」でWindowsのグループ化を解除する方法

Ubuntuの「Alt-Tab」でWindowsのグループ化を解除する方法

Ubuntuでは、デフォルトで、Windowsの代わりにアプリケーションを切り替えることができます。これを元に戻し、UbuntuのAlt-Tabでタブのグループ化を解除する方法は次のとおりです。

Ubuntu20.04に最適な10以上のGNOME拡張機能

Ubuntu20.04に最適な10以上のGNOME拡張機能

Gno-Menu、Extended Gesturesなどの人気のある拡張機能の多くは、Ubuntu20.04では機能しません。したがって、ここに最も効果的なGNOME拡張機能のリストがあります

7最高のUbuntuダイナミック壁紙アプリ

7最高のUbuntuダイナミック壁紙アプリ

アプリを使用してUbuntuのネイティブ壁紙をスライドショーすることはいつでもできますが、壁紙を動的にダウンロードして設定するためのアプリをいくつか紹介します。

Ubuntuのルートスーパーユーザーの違い

Ubuntuのルートスーパーユーザーの違い

Ubuntuのルートスーパーユーザーの違いは何ですか?さて、ここでカバーしてもらいます。

Ubuntu12.04用のTeamViewer8をインストールします

Ubuntu12.04用のTeamViewer8をインストールします

このビデオでは、完全なガイド付きのubuntu12.04システム用のTeamViewer8をインストールして使用します。しかし、これはウィンドウでも同じように機能します。

2020年のUbuntu用の最高の無料ビデオエディタ

2020年のUbuntu用の最高の無料ビデオエディタ

すべての綿毛を除いて、ここにあなたが素晴らしいビデオを作成するために使うことができるUbuntuのための最高の無料のビデオエディタのリストがあります。

Linuxを使い始めるための9つの基本コマンド

Linuxを使い始めるための9つの基本コマンド

Linuxのハウツーガイドでは、ターミナルで特定の操作を実行することを期待していることがよくありますが、これは最初は恐ろしいように思えます。しかし、心配する必要はありません。このLinuxコマンドのチートシートでは、ターミナルを開いていくつかの便利なコマンドを発行するプロセスについて説明します。

ArchLinuxでパッケージをインストールおよび削除する方法

ArchLinuxでパッケージをインストールおよび削除する方法

Arch Linuxにパッケージをインストールしたいのですが、方法がわかりませんか?多くの人は、DebianベースのディストリビューションからArchに最初に移行するときにこの問題に直面します。ただし、パッケージマネージャーを使用して、Archベースのシステムでパッケージを簡単に管理できます。

UbuntuからAndroidへの5つの最高のWi-Fiファイル転送アプリ

UbuntuからAndroidへの5つの最高のWi-Fiファイル転送アプリ

FTP、ピアツーピアファイル転送、Wi-Fi転送などのメカニズムを使用すると、AndroidとUbuntuの間でファイルを頻繁に共有する場合に時間を節約できます。