LoginSignup
26
25

More than 5 years have passed since last update.

vagrant ssh で TeraTerm を起動する

Last updated at Posted at 2015-03-28

実はすでに@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 にパラメータを引き渡してやればイケるはずだ。

必要最小限のパラメータを拾うだけなら、以下のようなバッチスクリプトになるだろう。

ssh.bat
@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 に追加すればよい。

Vagrantfile
# -*- 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 を置くというのが次善策だ。

.vagrant.d/Vagrantfile
ENV['PATH'] += ";" + File.expand_path(File.dirname(__FILE__))

これでどの Vagrant マシンに対しても対応できる環境になる一方、ssh.bat の存在自体を忘れてしまう可能性も高い。

参考

26
25
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
25