やりたいこと
リモートにあるファイルを本宅のサーバ(ClrLinux)に取り込みたい。作業は自動化したいけれどある程度のセキュリティーは担保したい。(少なくともパスワードをどこかに書いておくなんてことはしたくない)
公開キーを使ってパスワード入力すせずにSSHでリモートのUbuntuサーバにアクセスできそう。
公開鍵の設定
ClrLinux → SSH → Ubuntu(21.10)
①鍵を作成
②公開鍵をリモート側に移す
③リモート側のユーザーホームの下に公開鍵を追加
clear~ $ ssh-keygen -t rsa
clear~ $ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hoge/.ssh/id_rsa):
/home/hoge/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): (ここでは何も入れず空エンター)
Enter same passphrase again: (ここも空エンター)
Your identification has been saved in /home/hoge/.ssh/id_rsa
Your public key has been saved in /home/hoge/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:SDIzjDfL77V81M4GN**********GGW8kHlfXQ hoge@clear
The key's randomart image is:
+---[RSA 3072]----+
| |
| o . |
| . O . o . .. E|
| o O .+ o .ooo.|
| o ..S+ o.*.o+|
*このときパスフレーズを聞かれるが、何か入れてしまうと、アクセス時に結局そのパスフレーズを聞かれるので、ここでやりたいことではないため空エンターすることに注意
~/.sshの下に作られたid_rsaが秘密鍵で、id_rsa.pubが公開鍵ということで、公開鍵の方をリモートのログインするユーザ(この場合はhoge)のホームの下 .ssh にあるauthrized_keyというファイルに追加する。
ubuntu:~/.ssh$ ls -la
合計 20
drwx------ 2 hoge hoge 4096 Feb 8 23:38 .
drwxr-xr-x 21 hoge hoge 4096 Feb 9 00:01 ..
-rw------- 1 hoge hoge 1743 Feb 9 00:11 authorized_keys
ubuntu:~$ cat id_rsa.pub >> ./.ssh/authorized_keys
としておくと、SSH系のコマンドをたたいたときに、パスワードなしでそのままログインできる!
clear~ $ ssh -4 -p 65xxx hoge@your_domain.mydns.jp
Welcome to Ubuntu 21.10 (GNU/Linux 5.13.0-28-generic x86_64) ← (パスワードなしでlこうなる)
* Documentation: https://help.ubuntu.com
ssh -4 とした理由はこれを入れないとIPv6でつなげようとしてつながらないので。理由はリモート側のポートにはV4にしか穴を開けていないから。
リモートからコピーするスクリプト
前提:
/home/hoge/image/の下にYY-MM-DDの形式のDIRがあって、その下に定点観測の映像が保存されている。
その写真映像を日にち単位でコピーする
そのスクリプトがこれ↓
# !/bin/sh
# copyimage.sh
#
localpath=/home/clear/share/image
remotepath=/home/hoge/image
dn=$(date +%Y-%m-%d)
SERVER=your_domain.mydns.jp
PORT=65xxx
USER=hoge
if [ $# -eq 1 ]; then
echo "Dir = " $1
dn=$1
fi
echo "Copying image from " ${remotepath}/${dn}
mkdir ${localpath}/${dn}
sftp -4 -P ${PORT} ${USER}@${SERVER} <<END
get ${remotepath}/${dn}/* ${localpath}/${dn}
END
あとはこれを一日一回CRONで回せばいいかな。
今回参考にした記事:
http://safe-linux.homeip.net/network/OpenSSH_rsync-03.html
他