2021年1月16日土曜日

2021年1月8日金曜日

 

Ras pi Cron

https://qiita.com/Higemal/items/5a579b2701ef7c473062 参照

(まだ試していない・・)

■はじめに

Raspberryでは、とりあえずでcrontabに内容を記載しても何も起こりません(でした)。初めてcrontabを利用する前に必要な設定をまとめます。

 1. rsyslogの設定
 2. cronログレベルの設定
 3. cronログの確認
 おまけ cron内の言語設定

■1. rsyslogの設定

システムログ制御デーモンのrsyslogのcronログ出力設定を確認します。

①/etc/rsyslog.confの設定
rsyslog.conf内のcron記載がコメントアウトされているようなら、コメントアウトを外します。

設定ファイル: /etc/rsyslog.conf

/etc/rsyslog.conf(抜粋)
###############
#### RULES ####
###############

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*         /var/log/auth.log
*.*;auth,authpriv.none      -/var/log/syslog
#cron.*             /var/log/cron.log
daemon.*            -/var/log/daemon.log
kern.*              -/var/log/kern.log
lpr.*               -/var/log/lpr.log
mail.*              -/var/log/mail.log
user.*              -/var/log/user.log

↓cronのコメントアウトを外す

/etc/rsyslog.conf(抜粋)
cron.*              /var/log/cron.log

②rsyslogの再起動
設定変更後に、デーモンの再起動を行います。

sudo /etc/init.d/rsyslog restart

■2. cronログレベルの設定

①cronログレベルの設定
cronログレベルの設定です。ログレベルは設定内容の合計値で設定します。今回は「EXTRA_OPT="-L 15"」を設定します。

設定ファイル: /etc/default/cron

/etc/default/cron
# Cron configuration options

# Whether to read the system's default environment files (if present)
# If set to "yes", cron will set a proper mail charset from the
# locale information. If set to something other than 'yes', the default
# charset 'C' (canonical name: ANSI_X3.4-1968) will be used.
#
# This has no effect on tasks running under cron; their environment can
# only be changed via PAM or from within the crontab; see crontab(5).
READ_ENV="yes"

# Extra options for cron, see cron(8)
#
# For example, to enable LSB name support in /etc/cron.d/, use
# EXTRA_OPTS='-l'  
#
# Or, to log standard messages, plus jobs with exit status != 0:
# EXTRA_OPTS='-L 5'
#
# For quick reference, the currently available log levels are:
#   0   no logging (errors are logged regardless)
#   1   log start of jobs
#   2   log end of jobs
#   4   log jobs with exit status != 0
#   8   log the process identifier of child process (in all logs)
#
#EXTRA_OPTS=""

↓cronログレベルを設定

/etc/default/cron(抜粋)
EXTRA_OPTS="-L 15"

②cronの再起動
設定変更後に、デーモンの再起動を行います。

sudo /etc/init.d/cron restart

■3. cronログの確認

以下に設定ファイルが生成されたことを確認します。

ログファイル: var/log/cron.log

root@raspberrypi:~# ls var/log/cron.log

■おまけ cron内の言語設定

cron内では言語設定がされていないため、cron内に日本語を利用する場合、あらかじめ言語設定を書いておく必要があります。

言語設定: LANG=ja_JP.UTF-8
設定コマンド: crontab -u <ユーザ名> -e
参照コマンド: crontab -u <ユーザ名> -l

root@raspberrypi:~# crontab -u pi -l

LANG=ja_JP.UTF-8
30 2 1 * * echo "日本語" >> japanese.txt
~後略~

※piユーザのcrontabを設定

■出典/参考

cron の使い方
http://landisk.kororo.jp/diary/30_cron.php

cronのログを出すように設定する
http://shima-nigoro.hatenablog.jp/entry/2016/06/12/182903

cronでスクリプトを定期実行させるときに注意したい4つのこと
https://orebibou.com/2014/12/cron%E3%81%A7%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E5%AE%9A%E6%9C%9F%E5%AE%9F%E8%A1%8C%E3%81%95%E3%81%9B%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AB%E6%B3%A8%E6%84%8F%E3%81%97%E3%81%9F/

cronで文字化けするときの対処
http://www.koikikukan.com/archives/2013/08/12-000300.php

2020年12月22日火曜日

 


Raspberyy Pi で SSH


参照:https://qiita.com/tomokin966/items/bc22d09f97ebeb3955d2

