GNU/Linux >> Linux の 問題 >  >> Linux

Ubuntuでパスワードなしのログイン用のSSHキーを生成する

SSH (Secure Shell)は、 TCP を使用して、リモートクライアントとサーバー間の安全な接続を確立するために使用される暗号化ネットワークプロトコルです。 セキュリティと信頼性のためのプロトコル。

SSHベースの接続は、さまざまな認証方法をサポートしています。そのうちのいくつかは:

  • パスワードベースの認証
  • キーベースの認証

デフォルトでは、2台のマシン間に新しいSSH接続を作成すると、パスワードベースの認証が使用されます。ただし、同じクライアントから頻繁にサーバーにログオンしている場合は、サーバーにログインするたびにパスワードを入力するのが面倒でイライラする可能性があります。

このチュートリアルでは、公開鍵を使用してリモートサーバーにログオンするためのその他の代替認証について説明します。 。

頻繁に使用する特定のクライアントマシンとサーバーマシンでこれを設定して、このマシンから安全に自動的にログインできるようにする方法を見てみましょう。

クライアントマシン上の既存のSSHキーを確認します

最初の部分では、クライアントで秘密鍵と公開鍵のペアを生成します。 機械。公開鍵は後でサーバーにコピーされ、認証に使用されます。

SSHキーを設定する前に、このクライアントサーバーの組み合わせに既存のキーが存在しないことを確認しましょう。

このbashスクリプトを実行して、ファイルが存在するかどうかを確認しましょう(または、ターミナルで直接入力することもできます)

if test -f ~/.ssh/id_*.pub; then
    echo "Found"
else
    echo "Not Found"
fi

「見つかりません」と表示された場合は、そのようなファイルが存在しないことを意味し、この接続用の新しいキーを作成する準備ができています。

それ以外の場合は、既存のキーを直接使用して、次の手順をスキップできます。ただし、古いキーを使用したくない場合は、次の手順に従って、古いキーを削除して新しいキーを生成できます。

クライアント/サーバーマシン用の新しいSSHキーペアを生成します

以下のコマンドは、新しい 4096を生成します コメントとしてあなたのID(識別可能なものなら何でも構いません!)とのビットSSHキーペア:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

このコマンドを実行してキーの場所とパスフレーズを構成すると、キーのフィンガープリントとともに新しいキーが生成されます。

それでは、lsを使用して、秘密公開鍵が実際に存在するかどうかを確認しましょう。 。

ls ~/.ssh/id_*

以下の出力が表示されます :

/root/.ssh/id_rsa  /root/.ssh/id_rsa.pub

これは、id_rsa は秘密鍵であり、id_rsa.pub はあなたの公開鍵です。

決して 秘密鍵をマシン間で共有します。これが公開鍵を持っている理由です。したがって、同じ公開鍵を複数のサーバーにコピーしてsshに送ることができます ローカルマシンの秘密鍵を使用して追加のセキュリティを維持しながら、に。

公開鍵をサーバーにコピーします

クライアントにSSHキーのペアがあるため、リモートサーバーにログインできるようにするには、そこに公開キーをコピーする必要があります。

scpを使用できます ファイルをサーバーにコピーしますが、sshのより良い代替手段があります キー、ssh-copy-idを使用 。

ssh-copy-idをインストールできます 利用できない場合はパッケージマネージャーを使用します。

ssh-copy-id server_username@server_ip

サーバーのユーザー名パスワードを入力すると、公開鍵を使用してサーバーにログインすることが認証されます。

出力は次のようになります:

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/client_user/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
SERVER_USER@SERVER_IP's password: 


Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'SERVER_USER@SERVER_IP'"
and check to make sure that only the key(s) you wanted were added.

これは、sshを使用できることを意味します 追加のキーベースの認証を使用して、クライアントからこの特定のマシンに送信します!

テストするには、sshを試してください 今すぐサーバーに接続します!

ssh server_user@server_ip

潜在的な問題のデバッグ

ただし、キーベースのパスフレーズとともにパスワードプロンプトが表示される場合があります。何が起こっているのですか?

考えられる理由については、こちらで詳しく説明しています。 ~/.sshに対する適切な権限がないようです リモートサーバーのディレクトリ 。 HOMEの内容 ディレクトリ~~/.ssh ディレクトリ、および~/.ssh/authorized_keys ファイルは私たちだけが書き込み可能でなければなりません。それ以外の場合は、他のユーザーがアクセスできることを検知するため、パスワードも要求されます。

まず、ホームディレクトリの権限を確認しましょう。

書き込むことしかできないため、このディレクトリの権限を変更する必要はありません。同様に、モードを確認し、chmodを使用してモードを変更します 。

chmod -R ~/.ssh 700を使用して、これらのファイルとディレクトリへのアクセス許可を変更しましょう 再帰的に。

次に、これが機能するかどうかをテストします。

潜在的な問題のデバッグ–パート2

それでも機能しない場合は、このスレッドで、ssh構成ファイルの一部のオプションが無効になっている可能性があると記載されています。

/etc/ssh/sshd_configを確認してください サーバーRSAAuthenticationを確認する 、PubkeyAuthentication およびUsePAM オプションは無効になっていません。

また、PasswordAuthentication noを明示的に設定していることを確認してください 構成で、ユーザーのパスワードベースの認証を無効にします。

ご覧のとおり、これは確かに私に当てはまりました。 PubKeyAuthentication も無効になっていたため、セッションでパスワードのプライマリモードとして使用されなかったため、パスワードの入力を求められました。

この行のコメントを外し、sshを再起動しました 変更を適用します。

sudo systemctl restart ssh

これで、パスワードなしの認証がようやく機能するようになりました。うまくいけば、あなたもこの時までに解決策を見つけたでしょう。

最終的にsshを構成しました パスワードなしで動作します!

結論

このチュートリアルでは、sshを設定する方法を説明しました。 公開鍵ベースの認証方法で、パスワードなしでサーバーにログインします!


Linux
  1. Ubuntu16.04でSSHキーを設定する方法

  2. Ubuntu18.04でSSHキーを設定する方法

  3. Linux で「パスワードなし」の ssh ログイン用に SSH キーをセットアップする方法

  1. CentOS/RHEL で「パスワードレス」SSH ログイン用の SSH キーをセットアップする方法

  2. Linux で SSH の「公開/秘密鍵」ログイン用の SSH キーをセットアップする方法

  3. AES-256-CBC で SSH ペアを生成する

  1. プライバシーのためにSSHを構成する3つの方法

  2. Ubuntu18.04でSSHキーを生成する方法

  3. SSHキーを設定する方法