MacのターミナルからSSH鍵を使用したログインスクリプトつくってみた

Blog
スポンサーリンク

概要

遊び用で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

※実行後、ログイン番号を入力すること

BlogInfraMacOS
スポンサーリンク
インフラエンジニア|パイナップル星人 ブログ

コメント

タイトルとURLをコピーしました