Geecul

Geekに踊ってカルチャーと寝る

Ubuntuサーバー間でrootユーザーによる公開鍵認証(DSA)しようとして詰まったので備忘録

はじめに

ubuntuサーバー間で公開鍵認証をできるようにしたいということ、

鍵交換とかSSH周りの知識ぼんやりしていると感じたので、

知識の整理兼ねて鍵交換しようとしたら詰まったので記録。

目的

下記の環境で、rootで公開鍵認証接続(DSA)できるようにする。

rootの理由:自宅の仮想環境上の学習用サーバーなのでセキュリティより利便性を向上させる DSAの理由:特別意味はない。RSAがデファクトスタンダードなので、あえてのじゃないやつ。

環境

root@ubuntu1:~# uname -n
ubuntu1
root@ubuntu1:~#
root@ubuntu1:~# cat /etc/os-release | grep VERSION=
VERSION="18.04.3 LTS (Bionic Beaver)"
root@ubuntu1:~#
root@ubuntu1:~# ssh -V
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
root@ubuntu1:~#

教訓(詰まったところ)

  • rootでのsshログインを有効にするには、/etc/ssh/sshd_configの設定項目、
    PermitRootLogin をyes に設定すること。
PermitRootLogin yes
  • 鍵交換のためにrootでパスワード認証によるログインをしたい場合、 Ubuntuではrootに初期パスワードが設定されていないので設定すること。
    ※/etc/shadowファイルのrootユーザーのコロンで区切られた2カラム目が*なことから
    パスワードが設定されていないことが確認できる
root@ubuntu1:~# grep root /etc/shadow
root:*:18113:0:99999:7:::
  • DSAは標準だと無効になっているため/etc/ssh/sshd_configに下記を追記して有効化すること。 ※ファイル編集したらsshdサービスを再起動する。
PubkeyAcceptedKeyTypes=+ssh-dss

感想

おとなしく一般ユーザーでRSAを採用していれば詰まらなかった内容でした。

でもせっかくの自宅学習なのでいつもと同じような環境、やり方じゃなくて、

色々な違ったやり方して試すと知識の整理になるし経験が積めていいなと思った。

2019/01/10追記

さっそくですが、追記です。

rootで公開鍵認証接続できるようになったら、

sshd_configのPermitRootLogin設定値はwithout-passwordかprohibit-passwordを設定しておきましょう。

rootでパスワード認証ができなくなり、公開鍵認証での接続のみできるようになります。

セキュリティ観点だとrootで直接ログインできる状況はまずいので。
(万が一パスワード漏えいしたら誰でもログインできちゃう!ヤバい!)。

PermitRootLogin without-password
PermitRootLogin prohibit-password

調べる&検証してみたところ without-password = prohibit-passwordのようです。

なんかwithout-passwordは非推奨エイリアスってことらしいですね。 man.openbsd.org

どっちを設定してもちゃんと有効に機能したので

prohibit-passwordを設定するといいと思います
(個人的にはwithout-passwordの方が分かりやすくて好きですが)

※twitterでPermitRootLoginの設定についておススメして頂きました。ありがとうございます。

リンク

security.stackexchange.com

www.openssh.com

man.openbsd.org

www.unixuser.org