rsyncでバックアップ

rsyncを使うと簡単に差分バックアップを取ることができます。コンピュータが2台必要ですが。

私はこんな感じでバックアップを取っています。

rsync -atuv --exclude=".*" /Users/クライアントのユーザ名/backup/ user@hostname:/Users/サーバのユーザ名/backup

これでクライアントのコンピュータ上のbackupディレクトリ配下のファイルをサーバのbackupフォルダに転送できます。

オプションについて

-aオプションをつけているので、-tオプションはいらないはずですが、-aだけだとタイムスタンプがコピーされていなかった気がします。

--exclude=".*"で隠しファイルを除外しています。

-nオプションを付けるとテストできるので、初めて実行する際は試した方が良いかと思います。

外出先からssh接続する

外出先からsshサーバに接続したいですよね。
そのためにはグローバルIPアドレスを取得して、ルータの設定もしないといけません。

グローバルIPアドレスを知る

外からではMacの設定画面で見えていたIPアドレスを使ってアクセスはできません。このIPアドレスはローカルIPアドレスといって、家の中でしか使えないIPアドレスです。

まずはグローバルIPアドレスを知る必要があります。下記サイトで簡単に調べられます。

https://www.cman.jp/network/support/go_access.cgi

もしかしたら、グローバルIPアドレスが割り振られていないかもしれません。そのときはプロバイダにお問い合わせください。

ルータを設定する

グローバルIPアドレスがわかりましたが、これだけではまだ外からアクセスはできません。これはsshグローバルIPアドレスを指定しても、ルータにぶら下がっているどのコンピュータに接続を回せばよいかわからないためです。

そこでルータのポートマッピング設定を下記のように行います。
IPアドレスsshサーバのローカルIPアドレス
プロトコルTCP
ポート:22(もし変更していれば変更した番号)

これでssh接続の際にグローバルIPアドレスを指定すれば、とりあえずは外からのアクセスが可能となります。*1

ドメインを取得して、グローバルIPアドレスと結びつける

おそらくほとんどの方はグローバルIPアドレスが任意のタイミングで変化します。*2これでは困ってしまうので、ドメイン*3を取得して、ドメインで接続できるようにします。

まずはドメインを取得しましょう。

私はここでドメインを取得して運用していました。*4

http://ddo.jp/

wget -q -O - 'http://free.ddo.jp/dnsupdate.php?dn=ドメイン名&pw=パスワード' | iconv -f euc-jp -t utf-8 >> /root/log/ddns.log"

このコマンドでグローバルIPアドレスドメインを結びつけられます。また結びつける際に/root/log/ddns.logにログを吐き出すようにしています。

ただしこのコマンドを一度実行するだけではグローバルIPアドレスの変化に対応できません。そこでこのコマンドを定期的に実行して、グローバルIPアドレスの変化に備えます。

$ echo "wget -q -O - 'http://free.ddo.jp/dnsupdate.php?dn=imoto-yuya-1234&pw=Watashi2' | iconv -f euc-jp -t utf-8 >> /root/log/ddns.log" >> /root/bin/ddns.sh
$ chmod 700 /root/bin/ddns.sh
$ crontab -e
25 * * * * sh /root/bin/ddns.sh
$ systemctl enable cronie    (ArchLinuxに必要かも)
$ systemctl start cronie    (ArchLinuxに必要かも)

ここでcronというスクリプトを自動実行するデーモンプロセスを使いました。この設定でddns.shスクリプトは毎時間の25分に自動実行されます。

*1:だめなときはファイアウォールを切ってみてください。それで接続できれば、ファイアウォールの設定を見直しましょう。

*2:ルータが再起動したりすると変化するらしいです。

*3:google.co.jpとかyahoo.co.jpみたいなやつです。

*4:久しぶりに見たら、サービスの内容が少し変わっていました。今はもっといいところがあるかもしれません。

sshサーバを構築する

二回目のブログ更新です。今回は以前構築したsshサーバの手順を書きたいと思います。macOSでの構築手順についてメモを残していたのでそれをコピペします。Mountain Lionのときのものです。少し古い情報ですが、現在のSierraでも同じだと思います。また基本的な流れはLinuxサーバでも変わりません。Linuxだとコマンド操作が必要です。*1

