SSHキーパスワードを適用しますか?


9

SSHのパスワードベースのログインの削除を検討しています。ただし、パスワードなしのsshキーは許可されないようにします。

パスワードのあるSSHキーだけが接続できることを確認するにはどうすればよいですか?

これが実行できない場合、SSHキー生成を一元管理し、ユーザーが自分のキーを生成および/または使用できないようにするなどの代替策はありますか?PKIのようなものだと思います。

回答:


20

秘密鍵に設定できるパスフレーズは、SSHサーバーまたはその接続とは無関係です。パスフレーズを秘密鍵に設定することは、秘密鍵が盗まれた場合に第三者がリモートシェルにアクセスできないようにするために、鍵の所有者が取るセキュリティ対策にすぎません。

残念ながら、ユーザーに自分の秘密鍵をパスフレーズで保護するように強制することはできません。リモートSSHサーバーへのアクセスを自動化するために、保護されていない秘密鍵が必要になる場合があります。このような場合に私が強く推奨する習慣の1つは、次のコマンドを使用して、ユーザーが接続するリモートホストに関する情報を保持する(〜/ .ssh / known_hostsに保存されている)known_hostsファイルをハッシュするようユーザーにアドバイスすることです。

ssh-keygen -H -f ~/.ssh/known_hosts

この方法では、保護されていない秘密キーに第三者がアクセスした場合でも、このキーが有効なリモートホストを見つけることは非常に困難です。もちろん、この手法を有効にするには、シェルの履歴をクリアする必要があります。

また、常に心に留めておくべきもう1つのことは、SSHサーバーの構成(sshd_config)に次の行を追加して、rootがリモートでログインできないようにすることです。

PermitRootLogin no

一方、ユーザーが認証にキーを使用するのを防ぎ、代わりにパスワードを使用したい場合は、以下をsshd_configに追加する必要があります。

PasswordAuthentication yes
PubkeyAuthentication no

8

不可能です。

ユーザーはキーファイルを使用して何でもでき、たとえそれを生成したとしても、パスワードなしに変換できます。


3

できません。ユーザーが主要なデータを手に入れたら、パスフレーズを削除するのを止めることはできません。認証を行う他の方法を探す必要があります。


2

ユーザーキーを制御するには、すべてのキーをルート所有ディレクトリに移動する必要があります。このディレクトリでは、キーは読み取り可能ですが、エンドユーザーは変更できません。これは、sshd_configを更新することで実行できます。

キーファイルを管理された場所に配置したら、更新(およびパスワードポリシーを適用)するための管理インターフェイスと、それに続く必要なホストへのキーの配布が必要になります。自分でロールするか、FoxT / Tectiaなどの製品を見てください。


...公開鍵の利点を打ち破る
Patwie 2017年

0

1つの緩和策は、googleオーセンティケーターPAMモジュールプラグインを使用することです。通常、公式パッケージ内で入手できます。

これにより、スマートフォンの6桁のコードを通じて2FAが利用可能になります。

ここでの手順: Ubuntu 16.04でSSHの多要素認証を設定する方法


1
これは質問に直接回答するのではなく、(良い)代替手段であることに注意してください。
ceejayoz

1
@ceejayozあなたは正しいです。答えの最初に「緩和策の1つは使用することになるだろう」を追加したので、これが代替案であることを明確にしました。
バジルA

-1

単純です。SSHプロトコルを拡張するだけで、SSHクライアントまたはSSHエージェントは、元の秘密鍵が暗号化されているかどうかを報告するフラグを報告または設定します(おそらくサーバー側でもクエリを実行できます)-クライアント側には可視性があるため秘密鍵のほか、鍵が暗号化されている場合はパスフレーズの入力を求められます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.