この記事はWeb開発をするまでの一部です
セキュリティの観点からrootユーザでのログインを禁止して、作業ユーザでのログインを可能にします。
ログインの方法はパスワードでの認証ではなく、鍵認証にします。
鍵の作成
公開鍵と秘密鍵を配置するディレクトリを作成する。
ローカル側で作成して公開鍵をサーバ側に配置するか
サーバ側で作成して、秘密鍵をローカルに持ってくる。
今回は後者の方法を記載
作業ユーザになって作業します。
出力先のディレクトリを作成し、自分だけが見れる権限設定をします。
su - hoge
mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen
これで鍵の配置先とパスフレーズを聞かれます。
配置先は何も入れずEnterキーでデフォルトになります。
パスフレーズは2回入力する必要があります。
正常に完了すると、~/.sshに鍵が作成されます。
cd ~/.ssh
ls -l
id_rsaという名前の秘密鍵と
id_rsa.pubという名前の公開鍵があるはずです。
秘密鍵はきちんと管理して、誰からもアクセスできない場所に保管しましょう。
イメージとしては秘密鍵が鍵で、公開鍵は鍵穴です。
次に公開鍵をセットします。
cd ~/.ssh
mv id_rsa.pub authorized_keys
次は、秘密鍵をローカルに運びます
macやlinuxを使ってる人はターミナルで以下を実施して下さい
ユーザー名やサーバのアドレスは適当な値に変更して下さい
scp hoge@192.168.1.50:.ssh/id_rsa ~/.ssh/server_secret_key
Windowsの場合は、WinSCP等をインストールして運ぶのが楽です。
Windowsでputtyの場合は秘密鍵をputty形式に変換する必要があります。
putty-genというツールがあるので、変換して下さい。
それぞれ、サーバにputtyやterminalでログインできるか確認して下さい。
terminalの場合は以下
ssh -i .ssh/server_secret_key hoge@192.168.1.50
puttyの場合は、変換後のppkファイルを利用して下さい
rootユーザでのログインとpassword認証でのログインを許可しない
セキュリティの観点から機能を停止します。
sudo vi /etc/ssh/sshd_config
50行目付近のPermitRootLoginの設定の下に新規に追加する
#PermitRootLogin yes
+PermitRootLogin no
#StrictModes yes
最初の+は追加するという意味なので、設定ファイル自体には
PermitRootLogin no
だけを追記すればよいです。
次はパスワードによる認証を不許可にします。
80行目付近に追記します。
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
+PasswordAuthentication no
次に設定ファイルの内容が文法的に間違っていないかチェックします。
設定が間違った状態で再起動を実施するとログインできなくなる可能性があります。
sudo sshd -t
何もエラーメッセージが出力されなければ問題ありません。
サービスを再起動して設定を反映させます
sudo systemctl restart sshd.service
これで、rootユーザで直接ssh出来ない事と、パスワードでのログインが出来ない事を確認しましょう。