̃Gg[͂ĂȃubN}[Nɒlj

Mac :: MacOSをバージョンアップして、DSA鍵でssh接続できなくなったときの対処



MacOS をバージョンアップして「High Sierra」にしたところ、ssh が軒並み接続できない
Σ( ̄Д ̄;)

% ssh hogehoge
foo@hogehoge: Permission denied (publickey,gssapi-with-mic).

ssh -v してデバックモードにしてみると下記で引っかかっている模様。

debug1: Skipping ssh-dss key /Users/hoge/.ssh/id_dsa - not in PubkeyAcceptedKeyTypes


調べてみると、MacOS「Sierra」から OpenSSH のバージョンが v7.x にアップしたらしく、
OpenSSH v7.x では DSA 鍵が無効になったようです。
よって「Sierra」以上かつ「DSA鍵」を使っている場合は、ssh 接続できなくなります。

とりあえずの回避策としては、~/.ssh/config に以下を記述すると大丈夫です。

Host *
    PubkeyAcceptedKeyTypes=+ssh-dss
  • 鍵「ssh-dss」での受け入れを+(追加)するという意味です。


また、理由があって Mac からの場合のみ「PubkeyAcceptedKeyTypes=+ssh-dss」を適用したい場合は、以下のように Match 構文が便利です。
※ Docker で ~/.ssh ディレクトリをマウントして利用した際、Linux と Mac で挙動を変えたい場合にこの設定を使いました。

Match exec "uname | grep Darwin"
    PubkeyAcceptedKeyTypes=+ssh-dss
  • uname コマンドを実行して返り値に Darwin( = Mac を意味する)が含まれている場合のみ適用する という指定です。


長年使っていたDSA鍵ですが、そろそろ再生成の時期のようです。
次の候補として、ECDSA 等が安全性が高いようです。





pc/mac/ssh_fail.txt