SynologyのDSM2段階認証でログインできなくてハマった
事象
DSMにログインできない?
突然SynologyのDSM(以下DSM)にログインできなくなりました。
ユーザ名とパスワードを入力し、ワンタイムパスワード入力画面で、
「認証コードが正しくありません。やり直してください。」
と言われるようになりました。
DSMの設定にて、2段階認証(DSMでいう2要素認証)を設定しており、
2段階認証の手段は「Google Authenticator」を使用していました。
また、時刻同期サーバ(以下NTPサーバ)は「ntp.nict.jp」で設定済みでした。
入力ミス・ワンタイムパスワードの有効期限かと思い、何度試してもログインできませんでした。
原因
時刻がずれていた
DSM側の時刻が遅れているのが原因でした。
DSM(パスワードを認証する側)と、スマホ(パスワードを発行する側)の時刻がずれていると
ワンタイムパスワードの有効期限等の影響で、絶対パスワードが合わなくなってしまいます。
対処
時刻を同期
SSHで接続することはできたため、SSHで接続し下記のコマンドを実行することで解決しました。
ntpdate -u ntp.nict.jp
内容的にはNTPサーバと時刻を同期するコマンドです。
ただし、あくまで私のNTPサーバが「ntp.nict.jp」で設定しているので、
もしNTPサーバを異なるサーバに設定している場合は、オプションを変更して実行ください。
DSMの時刻が遅れていたことが原因なので、NTPサーバと同期させ、
サーバ時刻をそろえることで、無事にDSMへログインできました。
何度も時刻がずれる
上記問題が起きたときは、これで解決したと思ったのですが、
それから時間がとても経ったわけではないのですが、また同じ事象が発生しました。
そのためなにかしら対処をしないといけないなと思いつつも、手動で同期させるのは手間です。
なので無理やりですが、自動的に同期するような設定を入れてみました。
ずっと時刻がずれないようにするには?
タスクスケジューラで、定期的に先ほどのNTPサーバ同期コマンドをたたき続けることです。
こうすることで、もう時刻がずれることはほとんどないはずです。
私のタスクスケジューラ(同期)の頻度は、毎日(24時間間隔)で同期しています。
さすがに1日で30秒以上はずれないでしょう・・・。
あまり無駄にNTPサーバに負荷かけるのも申し訳ないですし。
まとめ
SynologyのDSMにログインしたときに、2段階認証でハマった話でした。
DSMにログインしたときに毎回NTPサーバとの同期を手動でするのは面倒ですし、
なんせこういう事が起きるときって、だいたい久しぶりにログインするときとかですし。。。
久しぶりにログインしたときにこんなこと起きたら、わけわからなくなりますからね。
それを防ぐためには、定期的にNTPサーバと時刻同期しろって話でした。
以上、ここまで見ていただきありがとうございます。
皆さまの快適な開発ライフに、ほんの少しでもお役に立てれば幸いです。