centOSでsudo権限を持つuserを追加してssh鍵を設定する

最近は、awsばかりで全くユーザー設定しなかったのが、久々VPS立てて大変だったので忘備録。
ansibleであっさりできるのかなー

環境

ローカル OS X EL Capitan
サーバー CentOS release 6.8

sudo権限を持つuserの作成

$ sudo su -
# useradd myuser
# passwd myuser
Changing password for user myuser.
New password: {何かパスワード}
Retype new password: {もう一度パスワード}

ユーザーが追加されました。
確認する。

# cat /etc/passwd
...(略)...
myuser:x:500:500::/home/myuser:/bin/bash

次に sudo 権限をつけます。

# visudo
## Allows people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL
 %myuser  ALL=(ALL)       ALL

確認で作成したuserでログインし、sudo su -します。

ssh鍵作成と設定

ssh鍵作成

次にローカルで、このユーザーにssh鍵を設定します。

# 鍵を作成
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/localuser/.ssh/id_rsa):# 鍵の場所とファイル名を指定したければ指定。していない場合はそのままEnter
Enter passphrase (empty for no passphrase):# パスワード指定しないのでそのままEnter
Enter same passphrase again:# そのままEnter
Your identification has been saved in /home/localuser/.ssh/id_rsa.
Your public key has been saved in /home/localuser/.ssh/id_rsa.pub.
The key fingerprint is:
46:ed:38:4d:ae:2c:2d:ba:64:55:d9:87:ce:48:2b:77 localuser@hostname
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|         .       |
|        . d      |
|       . @       |
|       o.o       |
|       S o       |
|      o..-       |
|     o.=Ca.      |
|     .B@+..      |
+-----------------+

※ fingerprintとrandomartは適当に書き換えてます。
-Cオプションでコメントも付けられます。
githubなどでは、メールアドレスでユーザーを判別するらしいから、つけておくとわかりやすい。つけておくと、公開鍵の最後に以下のような形でコメントが付いてきます。

$ ssh-keygen -t rsa -C "myuserだよ"
...(略) ...
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAA...(略) ...AAAA myuserだよ

日本語を使ってちゃんと動くのかは不明。

ssh鍵の設定

公開鍵をサーバーに設定します。

まずは、ローカルで作成した公開鍵をコピーしときます。
クリップボードにコピーってコマンドもありますが、なぜか私は普通にコピペしています。

$ cat ~/.ssh/id_rsa.pub
AAAA...(略)...AAAA

表示された内容をCtrl + C

次はサーバー側で作業。

$ cd
$ mkdir .ssh # homeに.sshディレクトリがない場合のみ
$ chmod 700 .ssh
$ cd .ssh
$ vim authorized_keys # 最後に追記。ファイルがなければ新規作成して書き込む。
$ chmod 600 authorized_keys

これで、ロカールから秘密鍵を指定してsshできればOK。

ssh -i ~/.ssh/id_rsa myuser@123.456.678.111

sshconfigの設定

毎回鍵ファイルを指定しながらsshするのはしんどいので、sshconfigに追記、ない場合は作成しておきます。

vim ~/.ssh/config
Host myserver
  HostName 123.456.789.111
  IdentityFile ~/.ssh/id_rsa
  User myuser
  TCPKeepAlive yes
  IdentitiesOnly yes

次のようにHost名を指定するだけでログインできるようになります。

ssh myserver

rootログイン、パスワードログインの禁止

次にrootでのログインを禁止します。
念のため、もう一度作成したユーザーでログインして、sudoができるか確認しておきます。
できないとサーバーのOS再インストールになります。

鍵認証を有効にする

vim /etc/ssh/sshd_config
 47 #RSAAuthentication yes
 48 #PubkeyAuthentication yes
 49 #AuthorizedKeysFile      .ssh/authorized_keys

以上のコメントアウトを外して有効化します。(#を削除)
なんかコメントアウトしなくても鍵でログインできたんですけど・・・、そのうち深掘りしたい。

rootログインを禁止する。

PermitRootLoginのコメントを外し、yesnoに書き換えます。

#PermitRootLogin yes

PermitRootLogin no

パスワードを使用してのログインを禁止する

PasswordAuthenticationのコメントを外し、yesnoに書き換えます。

#PasswordAuthentication yes

PasswordAuthentication no

sshdの再起動

そしてsshdを再起動するわけですが、どんな人にもうっかりがあるわけでうっかりログインできなくなっても問題ないように、別のterminalなどで先にrootユーザでログインしておきます。

ドキドキしながらsshdを再起動します。


# 念のためシンタックスチェック
# /usr/sbin/sshd -t
(文法に問題なければ何も表示されない)
# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

再起動が終わったら、作成したユーザーでsshを試みます。

ssh myserver

入れたら、sudoできるか今一度確認します。

次に、rootと、作成したユーザーでパスワードログインできるか試します。

パスワードログインができなかったら、設定は完了です。

※ パスワードの要求もなしにログインできてしまう場合…もしや鍵をssh-agentに設定してたりしませんか?

rootで入ったターミナルは閉じて大丈夫。

ようやく作業完了です!

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク