SSHユーザー大量作成 1行スクリプト
Qです。
明けましておめでとうございます。
本年もよろしくお願いいたします。
状況に応じてコマンドラインで1行スクリプトを作っちゃうことが多いのですが、今回はSSHユーザーとかメールユーザーを大量に作成してくれ!
という依頼を受けたときの対応を紹介します。
SSHユーザーの作成に必要な情報はこんなモノかと思います。
・ユーザー名
・パスワード認証用パスワード
・公開鍵認証用パスフレーズ
SSHユーザーを作成する手順はこんな流れですかね。
・useradd でユーザー追加
・passwd でパスワード設定
・ssh-keygen で鍵ペア作成
ユーザー名だけが指定されているケースでは、パスワード/パスフレーズを生成しないといけません。orz
では、ユーザー名だけが指定されている体で、実際に作成してみます。
まずはユーザーリストを起こします。
サンプル事例なので、とりあえずユーザー数は3個で。
ssh_user1
ssh_user2
ssh_user3
続いて20桁のランダム英数字を2個(パスワードとパスフレーズ)を生成して、ユーザーリストを再作成します。
# 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
もちろん記号を含むパスワード/パスフレーズも生成できます。
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行スクリプトだと思います。
メールユーザーを作成したいときは少々短く、こんな感じでイケるはずです。
コピペは自由ですが、くれぐれも自己責任でお願いします。
それではまた。