sshを使ったリモートメンテナンス

#contents
-[[Sakura/VPS/SSH Reverse Tunnel]] - SSHとproxyの組み合わせでイントラネットの統合
-[[OpenBlockS/Debian#l5d605af]] - SSHを使った多段接続

#navi(Sakura)

**sshfs [#ae9a5541]
debian 4.0(etch)のPCで、Synaptic Package Manager を使って sshfs を入れて、
さくらのレンタル・サーバーを手元のPCにマウントすることで、好きなエディタや
ファイラを使って管理することができるようになる。

パッケージを入れた後は、
 sudo useradd otsuka fuse
 sudo gpasswd -a otsuka fuse
としてから、一旦ログアウトする。
id -nG コマンドを打って fuse グループが表示されたら使える。

fuseはユーザーモードでファイルシステムをマウントできるようにする仕組みである。
古いdebianのディストリビューションでは sudo /sbin/modprobe fuse をしないと使えない場合がある。

ssh rental-server.example.jp ls -l 等のコマンドで問題なければ、ユーザーモードで
 mkdir -p ~/mnt/rental-server
 sshfs rental-server.example.jp: ~/mnt/rental-server
とすれば、~/mnt/rental-server 以下のディレクトリに Sakura のサーバーのフォルダが見えるようになる。

マウントの解除は
 fusermount -u ~/mnt/rental-server
とする。

マウントしたまま HOME ディレクトリ下を rsync 等で別のサーバーにバックアップすると、sshfsでマウントした先までバックアップしてしまうので、先にマウントを解除しておく必要がある。

マウントしているかどうかは df コマンドで分かるが、同じサーバーで他のユーザーが実行する df コマンドには出てこない (df -a とすれば出る) 。
また、他のユーザーがマウント先をたどることは出来ない。

別サーバーで、自分のUIDやGIDの値が異なる場合に、sshfs でマウントするとファイルの所有者が別のユーザー名で表示されて気持ちが悪い。
 sshfs -o idmap=user rental-server.example.jp: ~/mnt/rental-server
とすれば、UIDだけは自分の名前で表示されるようになった。

**サーバー鍵の変更 [#vde0b681]
めったに起きないが、sshで接続したことのあるサーバーの鍵が変わってしまうと、
sshで接続できなくなる。そんなときは、~/.ssh/known_hosts にあるサーバーの
エントリを消せば良かったのだが、debian 4.0 になって known_hosts のホスト名や
IPアドレスの項目がハッシュになっていて、エディタなどでは探し出せなくなっている。
[[OpenSSH Manual Pages:http://www.openssh.com/manual.html]]のssh-keygen(1)にあるように、これを使ってホスト名を探し出して削除する必要がある。

known_hostsからホスト名 foo.example.jp を探す
 ssh-keygen -F foo.example.jp
known_hostsからホスト名 foo.example.jp のエントリを削除する
 ssh-keygen -R foo.example.jp

**VPSのデスクトップで家のNASにアクセスする [#kd1539bf]
[[Sakura/VPS]]で出先からでも同じデスクトップにアクセスできるようになると、
そこから家のNASにマウントしてファイルを読んだりできるようにしたくなる。

家のプロバイダ接続は固定IPではないのでそのままではsshで接続できない。
buffalonas.com 等のサービスを使えば、外からでもiPhone等からアクセスできるようになるようだが、
自前でやるのも面白いかもしれない。

お家サーバー(home-obss)のcronで毎時03分に適当なアドレスでVPSに対してアクセスする。

 $ cat <<EOD >~/bin/cron.dynaddr.sh
 > #/bin/sh
 > wget -q --spider http://(VPSのアドレス).sakura.ne.jp/dynaddr
 > EOD
 $ chmod u+x ~/bin/cron.dynaddr.sh
 $ crontab -e
 3 */1 * * *  /home/otsuka/bin/cron.dynaddr.sh

これを、VPS側で tail -F /var/log/httpd/access_log 等で監視すれば、
下記のようなログが1時間おきに残っているので、自宅のIPアドレスがわかる。
 "HEAD /dynaddr HTTP/1.0" 404 - "-" "Wget/1.10.2"

自宅のルーターはVPSのIPアドレスだけからsshでアクセスできるように設定する。
アドレス制限をかけないと総当り攻撃をうけるので注意。

自宅のアドレスが分かったら、~/.ssh/config に HostName として書いておく。
 $ vi ~/.ssh/config
 Host home-obss
   HostName (自宅のIPアドレス)

マウントするための接続スクリプトを設定
 $ cat <<EOD >~/bin/connect-nas.sh
 > #!/bin/sh
 > sudo /sbin/ifconfig lo:0 192.168.11.10/24
 > sudo -E ssh home-obss -F $HOME/.ssh/config -l otsuka -D 1080 \
 > -L 192.168.11.10:139:(自宅NASのローカルIPアドレス):139
 > sudo /sbin/ifconfig lo:0 down
 > EOD
 $ chmod u+x ~/bin/connect-nas.sh

マウントするときは、VPSの一般ユーザーから connect-nas.sh を実行すれば、
自宅に接続できるので、この状態でGNOMEのファイル・ブラウザで Windows Share の
192.168.11.10 に接続すれば自宅のNASにアクセスできる。

GNOMEのファイルブラウザ(Nautilus)の標準設定では、ネットワーク上のファイルのサムネールは
作らないようになっている。設定を変更すればNASのフォルダに入った写真をサムネールで
探すこともできる。サムネールの作成はかなり時間がかかるが次回からは ~/.thumbnails 以下に
保存されているキャッシュを使うので高速だ。定期的に ~/.thumbnails を掃除する必要がある。

connect-nas.shで接続している状態で、GNOMEデスクトップのネットワークProxyの設定で
 Manual proxy configuration
 Socks host: localhost
 Port: 1080
に切り替えて、Firefox等で自宅のローカルIPを開くことができる。

戻すときは、Direct internet connection に切り替えて connect-nas.sh の接続を
logoutする。このときなぜかハングアップしてしまうので、Ctrl+Cで止める必要がある。

お家サーバーがSSHとSMBの中継をするので、スピードはあまり出ない。
自宅のIPアドレスが変わった場合、~/.ssh/config を修正する必要がある。自動化できないものか。

**リンク [#j9734feb]
-[[SSHツールを使ってリモート・ネットワーク・サービスにアクセスする - SourceForge.JP Magazine:http://sourceforge.jp/magazine/08/11/13/0110201]]

----
#include(免責事項)

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS