はじめに
SSHはSecureShellの略で、コンピューター間のリモート接続を確立する方法として機能します。 SSHは通常、ログインしてリモートサーバーを管理するために使用されます。
このガイドは、Debian10LinuxでSSHキーペアを生成するのに役立ちます。
前提条件
- Debian10Linuxを実行しているシステム
- クライアントとリモートシステムの両方で設定されたSSH。 (DebianでSSHを有効にする方法を学びます。)
- ターミナルウィンドウ/コマンドラインへのアクセス(アクティビティ>検索>ターミナル )
- sudoのユーザーアカウント またはルート ローカルシステムの特権
- リモートサーバーのユーザーアカウントとホスト名
ステップ1:既存のキーを確認する
システムがすでにSSH経由でリモートサーバーに接続している場合は、SSHキーがすでにある可能性があります。ターミナルウィンドウに次のコマンドを入力して、既存のキーを確認します。
ls -l ~/.ssh/id*
そのようなファイルまたはディレクトリがないとシステムが応答した場合、システムにはSSHキーがありません。
システムがファイルをリストしている場合、SSHキーペアがあります。このキーペアを引き続き使用するには、ステップ3に進んでください。 。または、このキーペアをバックアップしてから、新しいSSHキーペアの生成に進みます。
ステップ2:SSHキーペアを作成する
この手順では、公開SSHキーと秘密SSHキーを作成します。
1.ターミナルで、次のコマンドを入力します。
ssh-keygen
2.デフォルトでは、これにより2048ビットRSAが作成されます キーペア。セキュリティを強化するために、4096ビットRSA キーペアは、 -b 4096
を使用して追加できます 次のオプション:
ssh-keygen -b 4096
システムは要求を処理してから、キーペアを保存する場所の入力を求めます。デフォルトでは、〜/ .ssh / id_rsaを使用します 。それが/。sshです ホームディレクトリのディレクトリ。
3. Enterを押します 別の場所を使用する必要がない限り、この場所を受け入れる。
4.このシステムにキーがすでに存在する場合は、古いキーを上書きするように求められます。 y
を押します 続行します。
5.次に、パスフレーズを入力して確認するように求められます。これはsshセキュリティの追加レイヤーであり、SSH経由で接続するときにユーザーにパスフレーズの入力を強制します。パスフレーズを設定して確認するか、空白のままにしてこの手順をスキップします。
6.最後に、システムはIDと公開鍵の場所、鍵の指紋、および鍵のランダムアート画像を表示します。
ステップ3:公開鍵をリモートサーバーにコピーする
公開鍵をリモートサーバーにコピーして、SSH鍵を正しくペアリングします。
1.最も簡単な方法は、次のコマンドを入力することです。
ssh-copy-id [email protected]
ユーザーを置き換えます リモートシステムの実際のユーザー名を使用します。また、ホスト名を置き換えます リモートコンピュータの実際のホスト名を使用します。ホスト名の代わりにリモートシステムのIPアドレスを使用できます。
2.システムは、指定されたユーザー名を使用してリモートシステムへの接続を試みます。最初の接続で、システムはホストの信頼性を確立できないと応答する場合があります。 yes
と入力します Enterを押します 。
3.システムがローカルシステムをスキャンしてid_rsa.pubを探します ステップ2で生成されたキー 。次に、リモートシステムのユーザーアカウントのパスワードの入力を求められます。 パスワードを入力します Enterを押します 。
4.システムは追加されたキーの数を表示する必要があります: 1 。次に、リモートシステムにログインするための手順が表示されます。画面に表示されているとおりにコマンドを入力できます。
ステップ3.1:SSH公開鍵をリモートサーバーに手動でコピーする
SSHキーを自動的にコピーできない場合は、キーを手動でコピーできます。
1.まず、次のコマンドでSSHキーを表示します。
cat ~/.ssh/id_rsa.pub
システムは、作成されたばかりのSSH公開鍵を表示する必要があります。次で始まる必要があります:
ssh-rsa AAAA
2.この文字列をメモします。
3.次に、リモートサーバーにアクセスします。ターミナルを開き、次のように入力して新しいsshディレクトリを作成します。
sudo mkdir -p ~/.ssh
5.次に、次のように入力して、authorized_keysファイルに公開鍵を追加します。
sudo echo ssh_public_key >> ~/.ssh/authorized_keys
ssh_public_keyを置き換えます catコマンドによって表示される実際の公開鍵を使用します。
6.新しいディレクトリに正しい権限を設定します:
sudo chmod -R go= ~/.ssh
7.サーバーでrootDebianユーザーアカウントを使用している場合は、ディレクトリ所有者をサーバーにリモートでログインするユーザーアカウントに設定する必要があります。
sudo chown -R user:user ~/.ssh
ステップ4:SSHを使用してリモートでログインする
1.クライアントシステムから、ターミナルウィンドウを開き、次のように入力します。
ssh [email protected]
2.システムは、ホストの信頼性を確立できないことを表示する場合があります。 yes
と入力します Enterを押します 。
3.ステップ2でパスフレーズを設定した場合 、プロンプトが表示されたら入力します。
これで、リモートサーバーへのSSH接続が確立されました。
ステップ5:パスワード認証を無効にする(オプション)
パスワード認証を無効にすることは、セキュリティ上の予防措置です。サーバーにログインしようとするブルートフォース攻撃を防ぎます。
続行する前に、次のことを再確認してください。
- パスワードなしでサーバーにログインできます(この記事で詳しく説明している、キーペアを使用したSSH接続の使用など)。
- sudoユーザーアカウントでサーバーにログインしています。
1.リモートサーバーにログインすることから始めます:
ssh [email protected]
このユーザー名にはsudoが必要です 特権。
2.次に、 sshd_configを編集します 選択したテキストエディタでファイルを作成します(nanoを使用しています):
sudo nano /etc/ssh/sshd_config
3.次の行を見つけて変更し、次のようにします。
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
4.変更を書き込んでから、エディターを終了します。次のように入力して、SSHサービスを再起動します。
sudo systemctl restart ssh
システムは、ログインのパスワード認証を許可しなくなりました。