試してみよう。


環境

ハード

  • ディスプレイ、マウス、キーボードを繋いである Raspberry Pi 3 Model B+
  • Windows10が入ったマシン

ネットワーク

  • 同一ローカルネットワークに接続済み

SSHとは?

Secure Shell(セキュアシェル、SSH)は、暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコル。パスワードなどの認証部分を含むすべてのネットワーク上の通信が暗号化される。
Secure Shell - Wikipedia より引用

暗号化とか認証とかを使って安全にリモートコンピュータに接続する仕組み。
その名の通り、シェルのセキュアなやつ。

パスワードによるベーシック認証も使えるが、基本的には公開鍵暗号を使って鍵で接続することが多い。

一通り設定が済んだらベーシック認証を無効化しておくのが吉。

Raspberry PiでSSHの設定をする。

Windows 10からRaspberry PiにSSH接続してみる(公開鍵認証) - いろいろ試してみる

基本的にはここを参照する。

1. SSHディレクトリを作る

Raspberry Piで以下のコマンドを実行。

sudo mkdir /boot/ssh

フォルダは空でOK。

2. 「設定」→「Raspberry Piの設定」からSSHを有効に

2019-06-05-15-07-25.png

最近のRaspbianはデフォルトだとオフになってるらしい。

3.「設定」→「Raspberry Piの設定」からパスワードを変更

2019-06-05-15-11-41.png

パスワードを変更する。
デフォルトは以下の通り。

UserPassword
piraspberry

パスワード変更したら、一回再起動しとく
sudo reboot

3. WinSCPから接続してみる

2019-06-05-15-34-13.png

以下の情報を入力して接続してみる。

ホスト名:IPアドレスかホスト名
ポート番号:変更していれば入力(デフォルトは22)
ユーザー名:pi
パスワード:さっき変えたやつ

繋がったらベーシック認証は設定完了。

4. 鍵を使って接続できるようにする

OpenSSHをインストールする。(Gitをインストールしてればついてきてるはず)

Git Bashから以下のコマンドを実行。(pathを通していればコマンドプロンプトでも可)

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

your_email@example.comは任意の値に変える。
(別にメールアドレスじゃなくてもいいけど、メールアドレスがベター)

保存先とかパスワードを求められるけど、何も入力せずEnter。

C:\Users\ユーザ名\.sshに「id_sra」(秘密鍵)と「id_rsa.pub」(公開鍵)が作られる。

WinSCPで「id_rsa.pub」(公開鍵)をRaspberry Piにアップロードする。

5. Raspberry Piに公開鍵を登録する

1)authorized_keys をテキストエディタで作っておく。
2)そのなかにid_rsa.pubの中身をペースト。
3)sshd_configの中身を下のとおり編集する

最後に、sudo service ssh restart 
rebootでもOKだが、service restratのほうがスマートかも。
# ホームディレクトリへ移動
cd ~

# 公開鍵をRaspberry Pi側に登録
mkdir .ssh
cat id_rsa.pub >> .ssh/authorized_keys

# 権限を設定
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

※権限の設定を間違うと接続できないので注意!

SSHの設定を変更するために設定ファイルを編集する。

編集前に設定ファイルの権限を一時的に変更する。

sudo chmod 777 /etc/ssh/sshd_config

これでWinSCPからでも編集できるようになる。

#PubkeyAuthentication yesのコメントアウトを外す。
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2のコメントアウトを外す

#PubkeyAuthentication yes

#AuthorizedKeysFile  .ssh/authorized_keys .ssh/authorized_keys2

を

PubkeyAuthentication yes

AuthorizedKeysFile  .ssh/authorized_keys .ssh/authorized_keys2

って感じに変更する。

6. ベーシック認証を無効にする

#PasswordAuthentication yesのコメントアウトを外し、noに書きかえる。

#PasswordAuthentication yes

を

PasswordAuthentication no

って感じに変更する。

設定ファイルの編集が終わったらパーミッションを戻す。
sudo chmod 644 /etc/ssh/sshd_config

7. パーミッションを確認する。

以下のディレクトリやファイルのパーミッションを確認しておく。
1つでも間違っていると接続できないので注意!

ディレクトリパーミッション
.ssh700
.ssh/authorized_keys600
/etc/ssh/sshd_config644

確認するのがめんどい場合は下のコマンドを流す。