sshサーバを立てる

「システム環境設定」の「共有」を選択します。スクリーンショットの①のように「リモートログイン」を「入」にします。これでMacsshサーバーとして立ち上がります。スクリーンショットの②は白抜きになっていますが、実際はuser@hostname(ここでのhostnameはIPアドレス)となっています。

ここで同一のLAN上にあるコンピュータのターミナルから

$ ssh user@hostname

と打ち込むとパスワードを要求されます。sshサーバを立てたMacのパスワードを入力するとsshでログインできます。hostnameの部分はスクリーンショットの③の白抜き(hoge.local)でも良いです。
f:id:imoto-yuya-1234:20170126220444p:plain

アクセスできるユーザを限定する

アクセス可能なユーザを限定します。 スクリーンショットの④のように「アクセスを許可」の「次のユーザのみ」を選択します。 そのあと「+」を選択して、 sshでアクセスしたいユーザを選択します。

公開鍵認証にしてみる

sshクライアント側(sshサーバにアクセスする側)のターミナルで

$ cd ~/.ssh
$ ssh-keygen -t rsa(全てEneterでOK)
$ scp id_rsa.pub username@hostname:/Users/username/.ssh
$ ssh user@hostname
$ cd ~/.ssh
$ cat id_rsa.pub >> authorized_keys
$ chmod 600 authorized_keys

これで公開鍵認証が出来るようになりました。sshクライアント側のターミナルから

$ ssh user@hostname

パスワードを要求されずに ssh接続が出来るようになったかと思います。

sshの設定を変更する

/etc/sshd_configの編集によって行います。

$ vi /etc/sshd_config
Protocol 2
PermitRootLogin no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
ChallengeResponseAuthentication no
UsePAM no
Port 22(Linuxとかはここで任意のポート番号を設定できます)

私はこんな感じで設定したみたいです。

ポートを変更してみる(Mac)

Macの場合はsshd_configの編集でポートを変更できません*2。ポート変更は/System/Library/LaunchDaemons/ssh.plistの編集によって行います。

$ vi /System/Library/LaunchDaemon/ssh.plist
 <key>Listeners</key>
 <dict>
 <key>SockServiceName</key>
 <string>ssh</string>(sshを23にするとポート23に変更されます)
 <key>Bonjour</key>

ポートを変更した時は

-pオプションをつけて、ポート番号を指定しましょう。

$ ssh user@hostname -p 22(変更したポート番号)

IPアドレスを固定する

デフォルトの設定だと、コンピュータが再起動するとIPアドレスが変わってしまいます。サーバにするなら、固定にした方が良いです。

Macだと「システム環境設定」の「ネットワーク」から設定できます。

「ネットワーク」設定の左側から接続済みのネットワークを選択して、右下にある「詳細」を選択します。

するとこんな画面が出てきます。

f:id:imoto-yuya-1234:20170128124854p:plain

ここから⑤の「TCP/IP」タブを選択して、⑥の「IPv4の設定」でプルダウンの中から「手入力」を選択します。それから⑦の「IPv4アドレス」に任意のアドレスを入力します。といってもなんでも良いわけではなくて、今回だとルータのIPアドレスが192.168.0.1になっているので、192.168.0.10とか192.168.0.20とか、192.168.0.xxのようなIPアドレスでなければなりません。

これでIPアドレスを固定することができました。

しかし、この設定をするとネットワーク接続できない場合があった気がします。そのときは「DNS」タブを選択して、DNSサーバにルータのアドレス、ここでは192.168.0.1を追加してみてください。

再起動

設定が終わったら再起動しておきましょう。スクリーンショットの①を「切」にして、再び「入」にすると再起動です。

*1:ubuntuCentOSとかだとGUIでできるのかもしれません。

*2:Mountain Lionのときはそうでした。

はじめまして。

趣味で作ったもののドキュメントをブログとして残そうと考えています。

下記の今までやってきたこと、今やっていることを書いていく予定です。

・pebble watchface を作る

・pebble スタンドを3Dプリンタで作る

・お掃除ロボットを作る

Androidアプリを作る

・サーバを構築する