事象
TeraTerm 5.0 ~ 5.2 で getpassword
を使用すると、パスワードファイルのパスに日本語を含む場合はパスワードを読み込めない。
対応策
パスワードファイルの保存場所のパスに日本語を含まないようにする。
もしくは2024年3月17日に対応されているのでバージョン 5.3 からは本事象は起きないはず。
詳細
TeraTerm でパスワード認証の ssh 接続する際に毎回パスワード入力するのは面倒くさいのでマクロにしている。
その際、パスワードをベタ打ちするのは避けたかったので以下のように getpassword コマンドを利用している。
username = 'ユーザ名'
hostname = 'IPアドレス'
port = ポート番号
passwdfile = 'password.dat'
; password.dat からパスワードを読み込む
; 見つからなければ入力ボックスを開く
getpassword passwdfile username userpasswd
sprintf2 msg '%s:%d /ssh /auth=password' hostname port
sprintf2 msg '%s /user=%s /passwd=%s' msg username userpasswd
connect msg
これにより初回のみパスワードの入力が求められ、指定のファイルに暗号化した状態で保存される。
次回からはファイルから読み取られるのでパスワード入力は不要となり、パスワードファイルを開いても暗号化されているので平文で見えることが無くなる。
しかしこのマクロをバージョン 5.2 で動作させたところ、パスワードファイルが存在していてパスワードが保存されているにも関わらず毎回パスワードの入力が求められるようになってしまった。
原因
パスワードファイルが Unicode 対応しておらず、これによりパスに日本語を含む場合に正常に読み取れなくなっていたとのこと。
issue (解決済み):https://github.com/TeraTermProject/teraterm/issues/161
私の場合はマクロを C:\~略~\TeraTerm接続マクロ
配下に置いていたので不具合が発生した。
対応としては前述の通りパスから日本語を消せばよい。
もしくは上記 issue の対応が2024年3月17日時点でマージされているので、バージョン 5.3 からは解決しているはず。