テックブログ

SSHユーザー大量作成 1行スクリプト

Qです。
明けましておめでとうございます。
本年もよろしくお願いいたします。

 

状況に応じてコマンドラインで1行スクリプトを作っちゃうことが多いのですが、今回はSSHユーザーとかメールユーザーを大量に作成してくれ!
という依頼を受けたときの対応を紹介します。

SSHユーザーの作成に必要な情報はこんなモノかと思います。
・ユーザー名
・パスワード認証用パスワード
・公開鍵認証用パスフレーズ

SSHユーザーを作成する手順はこんな流れですかね。
・useradd でユーザー追加
・passwd でパスワード設定
・ssh-keygen で鍵ペア作成

ユーザー名だけが指定されているケースでは、パスワード/パスフレーズを生成しないといけません。orz

 

では、ユーザー名だけが指定されている体で、実際に作成してみます。

まずはユーザーリストを起こします。
サンプル事例なので、とりあえずユーザー数は3個で。

# cat user_list
ssh_user1
ssh_user2
ssh_user3

続いて20桁のランダム英数字を2個(パスワードとパスフレーズ)を生成して、ユーザーリストを再作成します。

# for X in `cat user_list`; do echo ${X} `pwgen 20 2`; done > user_list.pw
# cat user_list.pw
ssh_user1   OhR8roh3xaijai3paash   ahJaidio1aixe2kiWaoP
ssh_user2   mootoowienop4yae6Eph   yiey6EiFoa5iSh7ato8e
ssh_user3   AikahK3Ogh4uTeit3iep   ifie2Eghee3sohfi5eet

pwgen:
インストールしておくと何かと便利です。
CentOSなら yum install pwgen
Ubuntuなら sudo apt install pwgen

もちろん記号を含むパスワード/パスフレーズも生成できます。

# pwgen -ysBv 20 2
w\h’Ps7vq*$:k`F)psh)   ;}q*,&_W”\t%9{g=!dj7
r4!ksR4%>x;’^j7:dwc3   “~[$3HcK7k!r!m{`&4!s

 

それでは一気にユーザー作成します。コマンドライン1行です。

# cat user_list.pw | while read user passwd passphrase; do useradd ${user}; echo “${passwd}” | passwd –stdin ${user}; su – ${user} -c “yes ” | ssh-keygen -N ‘”${passphrase}”‘ >/dev/null; mv .ssh/id_rsa.pub .ssh/authorized_keys; chmod 600 .ssh/authorized_keys; cat .ssh/id_rsa; rm -f .ssh/id_rsa”; echo; done
ユーザー ssh_user1 のパスワードを変更。
passwd: すべての認証トークンが正しく更新できました。
—–BEGIN RSA PRIVATE KEY—–
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,B77614A66D777D922ABEDA6D0FA7298E

iEfFEg6vBD6RNZKEjOxUjRCEyOMsRYHvoNehRikbPb2swtOJjItLO2uCtHQFAS1P
NU3xYUdVmypT5owF70gdUgRczrxuL6Zv7YldFcIFIj55P9UcHzvuw5iI0DRVKAAz
z2mjG52nOBMWSp50RvKqY2jaCLgoegBy46XwX9b2cQ/Oau4Rte3VBGa3nEoqk8z8
~省 略~
9pBLz6ufpZ5wJgTYzrSpKqZD/aV+D6zwzLsN11SHnHnnIuHuf0ydR77pcOrhIZhV
iCbXpFm88JE5sga2ZXbLeKpURCiiRgtswfdgTQ2EhFSqF+fG2/c/uUYs20pYshDq
nHOty/UjyS0xdgDvju1A8kA6F+Tq8TwagkArIVqGwbdcHRXGG0JZgVvO4mkkY6wz
—–END RSA PRIVATE KEY—–

ユーザー ssh_user2 のパスワードを変更。
passwd: すべての認証トークンが正しく更新できました。
—–BEGIN RSA PRIVATE KEY—–
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,E6A26C61BB460D35BCE2AB5DC5E2DE98

LyumVxQbWHe4ONNALrsijrjrkDw13nSgYartrTCt2z26fDCuomBAy7+KZmq1J8YQ
z/eNEgHUwlq1Bgw+Rc+jeeZGWotVOD1tEqN4ecYkHvqIReWHwqxxoKDSFAqiCRRp
dgNtmFqgnrk/ZR6X1+L8R7jOf0OadZ0Yycedd5RefihbJwsWYAJo3FRw1u1F7SXM
~省 略~
Iq08z4PjTXdV0UoKeSfpCl2q30du7Z+KkubnSFTHtyyMXl4XS+ZG17ganB16vuYb
7TRNAjD+ZSzQtuvew5V31zjas0moX5WOpFuoBkT9KPCg/Up2mzWT53wKypW15riX
IAk8CxJR8KM7RnoiVSDS8si9rtjdpNher42eokwCG3I393UE11GR11h3Y7VrMz32
—–END RSA PRIVATE KEY—–

ユーザー ssh_user3 のパスワードを変更。
passwd: すべての認証トークンが正しく更新できました。
—–BEGIN RSA PRIVATE KEY—–
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,0325EE13B8E1EA3F1523996CB18E806E

/NGw82b0OqIaqe/PxSF7ZBhXbiQTQhfNhfRyKQk988fMQ3TSj9IHrZ3kVUJN36MD
LvNzG33D3gZsDqqhr2XULsHD6G5i/SaOS62v0ipfUiN0gsP5K6/dvBnK9QGEBEVT
hn8W9E+B/CSKdW/yKAAwtH+L/3OK+85cwBjrvCvLOYnGPBYDdFANLJlnMXXaZ7Bg
~省 略~
hpP/4eQvfa2L/eTw8QJxs435oIuav5p77uT/ycSVSivHbcLcO7czdwckTK6GipLy
iuXdD3Jn/+d/E8UKeJoloDGpDGTtqmNKeju6Unhij6AHdiNtZzm5a5SZG308ltU8
wwIG1yNJBYTx6tFxIJo6HwJSmHQC4DTUMFp94PO5BPEqpxrwHMKoDXDtNdV4ul25
—–END RSA PRIVATE KEY—–

最初に書いたユーザー作成手順をパイプで連結してwhileでループしてるだけですが。。。
ユーザー作成から公開鍵ファイルのリネーム、秘密鍵を表示して秘密鍵ファイルの削除までやってます。

この後、各ユーザーに秘密鍵ファイルを配布したら完了ですが、もしかしたらコレが一番厄介な作業かもしれませんね。

 

新社会人や新入生が押し寄せる春先などには重宝する1行スクリプトだと思います。

メールユーザーを作成したいときは少々短く、こんな感じでイケるはずです。

# cat user_list.pw | while read user passwd passphrase; do useradd ${user} -s /sbin/nologin; echo “${passwd}” | passwd –stdin ${user}; done

 

コピペは自由ですが、くれぐれも自己責任でお願いします。

それではまた。

この記事をシェアする

  • facebook
  • twitter
  • hatena
  • line
URLとタイトルをコピーする

実績数30,000件!
サーバーやネットワークなど
ITインフラのことならネットアシストへ、
お気軽にご相談ください