☆☆ 新着記事 ☆☆

2018年12月18日火曜日

鍵認証でVPS (CentOS 7) に接続できるユーザを新規に作成する方法です。 PC用アカウントとスマホ用のアカウントを作成し、それぞれ、鍵認証で接続できるようにします。




【ユーザ・アカウントをサーバー側で作成】

・1. ユーザの追加
  $ useradd [ ユーザ名]
  $ passwd [ ユーザ名]

 * /home/[ ユーザ名]で、ユーザのディレクトリも作成される。

 [root@ home]# ls -xl
 total 0
 drwx------. 3 centos_user            centos_user            90 Dec 13 20:18 centos_user
 drwx------  3 centos_user_p          centos_user_p          90 Dec 19 12:56 centos_user_p
 drwx------  3 centos_user_m          centos_user_m          90 Dec 19 13:30 centos_user_m
 drwx------  2 centos_user_centos_p  centos_user_centos_p  59 Dec 19 12:12 centos_user_centos_p

 (ユーザの確認)
 cat /etc/passwd|sed -e 's/:.*//g' ← サービスもユーザとして表示されてしまう。
                       慣れないと見ずらいですね。
                       (自分くらいだと上のディレクトリで見た方が早いかも)

 (ユーザの削除)
 userdel -r [ ユーザ名]
 * -r は、ディレクトリも削除するオプション
 centos_user_centos_pは、間違えて作成したので削除する。

