2011.09.22
ST

MacOS X Lionで使うOpenSSH (ちょっとだけWindows)

私が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で

本州では番茶=緑のお茶
北海道で番茶=本州でのほうじ茶
ということで、いままで私が言ってきた「番茶」はほうじ茶だったと
いうことです。

昔 蝦夷地まで お茶を運んでいる間に 赤茶けたなんて解説が…
–無駄話 おわり–

一覧に戻る