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