cd
sudo chmod 700 .ssh
sudo chmod 600 .ssh/authorized_keys
sudo chmod 644 /etc/ssh/sshd_config

最後に再起動しておく。
sudo reboot



参照第2弾https://584homes.com/it/raspberry-pi/raspberry-ssh1802.html%20=




Raspberry Piに安全にSSHログインできる公開鍵認証の設定方法

パスワードログインはランダムで試すことで突破されることもあるので、公開鍵認証を行いました。
この設定を行うことでセキュリティの向上が期待できます。

公開鍵認証は秘密鍵を持つ人だけがログインできるようになる設定です。

2018/02/18 時点の Raspberry Pi 3 の環境で設定を行いました。

 

まず公開鍵と秘密鍵を作成します。
今回は Windows 環境で鍵を作成するため TeraTerm を使用しました。

Mac ユーザ等は ssh-keygen コマンドで生成できます。

 

公開鍵と秘密鍵の作成

  1. TeraTerm を起動して、[設定]-[SSH鍵生成] をクリック
    TeraTerm を起動して、[設定]-[SSH鍵生成] をクリック

  2. [鍵の種類] は “RSA” を選択して、[ビット数] は “2048” を入力
    [生成] をクリック
    [鍵の種類] は "RSA" を選択して、[ビット数] は "2048" を入力

  3. 「鍵を生成しました。」と出力される
  4. [鍵のパスフレーズ]、[パスフレーズの確認] にパスワードを入力
    [公開鍵の保存] と [秘密鍵の保存] をクリックして、それぞれの鍵を保存する
    ※鍵のパスフレーズ無しの場合は秘密鍵だけでログインします
    [公開鍵の保存] と [秘密鍵の保存] をクリックして、それぞれの鍵を保存する

この設定完了後に秘密鍵(id_rsa)を無くすとログインできなくなるため気をつけてください。
また、秘密鍵が第三者に漏洩すると、ラズパイにログインされてしまうので厳重に保管してください。

 

公開鍵を Raspberry Pi に保存

  1. ラズパイにログインする
  2. ホームディレクトリに .ssh ディレクトリを作成

    cd
    mkdir .ssh

  3. .ssh のパーミッションを変更

    chmod 700 .ssh

  4. .ssh ディレクトリの下に公開鍵ファイルを作成して開く

    vi ~/.ssh/authorized_keys

  5. 保存した “id_rsa.pub” をテキストエディタで開いてコピーする
    保存した "id_rsa.pub" をテキストエディタで開いてコピーする

  6. コピーして文字列を ~/.ssh/authorized_keys にペーストして保存する
    ※ペーストする前に [i] を入力して入力モードにするのを忘れずに!
    コピーして文字列を ~/.ssh/authorized_keys にペーストして保存する

  7. authorized_keys のパーミッションを変更

    chmod 600 ~/.ssh/authorized_keys

 

SSH の設定変更

  1. sshd_config のバックアップ

    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.yyyyMMdd

    ※yyyyMMdd は日付を入力

  2. sshd_config を開く

    sudo vi /etc/ssh/sshd_config

  3. “#PasswordAuthentication yes” の下の行に “#PasswordAuthentication no” を追加して保存する
    "#PasswordAuthentication yes" の下の行に "#PasswordAuthentication no" を追加して保存する
  4. SSH の再起動

    sudo service ssh restart

    これでパスワードログインが出来なくなり、秘密鍵を持っている人だけがログインできます。

 

 

おまけ:Teraterm のマクロを使って簡単ログイン

以下の内容を記載した “xxxx.ttl” ファイルを作成する

username = ‘ログインユーザ名’
hostname = ‘ログイン先のIPアドレス(例:192.168.0.1)’
keyfile = ‘ローカルに保存された秘密鍵のパス’
portnum = ‘ポート番号’

msg = hostname
strconcat msg ‘:22 /ssh /auth=publickey /user=’
strconcat msg username
strconcat msg ‘ /keyfile=’
strconcat msg keyfile
connect msg

.ttl ファイルを “Tera Term Macro Interpreter(C:\Program Files\teraterm\ttpmacro.exe)” で起動するように設定
.ttl ファイルを "Tera Term Macro Interpreter(C:\Program Files\teraterm\ttpmacro.exe)" で起動するように設定

xxxx.ttl をダブルクリックするとログインできるようになります。