CygwinからSSHログインするためのシェル
あまりよろしくないことだが、Cygwinを使ってログインを省略するためのシェルを作ってみた。
具体的にはputclipというCygwinに用意されたクリップボードへコピーするための仕組みを使う。これでパスワードをクリップボードにコピーしといて、sloginコマンドを実行させておいて、パスワードを聞かれたらCtrl+Insertで貼り付けでログイン。パスワードをクリップボードに記憶してしまうので、セキュリティは低い。
Cygwinのhomeディレクトリにremoteというディレクトリを作ってみた。そこにconnect.shを作成した。内容は以下の通り。作成後はパーミッションに気をつけること!
#!/bin/bash cd `dirname $0` SERVER=$1 ACCOUNT_SET=$2 ACCOUNT_SET_LIST=./.account_list while read i; do FIELD1=`echo $i | cut -f1 -d' '` if test "$FIELD1" = "$ACCOUNT_SET" then USERNAME=`echo $i | cut -f2 -d' '` PASSWORD=`echo $i | cut -f3 -d' '` PORT=`echo $i | cut -f4 -d' '` break fi done < $ACCOUNT_SET_LIST if test "$PORT" = "" then PORT=22 fi echo $PASSWORD | putclip slogin -p $PORT $USERNAME@$SERVER
7行目の.account_listというファイルを作る。これはアカウントセット(名前)、ユーザー名、パスワード、ポート番号をスペース区切りで記述したテキストファイル。たとえばこんな感じ。
websvr1 webmaster webmaster_password 22 websvr2 webmaster 123456 dbsvr1 dbmaster abcdefg 1022
で実際はそれぞれのサーバー用のシェルを作成する。たとえば以下の内容のファイルをwebsvr1という名前で作っておく。作成後はパーミッションに気をつけておくこと!
cd `dirname $0` ./connect.sh websvr.yourdomain.com websvr2
ログインの際はこのシェルをたたくと、.account_listからアカウントセットを拾ってきて、sloginコマンドを作ってパスワードをクリップボードにコピーする。
だから使い方はこんな感じ。
# ./remote/websvr1
かなり説明を省略しているので、スクリプトはがんばって読んでね。