ECDSAの代わりにRSAキーを与えるようにSSHを強制するにはどうすればよいですか?


16

サーバーに初めてアクセスするときに、ユーザーが承認した場合にSSHにRSAキーを強制的に与えて自動的に保存させるにはどうすればよいですか?

現在、ECDSAキーを提供しています。私はすでにRSAキーを知っているので、この時点でRSAキーが表示されることを希望します。

私が試してみました:

ssh -o RSAAuthentication=yes user@server

残念ながら、これによりECDSAキーとAre you sure you want to continue connecting (yes/no)?メッセージが提供されます。


同様の状況があります。サーバーA.クライアントB.オンB:ssh Aは最初にキーを要求します。Cleint Cの場合:ssh Aが最初にpasswrdを要求します。クライアントCがECDSAキーを使用する試みに失敗した後、Aのログでこれを確認しました。Cにrsaキーをプリロードすると、ssh A 。Cが最初の試行としてECDSAキーを使用しないようにするにはどうすればよいですか?
ケミン周

回答:


14

ECDSAアルゴリズムをHostKeyAlgorithms構成変数から削除することにより。

ssh -o HostKeyAlgorithms=ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-rsa,ssh-dss user@server

デフォルトリストからすべてのECDSAアルゴリズムを単に削除しました。

もちろん、.ssh/configそのマシン用にそれを置くことができます:

Host: server
    HostKeyAlgorithms ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-rsa,ssh-dss

OpenSSLの場合、1)ホストの後にコロンはありません。2)これを投稿してからデフォルトのリストが変更されたようです。HostKeyAlgorithms ssh-rsa-cert-v01@openssh.com,ssh-rsa代わりに試してください。
カウリネーター

6

ECDSAが新しいデフォルトであるため、RSAは使用しないでください。

サーバー上でこれを行います: ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub その番号を記録します。

クライアントでは、ホストにSSH接続できますAre you sure you want to continue connecting (yes/no)?。同じ番号が表示された場合は、プロンプトに肯定的に答えることができます。その後、ECDSAキーは将来の使用のためにクライアントに記録されます。


3
ええ、しかし、ecdsaに更新するというビジネス上の決定があるまで、互換性を維持するためにRSAを必要とする古いアプリケーションがある場合はどうでしょうか?
熱狂的な

@RobertSiemerは、元の質問の投稿者のみが受け入れられた回答を変更できます。できません。
熱狂的な

1
H2ONaCl:受け入れられた回答を変更してください。これはあなたが要求したことをしません。@enthusiasticgeekすみません、混乱。
ロバートシーマー

デフォルト(権威への訴え)と新規(新規性への訴え)は必ずしも良いことを意味するわけではありません。RSAはまだ強力と考えられています。さらに強度が必要な場合は、ビット数を4096まで増やします(2048はすぐに廃止される可能性があります)。優れたECアルゴが必要な場合は、ed25519を使用します。ECDSAは、バックドアがかかっている可能性のある弱いNIST曲線を使用しているため、問題があります。これはしばらくの間、よく知られた問題でした。したがって、レガシーサポートの場合はRSAを有効にし、理想的なアルゴリズムの場合はed25519 ...を使用します。常に古いDSA(主な理由は固定サイズ1024ビットキー)を無効にし、ECDSAも無効にします。詳細については、ssh-auditを試してください。
ピーター

5

はい、すぐにECDSAに切り替えますが、それまではこれを試してください。

ssh -o HostKeyAlgorithms=ssh-rsa -o FingerprintHash=md5 user@example.com

これにより、システム(OpenSSH_6.6.1p1)に「Bad configuration option:Fingerprinthash」が表示されます。
ソレンBjornstad

1
@SorenBjornstad、このFingerprintHashオプションは不要です。その部分はそのままにしておきます。
ルーカス

2

この行を追加しました

HostKeyAlgorithms ssh-rsa

/etc/ssh/sshd_conf

このバージョンでは正常に機能しています。

OpenSSH_7.7p2 ubuntu-4ubuntu2.2

1

古いアルゴリズムのリストを見つけるためのデッドリンクを含むタンブルウィードの答えを改善するためだけです。

最初にアルゴリズムのリストを決定します。古いリストを見つけるには、次を使用しますssh -vv

ssh -vv somehost

そして、「ホストキーアルゴリズム:...」のような2行を探します。最初の行はサーバーの提供で、2行目はクライアントの提供です。または、これらの2行を自動的に選択するには、これを試してください(終了するにはctrl + dを押します)。

ssh -vv somehost 2>&1 | grep "host key algorithms:"

今それをフィルタリングしてください...それらは長く廃止されているので、すべてのdss / dsaのものを削除する必要があります。また、ecdsaも削除する必要があります(私もそうです)

ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

最終的には次のようになります。

ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

次に、設定を編集します。独自の設定の場合:

vim ~/.ssh/config

システム全体の設定の場合:

sudo vim /etc/ssh/ssh_config

新しい行をグローバルに追加します:

HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

または特定のホスト用(サーバー全体の構成には理想的ではありません):

Host somehost
    HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

入力したリストの代わりに、ssh -vv「ホストキーアルゴリズム:」部分を含めずに、出力から導出したリストを貼り付けます。


0

既存のデフォルトからキーアルゴリズムを削除することに関していくつかの点が混乱しています-最高レベルのキーは、ssh-keygen -t ras -a -b 4096 -a 113を使用して最高のセキュリティを実現する新しいRSA-sha2 / 256/512およびed25519キーです世代へ レガシーサポートは、ssh1が完全になくなるというsshニュースを読んでいるようです-最大45ビットと96ビット-dsaキーも減価されます。128/1024ビットの最大値に修正され、ハッキングが可能になりました。(poss NSAがそれを行い、デバッグコードとしてのラメ/言い訳は、その命名が心血にならないことを疑う余地がありません)そのため、高コストを支払うすべてのセキュアなRSAキー構造は、より高い標準をサポートし続けるために作り直さなければなりません。/ etc / ssh / sshd_configで説明されているように、使用するキーを設定します。2キー認証を実行してください。3キーも動作します。例:sshd_config "AuthenticationMethods publickey、publickey、publickey" -ssh -Q kexのリストがAとBの両方のサーバーまたはデスクトップに一致することを確認します。例として、possは出力の差分を作成し、同じキー拡張アルゴリズムが一致することを確認します。本番環境で新しいecdsaキーも使用しないでください。またはget-keyexchangeは部分アクセスの安全なメッセージを拒否しました。多くの良いinfozがただそれを検索するのを辛抱強くしています。


2
わかりやすくするために、このテキストの壁を壊してみてください。書式設定ガイドを使用して、コードおよびテキストファイルの内容をコードとして書式設定し、わかりやすくする場合は、独自の行に配置してください。私はあなたの答えを自分で編集できるなら、自分で喜んで編集しますが、できません。
ザンナ

-5

または、RSAキーアプローチをssh-keygen -t rsa使用する場合は、SSHを送信するサーバーを入力できます。

これにより、「〜/ .ssh / id_rsa」の下にRSA公開キーと秘密キーが生成されます。ここで必要なのは$HOME/.ssh/authorized_keys、sshを実行する予定のすべてのマシンの公開キーを、RSAキーを生成したマシンにコピーすることだけです。

そして、座ってリラックスしてください!


1
質問はクライアント側のキーではなく、サーバーのキーに関するものであることに気付きましたか?
0xC0000022L
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.