ここ最近、私を悩ます Mac OS X での困り事。
(1) Terminal から ssh でログインしてもしばらくすると切れちゃう。
(2) sshfs を使ってると同様に接続が切れるんだけど、
そのときうっかり Finder で変なところをいじると
OS が固まっちゃう[2008-01-27-1]。
どうしたものかなあ、と思ってたらこんなページを発見!
- keep-alive for ssh
ttp://www.geocities.co.jp/AnimeComic/1098/documents/unixmemo/\
ssh-keepalive.html
http://hnw.jp/documents/unixmemo/ssh-keepalive.html
(追記080228: 新URLを教えて頂きました。感謝!)
これを読んで、
プロトコルが SSH2 のサーバ (例えば、*.sakura.ne.jp) は
config ファイルに下記の設定をして対処。
プロトコルが SSH1 のサーバについては上記の方法ではダメ。
ssh に Heartbeat パッチをあてて、config ファイルに
「KoshigoeBLOG: OSXのsshにheartbeatパッチ当てて入れ直した」
(http://blog.koshigoe.jp/archives/2006/12/osxsshheartbeat.html)
の手順にそってインストール。
今までのは /usr/bin/ 以下に。
あと、スマートじゃないけど、ログイン先で下記を実行する手もあるそうな。
さて、sshfs についてだけど、あまり情報がないので、とりあえずの対処。
こういうスクリプト (keepalive.sh) を書いて、
どうやら MacFUSE+sshfs では機能しないようで断念。
追記080227: 上記でいろいろと説明してきましたが、
Mac OS X (my MacBook) の ssh (OpenSSH_4.5p1) ならば、
実は ~/.ssh/config に以下を足すだけで良いとの話も!
- ADSLのルータ越えしてSSH接続していると切れてしまう問題
http://masaru.org/diary/20070115.html#p03
(1) Terminal から ssh でログインしてもしばらくすると切れちゃう。
(2) sshfs を使ってると同様に接続が切れるんだけど、
そのときうっかり Finder で変なところをいじると
OS が固まっちゃう[2008-01-27-1]。
どうしたものかなあ、と思ってたらこんなページを発見!
- keep-alive for ssh
http://hnw.jp/documents/unixmemo/ssh-keepalive.html
(追記080228: 新URLを教えて頂きました。感謝!)
これを読んで、
プロトコルが SSH2 のサーバ (例えば、*.sakura.ne.jp) は
config ファイルに下記の設定をして対処。
ログインはこんな感じ:ClientAliveInterval 15 ClientAliveCountMax 3
slogin FOO.sakura.ne.jp -l FOO -2 -i ~/.ssh/config-ssh2
プロトコルが SSH1 のサーバについては上記の方法ではダメ。
ssh に Heartbeat パッチをあてて、config ファイルに
と書くのがいいらしい(SSH2 のときも足すべし)。というわけで、Heartbeat 300
「KoshigoeBLOG: OSXのsshにheartbeatパッチ当てて入れ直した」
(http://blog.koshigoe.jp/archives/2006/12/osxsshheartbeat.html)
の手順にそってインストール。
実行バイナリは /usr/local/bin/ 以下に入ります。curl -O http://www.openssl.org/source/openssl-0.9.7l.tar.gz tar xvzf openssl-0.9.7l.tar.gz cd openssl-0.9.7l ./config make make test sudo make install cd ../ curl -O ftp://ftp.iij.ad.jp/pub/OpenBSD/OpenSSH/portable/openssh-4.5p1.tar.gz tar xvzf openssh-4.5p1.tar.gz curl -O http://www.sc.isc.tohoku.ac.jp/~hgot/sources/openssh-4.4p1-watchdog.patch.tgz tar xvzf openssh-4.4p1-watchdog.patch.tgz cd openssh-4.5p1 patch -p0 < ../openssh-4.4p1-watchdog.patch ./configure --with-ssl-dir=/usr/local/ssl make sudo make install
今までのは /usr/bin/ 以下に。
あと、スマートじゃないけど、ログイン先で下記を実行する手もあるそうな。
ping -i 300 localhost &
さて、sshfs についてだけど、あまり情報がないので、とりあえずの対処。
こういうスクリプト (keepalive.sh) を書いて、
こんな感じでローカル側で実行:#!/bin/sh while [ 1 ] do touch $1 sleep 60 done
最初は「tail -f」を使おうかと思っていたのですが、keepalive.sh /Volume/remote_host/a.txt &
どうやら MacFUSE+sshfs では機能しないようで断念。
追記080227: 上記でいろいろと説明してきましたが、
Mac OS X (my MacBook) の ssh (OpenSSH_4.5p1) ならば、
実は ~/.ssh/config に以下を足すだけで良いとの話も!
ServerAliveInterval 60情報ありがとうございました!
- ADSLのルータ越えしてSSH接続していると切れてしまう問題
http://masaru.org/diary/20070115.html#p03