はじめに
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の設定についておススメして頂きました。ありがとうございます。