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(免責事項)