LoginSignup
7
4

More than 5 years have passed since last update.

sshログイン自動化4種

Last updated at Posted at 2018-06-26

MacだとTeraTermがないので、.ttlファイルを渡されても困る、、、
中を開けばログインユーザ/IPアドレス/パスワードは書かれてるけど、毎回sshコマンド打つのしんどい、、、
サードパーティーのソフトとかダウンロードしてくればいいんだろうけど、探すのめんどい、、、
自分でShellScript書こう、、、

基本Ver(パスワード認証方式)

base_pswd.sh
#!/bin/sh

USERNAME="hoge"
IPADRS="xxx.xxx.xxx.xxx"
PSWD="8MojiIjo!Random!"

expect -c "
    set timeout 5
    spawn ssh ${USERNAME}@${IPADRS}
    expect \"password:\"
    send \"${PSWD}\n\"
    interact
"

変数の値だけ書き換えてやれば使える超基本形。

基本Ver(公開鍵認証方式)

base_rsa.sh
#!/bin/sh

USERNAME="hoge"
IPADRS="xxx.xxx.xxx.xxx"
PSWD="8MojiIjo!Random!"
KEY_PATH="~/.ssh/xxxx_rsa"

expect -c "
    set timeout 5
    spawn ssh -i ${KEY_PATH} ${USERNAME}@${IPADRS}
    expect \"${KEY_PATH}\"
    send \"${PSWD}\n\"
    interact
"

公開鍵のパスを指定して、パスコードを入力させる基本形。

踏み台経由Ver

humihumi.sh
#!/bin/sh

USERNAME="hoge"
IPADRS="xxx.xxx.xxx.xxx"
PSWD="8MojiIjo!Random!"

HMDI_USERNAME="humidai_hoge"
HMDI_IPADRS="yyy.yyy.yyy.yyy"
HMDI_PSWD="8MojiIjo!Random!"

expect -c "
    set timeout 5
    spawn ssh -t ${HMDI_USERNAME}@${HMDI_IPADRS} \"ssh ${USERNAME}@${IPADRS}\"
    expect \"password:\"
    send \"${HMDI_PSWD}\n\"
    expect \"password:\"
    send \"${PSWD}\n\"
    interact
"

sshコマンドに-tオプションを付けてやると、2段階でsshが出来る。

応用Ver(引数次第で、踏み台にもその先にもいける)

humihumi_sonosaki.sh
#!/bin/sh

USERNAME="hoge"
IPADRS="xxx.xxx.xxx.xxx"
PSWD="8MojiIjo!Random!"

HMDI_USERNAME="humidai_hoge"
HMDI_IPADRS="yyy.yyy.yyy.yyy"
HMDI_PSWD="8MojiIjo!Random!"

case "$1" in
    humidai)
      expect -c "
          set timeout 5
          spawn ssh ${HMDI_USERNAME}@${HMDI_IPADRS}
          expect \"password:\"
          send \"${HMDI_PSWD}\n\"
          interact
      "
  ;;
    sonosaki)
      expect -c "
          set timeout 5
          spawn ssh -t ${HMDI_USERNAME}@${HMDI_IPADRS} \"ssh ${USERNAME}@${IPADRS}\"
          expect \"password:\"
          send \"${HMDI_PSWD}\n\"
          expect \"password:\"
          send \"${PSWD}\n\"
          interact
      "
  ;;
     *)
     echo "Usage: humihumi_sonosaki.sh {humidai|sonosaki}"
  ;;
esac

引数に応じて分岐させるパターン。
その先がWeb/App/Dbなど複数になっても、この辺だけ変えれば1ファイルで済む。

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4