概要
遊び用でMacAirを使っているのですが、MacからサーバへSSH接続をするときにsshコマンド発行を毎回するの面倒だったので対話式でSSHのログインできるようにsh作ったから備忘録にのこす
スクリプトを作る前までの事前作業
SSHログイン用の鍵を作成する
鍵の作成とかオプションはコチラに記載しています。
SSHログイン予定のサーバでSSH鍵作成する
infrauserで作業実施してみる
$ ssh-keygen -t rsa -b 4096 -C "" -N "" -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
Your identification has been saved in /tmp/id_rsa.
Your public key has been saved in /tmp/id_rsa.pub.
The key fingerprint is:
SHA256:Ii4EEsX/9ql6tkkoNMAgAX17ePfM253cxo1u3G+AHP0
The key's randomart image is:
+---[RSA 4096]----+
|B=. |
|+.o . |
|+. o o . |
|.o + o . . . |
| + .+..S+ . o . |
| o o oo. + o . E|
| o o... . o + B.|
| o .o.o . . B B|
| .++o o.oo|
+----[SHA256]-----+
鍵ファイル確認
$ ls -l ~/.ssh/id_rsa*
-rw------- 1 infrauser infrauser 3243 2月 17 21:52 /tmp/id_rsa
-rw-r--r-- 1 infrauser infrauser 726 2月 17 21:52 /tmp/id_rsa.pub
公開鍵の名前変更
$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
作った「~/.ssh/authorized_keys」はログイン予定のサーバ全台のinfrauserの「~/.ssh/」に配置しておき同じ鍵で全部ログインできるようにする。
~/.ssh/id_rsaをMacにダウンロードしてきてSSHの時(Teraterm等)にid_rsaを秘密鍵を指定してSSHログインをするが、今回は「server-infrauser.rsa」の名前に変更して、Macの実行ユーザの「~/.ssh/server-infrauser.rsa」に配置しておく。
後ほどsshの鍵指定で利用する。
hostsファイル修正
下記のように名前解決できるようにする(今回はhostsファイル)
$ cat /etc/hosts
192.168.56.11 server001
192.168.56.12 server002
192.168.56.13 server003
192.168.56.14 server004
192.168.56.15 server005
ログインスクリプトサンプル
SSHログイン予定のサーバでSSH鍵作成する
server00XのX部分を$inputとしてサーバの番号と紐づける
auto-login.sh
-------------------------------------------------------------
#!/bin/bash
LOGIN_USER='infrauser'
SSH_PORT='22'
function ConfirmExecution() {
echo ""
echo "----------------------------"
echo " ログインサーバの番号を入力してください"
echo " 1 : server001"
echo " 2 : server002"
echo " 3 : server003"
echo " 4 : server004"
echo " 5 : server005"
echo " 99 : exit"
echo ""
echo -n " ログインサーバ番号 : "
read input
echo ""
if [ -z $input ] ; then
echo " ログインサーバの番号を入力してください"
ConfirmExecution
fi
case ${input} in
[1-5] )
LOGIN_SERVER=server00${input}
;;
99 )
exit 0
;;
* )
echo " ログインサーバの番号を入力してください"
ConfirmExecution
;;
esac
}
ConfirmExecution
expect -c "
set timeout 1
send \"ssh -i ~/.ssh/server-infrauser.rsa ${LOGIN_USER}@${LOGIN_SERVER} -p ${SSH_PORT} && exit\n\"
expect \" ~]$\"
send \"id ; uname -n\n\"
expect \" ~]$\"
send \"echo ' +++ Success Login +++'\n\"
interact
"
exit
-------------------------------------------------------------
スクリプト実行方法
$ sh auto-login.sh
※実行後、ログイン番号を入力すること
コメント