SSH(Secure Shell)は、PCやその他のシステムにリモートで安全な方法でアクセスするために使用される標準のネットワークツールです。ここでは、UbuntuでSSHを有効にし、認証キーを使用して使用する方法を説明します。
SSHとは何ですか?
SSH、またはセキュアシェルは、ネットワークプロトコルの両方を意味します およびソフトウェア その使用に必要です。 22の専用ポート番号で動作します 。したがって、Ubuntuまたはその他のシステムポート22でSSHを使用するには、システムファイアウォールで許可する必要があります。
SSHの使用の背後にある考え方は、安全な接続を確立することです。 ネットワーク内の別のコンピューターと。ただし、リモートコンピューターにはSSHサーバーが実行されている必要があります。そうでない場合、ローカルコンピューターからコマンドまたはSSHクライアントを使用してリモートコンピューターに接続できません。
接続が確立されるとすぐに、リモートPCユーザーのパスワードを入力してログインし、完全に暗号化された形式でアクセスするためのプロンプトが表示されます。接続の結果は常に同じです。最終的にはコマンドラインになります そこにユーザーの1人としてログインしているコンピューター。
さらに、接続するのにPCは必要なく、スマートフォンでも使用できます。 SSHを使用すると、NASボックス、ルーターなど、ディスプレイなしでコンピューターを制御することもできます…
このネットワークツールはUbuntuだけに限定されるものではなく、macOS、Windows、Rasberry Piなど、スマートフォンでも使用できます…
Ubuntu20.04にOpenSSHServerをインストールして有効にする
ほとんどの場合、UbuntuにはデフォルトでSSHがOpenSSHサーバーとして付属しており、クライアントはすでにインストールされています。ただし、まだお持ちでない場合は、以下の手順に従ってください。このチュートリアルは、Ubuntu 18.04 / 19.04/21.04などのすべてのアクティブなUbuntuシステムに適用できます。
- システム更新コマンドを実行します-
sudo apt-get update
- Ubuntu20.04LTSにOpenSSHサーバーをインストールします-
sudo apt-get install openssh-server openssh-client
- 有効にする および開始 SSH Ubuntuのサーバーサービス:
sudo systemctl enable --now ssh
- ステータス実行を確認するには-
systemctl status ssh
インストールが完了したら、仮想マシンであるローカルコンピューターを使用してSSH経由でUbuntu20.04LTSシステムをリモートで接続することでテストできます。もちろん、ローカルシステムが、ネットワーク経由で接続するリモートシステムに到達できることを確認する必要があります。
SSH経由でリモートUbuntuシステムを接続する方法
ローカルシステムのコマンドプロンプトまたはターミナルを使用して、SSHを使用してリモートUbuntuシステムに接続する方法を見てみましょう。
ここでは、リモートUbuntuシステムにIPアドレス- 192.168.45.23があると想定しています。 ユーザー名はh2s;ここで、ssh経由で接続を確立するには、次の手順に従います。
- ターミナルを開きます LinuxまたはWindowsシステムのコマンドプロンプトで。
- コマンド構文「
ssh [email protected]
」を使用します 「。例-ssh[メール保護] 。 - SSHサーバーをインストールする前にUbuntuサーバーに接続したことがないため、もちろん、コンピューターはお互いを「認識」していません。
- したがって、サーバーに初めて接続するときに、本当にコンピューターに接続するかどうか、および表示された署名を信頼するかどうかを尋ねられます。 ”はいと入力して確認するだけです 「。
- その後、プロセスはのパスワードを要求します サーバー接続中のコマンドで定義されたリモートユーザー。パスワードを入力すると、リモートサーバーのコマンドラインでコマンドをリモートで発行できるようになります。これを再び残すには、「 exit」と入力します 「。
セキュリティを強化するためのキー認証
リモートUbuntuサーバーのパスワードを入力する代わりに、キーというより安全な方法を使用できます。 。プレーンなパスワードを入力する必要がないため、不明なコンピューターを使用してリモートサーバーに接続している場合に、パスワードが漏洩したりコピーされたりするのを防ぎます。
キーを使用する原理は実際には非常に単純です。 キーを作成するだけです 公開鍵と秘密鍵の概念に基づいてクライアントマシンでペアリングする 。したがって、基本的に、2つのキーを作成します。1つは公開キーです。 これは、プレーンテキストを暗号化して暗号文に変換するために使用されますが、秘密鍵 受信者が暗号文を復号化してメッセージを読み取るために使用されます。
簡単に言うと、秘密鍵はドアの鍵のようなものであり、リモートコンピュータへのドアのロックを解除するために使用できるため、秘密にしておく必要があります。公開鍵は基本的に、サーバーのドアに組み込む鍵穴です。したがって、コンセプトは私たちの家にある実際のドアに似ています。誰もがドアの鍵穴を見ることができますが、開く鍵は家の所有者だけにあります。
SSH用の公開鍵と秘密鍵を生成する
- コマンドラインを開く-ターミナル またはプロンプト ローカルシステムで。
- SSHキージェネレータコマンドを入力 キー
ssh-keygen
が生成されます - Enterを押す キー。
- (オプション) 次に、入力できます パスワード 接続を確立するときに追加のバリアを追加するため。それ以外の場合は、 Enterを押すだけです。 システムに追加のパスワードクエリを要求させたくない場合は、2回キー入力します。
- 最終的に、2つのファイルが隠しディレクトリ「.ssh」に作成されます。 ユーザーディレクトリの下:「id_rsa」 および「id_rsa.pub」 。ファイル名の「rsa」は使用される暗号化を表しますが、心配する必要はありません。ファイル拡張子「pub 」は「公開」の略で、公開鍵です。一方、拡張子のないファイルは秘密鍵です。
コマンド端末に表示されているフォルダに移動して、キーにアクセスします:
公開鍵をサーバーにコピー
ここで、キーペアを使用して接続を確立するには、生成された公開キーをサーバー(ここではUbuntu)にコピーします。
サーバーに手動でアクセスする必要はありません。SSHを使用してキーをコピーすることもできます。
次のコマンドを使用して、SSH公開鍵をサーバーにコピーします:
Linuxの場合
ssh-copy-id -i ~/.ssh/id_rsa.pub username@ip-address
注 :ユーザー名とIPアドレスを変更します リモートサーバーの実際の値を使用します。
Windowsの場合
scp C:\Users\windwos-username\.ssh\id_rsa.pub [email protected]:~/.ssh/authorized_keys
注 : windows-usernameを置き換えます 公開鍵が使用されている現在のユーザー [メール保護]が保存されましたが、 リモートのLinuxユーザーとIPアドレスが必要です。
macOSの場合:
brew install ssh-copy-id ssh-copy-id -i ~/.ssh/id_rsa.pub username@ip-address
” -i 」は、IDがコピーされることを示します。これは、指定された公開鍵を意味します。もちろん、コピーはSSH経由で行われるため、ここでパスワードリモートマシンが1回必要になります。
キーがコピーされると、秘密キーを使用して、パスワードを入力せずにリモートに接続してシステムを表示できます。ただし、秘密鍵は、自分だけがアクセスできる安全な場所にあることを確認してください。
privateを使用するには、次のコマンド構文を使用します。
ssh -i "path-to-private-key" [email protected]
公開鍵へのパス: 自分で生成した秘密鍵を保存したパスに置き換えます。
一方、ユーザー名 およびIPアドレス リモートサーバーシステムの詳細用です。
このようにして、認証キーを使用してパスワードなしの接続を取得できます。1つ注意してください。これは、秘密キーファイルを持っている場合にのみ可能です。 SSHの詳細については、公式Webサイトを参照してください。