mac

 

パスワード有りsshの自動ログイン

macで開発していると、ターミナルでsshでサーバへログインする事が多いと思います。毎回パスワードを入力するのが面倒なので、シェルスクリプトでsshの自動ログインスクリプトを書いてみます。この記事のサンプルスクリプトで作業効率を高める事ができると思います。

新サイト、tree-mapsを公開しました!!

tree-maps: 地図のWEB TOOLの事ならtree-mapsにお任せ!

地図に関するWEB TOOL専門サイトです!!

大画面で大量の緯度経度を一気にプロット、ジオコーディング、DMS<->DEGの相互変換等ができます!

◯ 広告
#!/bin/sh

auto_ssh() {
host=$1
id=$2
pass=$3

expect -c "
set timeout 10
spawn ssh ${id}@${host}
expect \"Are you sure you want to continue connecting (yes/no)?\" {
    send \"yes\n\"
    expect \"${id}@${host}'s password:\"
    send \"${pass}\n\"
} \"${id}@${host}'s password:\" {
    send \"${pass}\n\"
}
interact
"
}

例えばこれを「auto_login.sh」というファイル名で保存しておきます。

#!/bin/sh

# 汎用自動sshスクリプトの読み込み
. auto_login.sh
# 自動をグインを実行
auto_ssh '192.168.11.1' 'username' 'password'

ssh_develop.sh、ssh_staging.sh 等を作っておくと、一瞬で各サーバにログインできて良い感じです。

私の場合はプロジェクト毎にフォルダを分け、develop環境・staging環境・product環境用のスクリプトを用意しています。

project/
├── lib
│   └── auto_login.sh ★ 汎用自動sshスクリプト
├── project-A
│   ├── ssh-develop.sh ★ 開発環境用sshスクリプト
│   ├── ssh-product.sh ★ 本番環境用sshスクリプト
│   └── ssh-staging.sh ★ ステージング環境用sshスクリプト
└── project-B
│   ├── ssh-develop.sh ★ 開発環境用sshスクリプト
│   ├── ssh-product.sh ★ 本番環境用sshスクリプト
│   └── ssh-staging.sh ★ ステージング環境用sshスクリプト

このようにsshスクリプトを作成しておくと、IP・ID・PASSを覚えなくてもよくなります!

更に、どのプロジェクトでも似たようなコマンドで簡単に各環境にsshできるというメリットもあります。

◯ 広告