Edited at

sshログイン自動化4種

More than 1 year has passed since last update.

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ファイルで済む。