・2.パスワードでのアクセスを許可する
 ローカル側(PCやスマホ)で鍵のペアを生成しますが、公開鍵(サーバー側が持つ鍵)を
 暗号化された通信でサーバーに渡したいので、一時的にパスワード認証でアクセスできる
 ようにします。

 httpd ファイルの修正
 [root@ ~]# cd /etc/ssh
 (心配な人はコピーを作っておいて:#cp -piv sshd_config sshd_config.`date "+%Y%m%d"`)

 [root@ ~]#vi sshd_config
  # To disable tunneled clear text passwords, change to no here!
  #PasswordAuthentication yes  <- この行のコメント・アウトを修正します。
  #PermitEmptyPasswords no
  PasswordAuthentication yes

  ♯でコメント・アウトされているところをコピーして、#を消して yes に変更します。

  変更したらサービス再起動で設定変更反映。
  systemctl restart sshd.service

 これで、全ユーザに対して、パスワード認証によるSSH接続が可能になりました。


・3.sudo権限を付与する
 
 sudoersファイルを変更:

 etc/sudores のファイルを、visudo というエディット・コマンドを使って修正します。
   (visudoは、管理者権限でのみ操作できます。)

 sudoersは、大切なファイルなので、rootユーザでさえ vim などでの直接編集は出来ない
 とのこと。
 visudoの良いところは、保存の前に構文チェックをしてくれて、エラーがあると保存するかの
 確認を聞いてくることらしいです。 (確かに、何度か聞かれました。)


 やり方は、2つあるみたい。
 
  【方法1】
  予めsudoコマンドを利用できるグループ(CentOSの場合、wheelグループ、Debianの場合は、
   sudoグループ)に追加して、グループに付与された権限を実行できるようにする。

 #cat /etc/sudoers
  (初期設定)
   ## Allows people in group wheel to run all commands
  %wheel  ALL=(ALL)       ALL
  ## Same thing without a password
  # %wheel        ALL=(ALL)       NOPASSWD: ALL

 となっていますので、このwheelに新規ユーザを追加します。

 $ usermod -aG wheel centos_user
 確認は、centos_userでログインして、自分の所属グループを確認
 $groups
 centos_user wheel
 と表示されます。

 sudoコマンドを実行する時には、毎回、パスワードの入力が求められるので、
 これがいやなら
  ## Same thing without a password
  # %wheel        ALL=(ALL)       NOPASSWD: ALL
 のコメント・アウトを消します。

  【方法2】
 visudoでetc/sudoersを開いて、権限を付与する新規ユーザを個別に、以下の箇所に
 追加していきます。

 (初期設定)
 ## Allow root to run any commands anywhere
 root    ALL=(ALL)       ALL

 (追加設定)
  centos_user          ALL=(ALL) NOPASSWD: ALL
 centos_user _p    ALL=(ALL) NOPASSWD: ALL
 centos_user _m   ALL=(ALL) NOPASSWD: ALL
 
  *NOPASSWD:ALLで、パスワード入力を停止しています。

 記述を追加したら、:wq で、終了します。


=====PC用の追加ユーザで鍵認証でSSHアクセス=====


・4.公開鍵・秘密鍵をローカルで作成する(WinSCP)

(1)公開鍵・秘密鍵の作成

 
PC側にインストールしたWinSCPを起動させ、
下の「ツール」タブから、PuTTygenを実行します。

次にポップアップしてくる画面の下の方で、

Type of key generate :RSA
Number of bits in a generated key : 2048

になっている事を確認し、
「generate」ボタンをクリックします。




真ん中の赤枠がパスフレーズ(パスワード)入力欄ですから、ここに任意のPWを入力し、
右下の 'Save Private Key(秘密鍵保存)'を押します。

ファイル名は任意ですが、private_keyとしてtext保存します。(これは秘密鍵ですから、大切に保管してください。)

次に、同様に 'save Public Key'で保存します。

(上部の青で覆った部分が、公開鍵情報になりますので、ここをコピー・ペーストしても構いません。)

ファイル名は同じく任意ですが、ここではpublic_key.pub としておきます。(拡張子注意)

これでPuTTY key generator を終了します。

(2) サーバー側の設定
PC用に使いたいユーザを使って、PW認証でサーバーにSSHでアクセスします。
ここでは、centos_user _p  を使います。

アクセス先のhome/centos_user _p  ディレクトリー(useradd 実行時に自動で作成されている)で
以下のコマンドの実行

[root@ centos_user_p] $ mkdir .ssh
[root@ centos_user_p] $ chmod 700 .ssh
[root@ centos_user_p] $ touch .ssh/authorized_keys
[root@ centos_user_p] $ chmod 600  .ssh/authorized_keys

# ユーザ・ホーム・ディレクトリの確認
[centos_user_p@~]$ ls -l
total 4
-rw-rw-r-- 1 centos_user_p centos_user_p 477 Dec 19 21:52 public_key


# public_keyを.ssh ディレクトリ内に移動
[centos_user_p@ ~]$ mv public_key .ssh
[centos_user_p@ ~]$ ls -l
total 0
[centos_user_p@ ~]$ ls .ssh/ -l
total 4
-rw------- 1  centos_user_p centos_user_p  0 Dec 20 01:26 authorized_keys
-rw-rw-r-- 1 centos_user_p centos_user_p 477 Dec 19 21:52 public_key


♯public_keyの内容をauthorized_keysに追加コピー
[centos_user_p@ ~]$ cat .ssh/public_key >> .ssh/authorized_keys

♯authorized_keysに追加コピーされた内容の確認。
[centos_user_p@ ~]$ cat .ssh/authorized_keys
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20181219"
AAAAB3NzaC1yc2EAAAABJQAAAQEAr4dTQh

記載省略
+b9UQt68/v64YvGCvKrG860Y4dMJFc

==
---- END SSH2 PUBLIC KEY ----


これで、PC側とサーバー側に鍵が揃いました。
centos_user_pで、鍵認証でログインできることを確認します。





・5.公開鍵をサーバーに保管する

【モバイル・ユーザの作成】
・1. パソコン用のユーザを追加する

・2.パスワードでのアクセスを許可する

・3.sudo権限を付与する

・4.公開鍵・秘密鍵をローカルで作成する(WinSCP)

・5.公開鍵をサーバーに保管する

【Root Accountでのアクセスを禁止する】


etc/ssh/httpd_config no modify

0 件のコメント:

コメントを投稿