LoginSignup
1
0

More than 1 year has passed since last update.

リモートからのファイル転送を自動化

Last updated at Posted at 2022-02-08

やりたいこと

リモートにあるファイルを本宅のサーバ(ClrLinux)に取り込みたい。作業は自動化したいけれどある程度のセキュリティーは担保したい。(少なくともパスワードをどこかに書いておくなんてことはしたくない)
公開キーを使ってパスワード入力すせずにSSHでリモートのUbuntuサーバにアクセスできそう。

リモートの映像が本宅のサーバでもこんな感じで見えるように。
スクリーンショット 2022-02-09 1.05.18.png

公開鍵の設定

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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0