私は以前より、windowsからSSHを行うターミナルにTeraTermを利用しています。

しかし、このTeraTermにはダイナミックポート転送ができないという問題がありました。

そのため、ダイナミックポート転送が必要な時にはPuttyを使っていたのですが、いつの間にかアップデートで可能となっていることに気が付きました。

本記事では、TeraTermのマクロ(.ttl)ファイルを用いて、このダイナミックポート転送を行う方法をまとめます。

TeraTermによるダイナミックポート転送(SOCKS)

バージョン4.96より、TeraTermでもダイナミックポート転送が可能となったようです。

手動で設定するのであれば、ポート転送の項目より設定が可能となっていました。

マクロファイル(.ttl)による記述

次のTeraTermマクロファイルでは、公開鍵認証を用いて、指定のサーバーへsshログインを行うとともに、ダイナミックポート転送に1080番ポートを指定しています。

また、セキュリティの関係でパスワードは記述せずに手動で入力するようになっています。

; ssh login macro of TeraTerm with SOCKS
; File: sshlogin_socks.ttl
; Description: login with SSH2 and SOCKS (ver4.96>)
; Update: 2018/09/14
; Author: ksk

; settings
USER_NAME = 'xxx'
HOST_NAME = 'xxx.xxx.xxx.xxx'
KEY_FILE = 'xxx.ppk'
PORT = 'xxxx'

;-----------------------------------------------
; get macro directory
MACRO_DIR = ''
KEY_PATH = ''
getdir MACRO_DIR
strconcat KEY_PATH MACRO_DIR
strconcat KEY_PATH '\'
strconcat KEY_PATH KEY_FILE

msg = HOST_NAME
strconcat msg ':'
strconcat msg PORT
strconcat msg ' /ssh /2 /auth=publickey /ask4passwd /user='
strconcat msg USER_NAME
strconcat msg ' /keyfile='
strconcat msg KEY_PATH
strconcat msg ' /ssh-Dlocalhost:1080'

connect msg

end

結果と無視できそうな(?)エラー

上記の設定でsshログインとSOCKSによるアクセスが可能となりました。

ただ、私の環境ではssh2_msg_channel_open_failure open failedのエラーダイアログが頻繁に表示されるという問題が発生しました。

軽く調べはしましたが、この設定はsshdのサーバー側での設定で対処するようで、対象サーバー管理者に問い合わせてみないことには詳細は不明です。

とはいえ、エラーダイアログを無視してもSOCKS接続はできていたので、とりあえず暫定的なアクセスは可能です。

まとめ

  • TeraTermのアップデートによりダイナミックポート転送が可能に
  • マクロファイルで転送・ログイン設定を記述した
  • エラーが表示されるが、無視してもSOCKSの転送はできた