実はすでに@tiibunさんがイケているプラグインを公開されていました。
- Vagrant Teraterm pluginを作ってみた - Qiita
本稿の小細工的なやり方よりもこちらの使用をお勧めます。
Vagrant マシンに入るにはvagrant ssh
コマンド一発で OK なはずだが、Windows ホスト環境では ssh コマンドがないというエラーになる。
使える ssh がないわけでもないのだが、ここは使い慣れた TeraTerm でログインしたい。SSH 接続情報は vagrant ssh-config
で取得できる。しかしそれをログイン時に毎回入力するのはダルすぎるというもの。
楽をするため、ログイン情報を埋め込んだショートカットを作ったり、VagrantにTeratermマクロで接続する方法がある。しかし仮想マシンを複数立ち上げるようになると、仮想マシンの起動順序によってポート番号が変わってくるので、もう決め打ちではいかない。
ここはやはり Vagrant に TeraTerm を起動させたい。
要は vagrant から ssh がキックできればいいのだから ssh.bat
あるいは ssh.cmd
という名前でバッチファイルを作成しておき、中で TeraTerm にパラメータを引き渡してやればイケるはずだ。
必要最小限のパラメータを拾うだけなら、以下のようなバッチスクリプトになるだろう。
@rem %*
@echo off
setlocal
if "%1"=="" exit
set TT_HOME=C:\Program Files (x86)\teraterm
set TT_OPTS=/KR=UTF8 /KT=UTF8 /DS
set userhost=%1
shift
:loop
if "%~1"=="-p" set port=%2
if "%~1"=="-i" set keyfile=%2
shift
if not "%~1"=="" goto loop
start "" "%TT_HOME%\ttermpro.exe" %userhost%:%port% /ssh2 /auth=publickey /keyfile=%keyfile% %TT_OPTS%
TT_HOME は自分の環境に合わせて修正してほしい。
PATH の通ったディレクトリにこのバッチを ssh.bat
という名前で保存し、おもむろに vagrant ssh
と叩けば、仮想マシンにログイン済みの状態で TeraTerm が開くはず。
おそらく他のターミナルソフト用にも同様のバッチが書けるだろう。
RLogin でもできたようです
- vagrant ssh で RLogin を起動する - Qiita
なぜか筆者の環境では、ログイン済みとは別に新規接続ウィンドウも余分に開いてしまう。
生成したコマンド行を単体で実行すれば問題ないのだが... Windowsに詳しくて原因がわかる方がいたら教えてほしい。とりあえず閉じればいいだけなので今は後回しとする。TT_OPTS に /DS を追加すれば、「新しい接続」ダイアログを表示させない分、閉じる手間が少し減らせる。
<ttdodaさんのご指摘によりスッキリ解消した。謝謝!
さて、このバッチファイルは置き場所に困る。こんな紛らわしい名前のバッチファイルをシステムにほっといたらいつか痛い目にあうことは目に見えている。
どうしたものか。
Vagrant でしか使わないということで、各 Vagrant ディレクトリ直下に置いておけばいいよう気がするが、vagrant はお行儀のいいことに Windows 環境でもカレントディレクトリを実行パスに含めない。
それなら Vagrantfile
でカレントディレクトリを PATH に追加すればよい。
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "front01"
# ...
end
ENV['PATH'] += ";" + Dir.pwd
これなら vagrant コマンド作業以外に影響しない。しかし、プロジェクトの Vagrantfile を開発環境の都合で汚すのもいかがなものかと。
それならホームの .vagrant.d
直下に移動し ssh.bat
とその PATH を追加するだけの Vagrantfile
を置くというのが次善策だ。
ENV['PATH'] += ";" + File.expand_path(File.dirname(__FILE__))
これでどの Vagrant マシンに対しても対応できる環境になる一方、ssh.bat
の存在自体を忘れてしまう可能性も高い。
参考
-
Tera Term Pro コマンドライン
http://ttssh2.sourceforge.jp/manual/ja/commandline/teraterm.html -
TTSSH command line
http://ttssh2.sourceforge.jp/manual/ja/commandline/ttssh.html