web-dev-qa-db-ja.com

SSH DSAキーがパスワードなしの認証で機能しなくなりました

Fedora 23にアップグレードした後、SSHでパスワード不要(公開鍵ベース)の認証は機能しなくなりました。あるホストにSSHで接続しようとすると、リモートホストで私のパスワードの入力を促します。 SSH秘密鍵を使うことができません。 Fedora 22ではすべてうまくいった。

私の公開鍵はDSA鍵(~/.ssh/id_dsa.pub)です。私はOpenSSH 7.1(openssh-7.1p1-5.fc23.x86_64)を使っています。

パスワードなしの認証を再度正しく機能させるにはどうすればよいですか。

25
D.W.

これはOpenSSH 7.0へのアップグレードの結果です。 OpenSSH 7.0の リリースノートに と書かれているように、「ssh-dssホストとユーザーキーのサポートは実行時にデフォルトで無効になっています」。

解決策は、すべてのクライアントマシン(SSHクライアントを実行しているすべてのマシン)の~/.ssh/configに次の行を追加することです。

PubkeyAcceptedKeyTypes=+ssh-dss

サーバーがOpenSSH 7.0以降を使用している場合は、各サーバーマシンの/etc/ssh/sshd_configを追加する必要があります。

あるいは、まったく新しいSSHキーを生成して、これをログインしたいすべてのサーバーのauthorized_keysファイルに追加することもできます。 互換性の問題を避けるために、RSA を使用することをお勧めします。どうやら gnome-keyring-daemonは自動的に ECDSAタイプのSSH鍵を拾い上げないので、私はECDSAをお勧めしません。


社説:OpenSSHの人々はなぜDSAキーを無効にしたのですか?知りません。確認できる範囲では、DSAキーのセキュリティに問題はありません(ssh-dss)。 OpenSSH Webページ はssh-dssは弱いと主張していますが、私の知る限りでは1024ビットのssh-dssは1024よりも弱いものではありません。ビットRSAキー、および1024ビットRSAキーは無効になりません。

39
D.W.

私の2セント

これを許可するために.ssh/configファイルを編集することはそれほど良くないという考えのようですが、私はお勧めします

  1. 最近のツールを使用して、新しいキーを作成してください。

    それから新しい公開鍵を(クリップボードに)コピーします。

  2. 古いキーを使用して最後にログに記録します

    ssh -i .ssh/id_dsa.pub -o PubkeyAcceptedKeyTypes=+ssh-dss user@Host
    

    次に、新しいpubkeyを追加してログアウトし、@Hostauthorized_keysファイルをアップグレードします。

    cat >>.ssh/authorized_keys
    

    pasteそれから Ctrl+D

  3. デフォルトの構文を使用して新しいキーでログインします。

    ssh user@Host
    
    1. それから@Hostauthorized_keysファイルを削除 you old pubkeyでアップグレードします(私の古いpubkeyがこのファイルのsed -e 1d -i .ssh/authorized_keys行にあるときは1を使います)。

    2. 可能であれば、SSHサーバをアップグレードすることをお勧めします。

    3. ログアウト
  4. 古い鍵が機能しなくなったかどうかをテストします。

    ssh -i .ssh/id_dsa.pub -o PubkeyAcceptedKeyTypes=+ssh-dss user@Host
    ...
    Permission denied...
    

    これは機能しないはずです;-)

  5. すべて問題ないかどうかを再確認することもできます。

    ssh user@Host uptime
    
0
F. Hauri