私がMacOS X Snow Leopard からLionにバージョンアップしたのが
7月21日でした、何よりバージョンアップしてよかったと思ったのが
openssh のバージョンアップです
Snow Leopardでは途中のサーバでnetcat もしくは同等のプログラム
を動作させないと、直接接続できないサーバに対してsftp / scp /rsync
でファイル転送することが不便でした
(もちろん多重の ssh 転送という手もありますけど)
OpenSSH 5.4バージョンからは -W オプション=’netcat mode’
が増えてます。Lionでは5.6バージョンなので増えてるわけです。
どのような場合に使うのか?
直接インターネットに出ていけない環境で、インターネットに接続できる
サーバ上にアカウントがあり、別なインターネット上のサーバに接続する
反対にインターネットから隔離したデータベースサーバに、インターネッ
トに公開しているサーバを経由して接続する。
などです
インターネットから隔離されたLinuxマシンから、インターネットに接続して
いるLinuxサーバを経由して、インターネット上のLinuxサーバに接続する例
例
隔離されたLinuxをAマシン
インターネットに接続したLinuxをBマシン
ssh ポートは 22 (標準ポート)
インターネット上のLinuxをCマシン
ssh ポートは 22 (標準ポート)
とします
ssh -o “ProxyCommand ssh -W %h:%p Bマシン” Cマシン
とすることで 接続できるわけです
とここまでで ssh Bマシンで接続して ssh Cマシン
と同じことじゃない?と思いますよね
しかし、 scp / sftp / rsyncになると話が変わってきます
これがほぼ直接接続できるのと同じ感覚で接続できるので
途中のBマシンに一旦ファイルを置いて接続するという必要
がなくなるわけです
さらに~/.ssh/config に記載してしまえば、ほぼ直接接続
するのと同じ感覚になります。
(ただし Bマシンへのパスフレーズ・パスワード Cマシン
へのパスフレーズ・パスワードの2回聞かれるという形に
なりますので、省略する意味でもBマシンに公開キーを登録
し、ssh-agent を使って予めキー認証をパスするような工夫
をするとさらに便利です)
~/.ssh/config への記載はこんな感じ
Host Cマシン
User Cマシンのアカウント名
ProxyCommand ssh -W %h:%p Bマシン
とすれば良いのです
それぞれのマシンにプライベートアドレスをつけてみてみましょう
Aマシン 192.168.1.2
Bマシン 192.168.1.100 アカウント名 hoge
Cマシン 172.16.1.1 アカウント名 example
とした場合
.ssh/config には
Host 172.16.1.1
User example
ProxyCommand ssh -W %h:%p hoge@192.168.1.100
と書いておけば
Aマシンからは ssh 172.16.1.1 とコマンドを打てば
Cマシンに接続できます。
sftp は sftp 172.16.1.1 などとかけるのでとても
楽です
でも もう一工夫 自分なりにマシン名を付けたい
ということがあります。
通常は /etc/hosts や dns名で解決させるのですが
.ssh/config のみで解決しちゃうことができます
Cマシンをc-machine と名付けたい場合
Host c-machine
HostName 172.16.1.1
User example
ProxyCommand ssh -W %h:%p hoge@192.168.1.100
と書いて置くと ssh c-machine で接続できることに
なります。
私にとっては これでとても便利になったと思うわけですけど…
MacOS X 10.6 Snow Leopard では -Wの代わりに nc (netcat)
を使ってました
Host c-machine
HostName 172.16.1.1
User example
ProxyCommand ssh hoge@192.168.1.100 nc %h %p
といった感じです。この形式ですと nc がプロセスとして
残ってしまうなどの弊害があってあまり好きではないのです
ncでも-wでタイムアウトを設定するなど逃げ道はあるのです
が…
Windowsでは、最近 PuTTY が 0.61 になり、Windows7 でタスクバー
表示が便利になったなぁーと思ったのですが、日本語バージョンどっか
にないかなと思ったら、やはり作成してくださってる方いらっしゃいま
した。
google検索で iceiv+putty で探してみてください。
PuTTY でこの-Wに対応するオプションが出来れば最高ですが、
現状は netcat を使う形で設定するしかないようです。
もしWindowsでこの netcatモードを使いたいということですと
残された道は cygwinという手があります。
コマンドプロンプトでの作業になり、これも… という場合は
TeraTermのcygwinモードを使っちゃうという手もあります。
ST
–無駄話 はじめ–
北海道と本州で 「番茶」が違うものだと 初めて知りました。
今日たまたま 運転中に流れてたTVで
本州では番茶=緑のお茶
北海道で番茶=本州でのほうじ茶
ということで、いままで私が言ってきた「番茶」はほうじ茶だったと
いうことです。
昔 蝦夷地まで お茶を運んでいる間に 赤茶けたなんて解説が…
–無駄話 おわり–