HRR Co., Ltd.

技術的な記録を残していくことを目的としています。1次情報を大事にしています。

ssh-agentとTeratermマクロで自動でパスワード入力

はじめに

hrroct.hatenablog.com

こちら関連の記事です。

ssh-agent を使用しても、結局パスワードを一度は入力しないといけません。
それをも自動化してしまおうというのが、今回の内容です。

ssh-agent の自動化

ログイン時に一度だけ起動する.bash_profileに記載するのがよいかなと思います。

vim ~/.bash_profile

# ssh-agent
if [ -z "$SSH_AUTH_SOCK" ] ; then
  eval `ssh-agent -s`
    ssh-add
fi

そしてログアウト時に、きちんと後片付けを行います。

vim ~/.bash_logout

# ssh-agent
if [ -n "$SSH_AUTH_SOCK" ] ; then
  eval `/usr/bin/ssh-agent -k`
fi

これでターミナル起動時に、最初にsshのパスワードを聞かれることになります。 しかしこれも煩わしいので、Teratermマクロに仕込んでしまうことにしましょう。

パスワード入力の自動化

cygwin.ttl

PASSWORD_NAME='passwordName'
FILE_NAME='password'
;;;;;;;;;;

cygconnect

wait ':'
getpassword FILE_NAME PASSWORD_NAME password
sendln password

end

ttssh2.osdn.jp

上記getpasswordを使うことで、パスワードファイルのない初回はダイアログでパスワード入力を促されますが、2回目以降は保存したパスワードファイルから自動で読み込んでくれます。

PASSWORD_NAMEはパスワードとの紐付けに使うもので、何でもよいです。ユーザー名がわかりやすいかもしれません。
FILE_NAMEはパスワードが保存されるファイルで、この書き方だとマクロファイルと同じ場所に保存されます。 また、パスワードは平文ではなく暗号化されてます。

ファイルの中身はこんな感じ。******が暗号化されたパスワードです。

[Password]
passwordName=********

Cygwinを例にしましたが、このマクロを実行すると、sshのパスワード入力までやってくれます。

おわりに

暗号化しているとはいえ、ローカルにパスワードが記述されていることへのリスクもあると思います。
こういうやり方もできるというご紹介でした。

以上です。