2018 年度 OSS リテラシー 3 : 第 3 回 リモートアクセス, メール
今回からは自分のアカウントでログインすること. ユーザ pi でログインしないこと. また, 校内無線 LAN ネットワークにうまく接続できないときは仮設の AP (SugiyamaLab-01) に接続して構わない.
ssh の設定
まず始めに, ラズパイの SSH インターフェイスを設定する. "メニュー" => "設定" => "Raspberry Pi の設定" を起動し, "インターフェイス" タブを選択する. 以下のように SSH を「有効」にする.
次に, 公開鍵認証による ssh 接続を許可する. sshd_config の中の "PubkeyAuthentication yes" と書かれた行のコメントアウトを外す. 設定を変更した後は必ず SSH サーバを再起動すること.
$ sudo -s [sudo] hogehoge のパスワード: # vi /etc/ssh/sshd_config ...(略)... PubkeyAuthentication yes (コメントアウトを外す) #PubkeyAuthentication yes # /etc/init.d/ssh restart (SSH サーバの再起動) [ ok ] Restarting ssh (via systemctl): ssh.service. # exit $
ssh の接続テスト (ローカルホスト内)
まず始めに, テストとしてローカルホスト (ラズパイ自身) に ssh でログインする. なお, 初めて ssh 接続するホストの場合は鍵を .ssh/known_host ファイルに登録してよいか聞かれるが通常は "yes" で良い. パスワードを入力するとログインが完了する. ログアウトする場合は exit を入力する. w コマンドでログイン情報が表示できる.
$ ssh localhost The authenticity of host 'localhost (::1)' can't be established. ECDSA key fingerprint is SHA256:kxOhw7sERvC9lrf0LddfB0ekBrKfqUZAohy5N/EaYaM. Are you sure you want to continue connecting (yes/no)? yes <-- 鍵の登録 Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts. hogehoge@localhost's password: <-- パスワード入力 Linux iot-00 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Thu Oct 19 13:37:06 2017 from 10.164.1.197 $ w 04:56:53 up 15:25, 3 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT hogehoge tty7 :0 木13 15:25m 21.04s 0.30s /usr/bin/lxsession -s LXDE-pi -e LXDE hogehoge tty1 :0 04:06 0.00s 0.33s 0.09s ssh localhost hogehoge pts/2 ::1 04:56 5.00s 0.26s 0.03s w $ ls $ exit
リモートアクセス (公開鍵認証): ラズパイ => サーバ
ラズパイで公開鍵を作成する. 途中, 「パスフレーズ」を入力するよう求められるが, 何も入力しないで Enter キーを押す. ラズパイからサーバへのデータ転送を自動化する (パスワードなしで実行する) ために, パスフレーズ無しで公開鍵を作成する (Linux セキュリティ標準教科書 6.8 節).
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/hogehoge/.ssh/id_rsa): (何も入力せず Enter キーを押す => 鍵が /home/hogehoge/.ssh/id_rsa に作られる) Enter passphrase (empty for no passphrase): (何も入力せず Enter キーを押す) Enter same passphrase again: (何も入力せず Enter キーを押す) Your identification has been saved in /home/hogehoge/.ssh/id_rsa. Your public key has been saved in /home/hogehoge/.ssh/id_rsa.pub. The key fingerprint is: SHA256:DWM3yUuGBTb2V1BRwJp+lnBbi/XCHqX2HECsaVjihLQ hogehoge@iot-00 The key's randomart image is: +---[RSA 2048]----+ | ..*.. o+=+.| | +.O o +. | | EB % =o | | . X B+...o| | S +. ++*o| | ..@o.| | = =.| | . o| | | +----[SHA256]-----+
公開鍵の種類とbit長は以下のコマンドで確認できる. "Comment:" 行に注目すると, この鍵の場合は鍵の bit 長が 2048 の RSA 形式であることがわかる.
$ ssh-keygen -e Enter file in which the key is (/home/hogehoge/.ssh/id_rsa): ---- BEGIN SSH2 PUBLIC KEY ---- Comment: "2048-bit RSA, converted by hogehoge@iot-00 from OpenSSH" AAAAB3NzaC1 .... (以下略)..... ---- END SSH2 PUBLIC KEY ----
公開鍵をサーバ sky.epi.it.matsue-ct.jp へコピーするため, ラズパイのターミナルを起動し, ssh-copy-id コマンドを実行する. サーバ sky.epi.it.matsue-ct.jp でのアカウント名は「学生番号」である (以下では jxxxx と表記する). 仮パスワードは演習時間中に連絡する.
ssh-copy-id は公開鍵をサーバ側の ~/.ssh/authorized_keys に保存するものである. 途中, サーバのログインパスワード (鍵認証のパスフレーズではない)を聞かれるので, 適宜入力すること. 成功すると, "Number of key(s) added: 1" と表示される.
$ ssh-copy-id jxxxx@sky.epi.it.matsue-ct.jp /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/hogehoge/.ssh/id_rsa.pub" The authenticity of host 'sky.epi.it.matsue-ct.jp (10.164.1.197)' can't be established. ECDSA key fingerprint is SHA256:xr2ga95fO+StoEfPKwI1gOHmUTgSQNy0znMs7rqbjLI. Are you sure you want to continue connecting (yes/no)? yes (yes を入力) /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys jxxxx@sky.epi.it.matsue-ct.jp's password: (パスワードを入力) Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'jxxxx@sky.epi.it.matsue-ct.jp'" and check to make sure that only the key(s) you wanted were added.
サーバからラズパイへログインする. パスフレーズなしでログインできれば OK. サーバからログアウトするときは exit コマンドを実行する.
$ ssh -l jxxxx sky.epi.it.matsue-ct.jp The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. sky$ sky$ exit $
サーバとラズパイの区別をするために, サーバのコマンドプロンプト ($, #) の 前にホスト名 (sky) を付けた. また, ラズパイとサーバでユーザ名が異なるので, ssh の -l オプションにユーザ名を渡した.
リモートアクセス (公開鍵認証): サーバ => ラズパイ
自分のアカウントの設定
まず, サーバ sky.epi.it.matsue-ct.jp にログインする. サーバとラズパイの区別をするために, サーバのコマンドプロンプト ($, #) の 前にホスト名 (sky) を付けていることに注意せよ.
$ ssh -l jxxxx sky.epi.it.matsue-ct.jp The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. sky$ sky$
サーバにログインしたら, 忘れないうちにサーバの初期パスワードを変更すること. なお, 新旧パスワードの入力場面では, ターミナルには何も表示されないことに注意せよ.
sky$ passwd jxxxx 用にパスワードを変更中 現在の UNIX パスワード: 新しい UNIX パスワードを入力してください: 新しい UNIX パスワードを再入力してください: passwd: パスワードは正しく更新されました
サーバ上で ssh 公開鍵を作成する. 途中, 「パスフレーズ」を入力するよう求められる. これは公開鍵認証を行うときに使うパスワードみたいなもので, 他で使っていない 文字列を入力すること.
sky$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/jxxxx/.ssh/id_rsa): (何も入力せず Enter キーを押す => 鍵が /home/jxxxx/.ssh/id_rsa に作られる) Enter passphrase (empty for no passphrase): (パスフレーズを入力, 画面表示されない) Enter same passphrase again: (パスフレーズを入力, 画面表示されない) Your identification has been saved in /home/jxxxx/.ssh/id_rsa. Your public key has been saved in /home/jxxxx/.ssh/id_rsa.pub. The key fingerprint is: 36:12:2d:9f:5f:14:50:92:16:3e:99:77:68:f0:fa:fa jxxxx@sky The key's randomart image is: +---[RSA 2048]----+ | ==o | | . .o* o | | o ..= * . | | + . * . | | . S . . | | o o o | | . . | | . | | ..E | +-----------------+
公開鍵をラズパイへコピーするため, ssh-copy-id コマンドを実行する.
sky$ ssh-copy-id hogehoge@XX.XX.XX.XX (ラズパイの IP) ECDSA key fingerprint is 4f:aa:eb:69:d0:29:42:32:d4:75:6d:4b:3c:ce:9b:a6. aAre you sure you want to continue connecting (yes/no)? yes (yes 入力) /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys hogehoge@10.138.64.114's password: (ラズパイのパスワード入力) Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'hogehoge@10.138.64.114'" and check to make sure that only the key(s) you wanted were added.
テスト接続を行う. 公開鍵認証が優先されるので, パスフレーズの入力が求められる.
sky$ ssh -l hogehoge XX.XX.XX.XX Enter passphrase for key '/home/hogehoge/.ssh/id_rsa': (パスフレーズの入力) Linux iot-00 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Mon Oct 2 19:54:47 2017 from 10.164.1.197 $ exit (ラズパイからログアウト) sky$
教員のアカウントの設定
教員のアカウントで, サーバからラズパイにログインできるようにする. 以下で行う手順 (1), (2) は ssh-copy-id コマンドの内部で実際に行なわれている処理である (ssh-key-copy コマンドが使えないから).
1) サーバ上の公開鍵を転送.
sky$ scp /home/sugiyama/sugiyama-id_rsa.pub hogehoge@XX.XXX.XXX.XXX:~/ sky$ exit (サーバからログアウト) $
2) ラズパイにおいて教員の公開鍵を設定する. 転送した公開鍵を手動で ~sugiyama/.ssh/authorized_keys に保存する. ファイル/ディレクトリの所有者とパーミッションを適切に設定すること.
$ sudo -s # cd /home/sugiyama # mkdir .ssh # chmod 700 .ssh/ (パーミッション変更) # chown sugiyama.sugiyama .ssh/ (所有者・所有グループ変更) # ls -ld .ssh/ (確認) drwx------ 2 sugiyama sugiyama 4096 11月 1 00:23 .ssh/ # mv /home/hogehoge/sugiyama-id_rsa.pub .ssh/authorized_keys # chmod 600 .ssh/authorized_keys # chown sugiyama.sugiyama .ssh/authorized_keys # ls -l .ssh/authorized_keys -rw------- 1 sugiyama sugiyama 2435 11月 1 00:29 .ssh/authorized_keys
メール
メールサーバの設定
MTA (Mail Transfer Agent) として postfix, sendmail, qmail が有名であるが, 今回は外部からのメール受信を行わないので高機能な MTA は必要ない. Debian のデフォルトの MTA である exim を用いることにする. 第 1 回目で mailutils パッケージをインストールしたが, それが依存する exim 関連のパッケージも一緒にインストールされている.
外部へメールを送るための設定を行う. メールの送信には高専のメールサーバ (red.matsue-ct.jp) をリレーする. 外部からのメールは受信しないことにする.
$ sudo -s # dpkg-reconfigure exim4-config
dpkg-reconfigure コマンドを実行すると, ターミナル上にグラフィカルな設定画面が表示される. タブを押すと <了解> <取消> を選択することができる.
- メール設定のタイプ: スマートホストでメール送信; SMTP または fetchmail で受診する
- メールは全て高専のメールサーバ (スマートホスト) に送信するので. ラズパイから高専の外部のサーバへ SMTP できない.
- システムメール名: iot-XX (各ラズパイのホスト名)
- デフォルトのホスト名のまま変更しなくて良い. 後ほど書き換えを有効にする.
- 入力側 SMTP 接続をリスンする IP アドレス: 127.0.0.1
- 外部からのメールを受信しない. 127.0.0.1 はローカルホストを意味する IP.
- メールを受け取るその他の宛先: (空欄)
- 外部からのメールを受信しないので, 設定する必要がない.
- メールをリレーするマシン: (空欄)
- ほかのホスト向けのスマートホストにする必要がない
- スマートホスト: red.matsue-ct.jp
- 送信するメールでローカルメール名を隠しますか? : はい
- 表示するローカルユーザのドメイン名: epi.it.matsue-ct.jp
- epi.it.matsue-ct.jp は情報工学科杉山研究室のサブドメイン.
- これを有効にしないと, スマートホスト (red.matsue-ct.jp) が受信を拒否する.
- DNS クエリの数を最小限にとどめますか? : いいえ
- インターネットに常時接続しているので.
- ローカルメールの配送方法: /var/mail 内の mbox 形式
- 設定を小さなファイルに分割しますか? : いいえ
- root と postmaster のメール受信者: sugiyama
- 教員のアカウントにしておいて下さい.
ローカルメールの送受信確認
ローカルメール配送の確認を行う. まずは mail コマンドを使ってメールを送る.
$ echo "本文" | mail -s "タイトル" hogehoge
mail コマンドで届いたメールを読む.
$ mail "/var/mail/hogehoge": 1 message 1 new >N 1 HOGEHOGE 土 10月 21 12: 15/466 title ? 1 (1 を入力) Return-path: <hogehoge@iot-00> Envelope-to: hogehoge@iot-00 Delivery-date: Sat, 21 Oct 2017 12:24:26 +0900 Received: from hogehoge by iot-00 with local (Exim 4.89) (envelope-from <hogehoge@iot-00>) id 1e5kOg-0000op-1k for hogehoge@iot-00; Sat, 21 Oct 2017 12:24:26 +0900 Subject: title To: <hogehoge@iot-00> X-Mailer: mail (GNU Mailutils 3.1.1) Message-Id: <E1e5kOg-0000op-1k@iot-00> From: HOGEHOGE <hogehoge@iot-00> Date: Sat, 21 Oct 2017 12:24:26 +0900 本文 ? q (終わるときは q を入力) Saved 1 message in /home/hogehoge/mbox Held 0 messages in /var/mail/hogehoge
メールの配送ログを確認する. tail コマンドでログファイルの末尾のみを表示する (cat コマンドや less コマンドを利用すればログを全て表示することができる). 以下の例では, hogehoge@iot-00 (iot00 はローカルホスト) にメールを送り, 完了 (completed) していることがわかる.
$ tail /var/log/exim4/mainlog ...(中略)... 2017-10-21 12:24:26 1e5kOg-0000op-1k <= hogehoge@iot-00 U=hogehoge P=local S=359 2017-10-21 12:24:26 1e5kOg-0000op-1k => hogehoge <hogehoge@iot-00> R=local_user T=mail_spool 2017-10-21 12:24:26 1e5kOg-0000op-1k Completed
Raspbian では既読のメールはデフォルトでは表示されないようだ. オプションで mbox を指定すると 全て表示される. 番号を入力すると再びメールを読むことができる. また, mbox 自体をページャー (less など) で表示しても届いたメールを全て確認することができる.
$ mail No mail for hogehoge $ mail -f mbox "/home/hogehoge/mbox": 3 messages 1 unread 1 HOGEHOGE 金 10月 20 06: 18/527 タイトル 2 HOGEHOGE 土 10月 21 12: 17/486 title >U 3 HOGEHOGE 日 11月 5 17: 17/492 タイトル ? ...(略)..... ? q $ less mbox ...(略).....
自分の学校のメールアドレスにメールを送る
スマートホスト経由でメールが配送されるか確認を行う. mail コマンドを使って自分の学校のメールアドレスにメールを送る. 学校の PC や携帯でメールが届いたか確認すること.
$ echo "本文" | mail -s "タイトル" jxxxx@matsue-ct.jp (メールアドレスは適宜変更すること)
ログを確認する. 送信がうまくいけば, OK, completed などの文字が確認できる.
$ tail /var/log/exim4/mainlog ...(中略)... 2017-10-21 12:52:55 1e5kqF-0001IH-2i <= hogehoge@iot-00 U=hogehoge P=local S=371 2017-10-21 12:52:55 1e5kqF-0001IH-2i => sugiyama@matsue-ct.jp R=smarthost T=remote_smtp_smarthost H=red.matsue-ct.jp [10.0.10.3] C="250 2.0.0 Ok: queued as 7CB4B294108C" 2017-10-21 12:52:55 1e5kqF-0001IH-2i Completed
もしもメールの配送ログを見て, 以下のようにエラーが生じている場合には, 設定が間違っている. その場合は送信エラーとなっているメールのキューを削除せよ. さらに先に行った dpkg-reconfigure コマンドを実行して再度設定を確認せよ.
$ tail /var/log/exim4/mainlog 2017-10-21 12:36:17 1e5ka9-0000qv-Hn <= hogehoge@iot-00 U=hogehoge P=local S=371 2017-10-21 12:36:17 1e5ka9-0000qv-Hn == sugiyama@matsue-ct.jp R=smarthost T=remote_smtp_smarthost defer (-44) H=red.matsue-ct.jp [10.0.10.3]: SMTP error from remote mail server after RCPT TO:<sugiyama@matsue-ct.jp>: 450 4.1.8 <hogehoge@iot-00>: Sender address rejected: Domain not found # exim -bp | exiqgrep -i | xargs exim -Mrm (キューの削除) Message 1e5ka9-0000qv-Hn has been removed # dpkg-reconfigure exim4-config (設定しなおし) ...(略)...
cron を用いた定期的なコマンド実行
定期的にコマンドを実行する仕組みとして cron がある. センサーデバイス (ラズパイ) でファイル出力したデータを サーバに定期的に転送したり, バックアップを定期的に行う 場合など, cron を使う機会は多い.
各ユーザが定期的にコマンドを実行するコマンド群は crontab に登録する. 以下では 5 分毎に時刻をネットワークの設定を出力する. TIPS であるが, cron では /sbin に PATH が通っていないので, PATH=/usr/bin:/bin:/usr/sbin:/sbin を設定しておくと良い. また, cron の出力はメールで送信される. 送信先のメールアドレスを指定する場合は, MAILTO に与えると良い. 以下の例ではメールを確認するために, わざと cat コマンドを実行している.
なお, crontab を始めて実行した時にはエディターの選択画面が 現れる. vim.tiny (vi) を選択することを勧める.
$ mkdir data_now (データ保管用ディレクトリを作成) $ crontab -e no crontab for hogehoge - using an empty one Select an editor. To change later, run 'select-editor'. 1. /bin/ed 2. /bin/nano <---- easiest 3. /usr/bin/vim.tiny Choose 1-3 [2]: 3 (3 を選択) # m h dom mon dow command PATH=/usr/bin:/bin:/usr/sbin:/sbin MAILTO=jxxxx@matsue-ct.jp (自分のメールアドレスを指定すること) */5 * * * * hostname -I > data_now/ip.txt ; cat data_now/ip.txt
cron が実行された時刻を見計らって, 自分のメールアドレスにメールが届いていることを確認する.
さらに, ファイルのタイムスタンプなどを確認する. タイムスタンプやファイルの中身が時間の経過と共に変化していることを確認すること.
$ ls -l data_now/ip.txt (ファイルのタイムスタンプを確認) -rw-r--r-- 1 hogehoge hogehoge 15 10月 21 13:10 data_now/ip.txt $ cat data_now/ip.txt (ファイルの中身を確認) 10.138.64.114 (有線 LAN と無線 LAN を使っている場合は IP が 2 つ表示される) $ ls -l data_now/ip.txt (ファイルのタイムスタンプを確認; 時間をおいて実行) -rw-r--r-- 1 hogehoge hogehoge 15 10月 21 13:15 data_now/ip.txt
crontab を修正し, data_now ディレクトリをサーバ sky.epi.it.matsue-ct.jp に送る設定にする. ファイル送信には rsync コマンドを用いる. また, メールの送り先は教員のアカウント (sugiyama) に変更すること.
$ crontab -e PATH=/usr/bin:/bin:/usr/sbin:/sbin MAILTO=sugiyama@matsue-ct.jp */5 * * * * hostname -I > data_now/ip.txt ; rsync -e "ssh -l jxxxx" -a data_now sky.epi.it.matsue-ct.jp:~/
ファイルがサーバ sky.epi.it.matsue-ct.jp に転送されたか確認する.
$ ssh -l jxxxx sky.epi.it.matsue-ct.jp The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sat Oct 21 13:21:00 2017 from 10.138.64.114 sky$ sky$ ls -l data_now/ip.txt -rw-r--r-- 1 jxxxx jxxxx 15 10月 21 13:25 data_now/ip.txt sky$ exit (サーバからログアウト) $ exit
crontab 編集後は cron メールが届かなくなるはずである. これは, 5 分毎に実行しているコマンドが標準出力に何も出力しないためである. 例えば, crontab に記述したコマンドをターミナル上で実行すると, そのことを確認することができる.
$ hostname -I > data_now/ip.txt ; rsync -e "ssh -l jxxxx" -a data_now sky.epi.it.matsue-ct.jp:~/ (何も表示されない) $
課題
Windows で putty を起動し, サーバ sky.epi.it.matsue-ct.jp へ ssh せよ. さらに, サーバからラズパイへ ssh アクセスせよ. ラズパイにログインしたあと, 以下のコマンドを実行し, そのスクリーンショット (ラズパイにログインした証拠) を提出せよ.
- ラズパイの無線インターフェイス (wlan0) に接続することになるので, ラズパイの IP は $ ifconfig wlan0 で確認すること.
$ cat /etc/issue Raspbian GNU/Linux 9 \n \l $ hostname iot-XX
- 上記演習を行い, サーバ (sky.epi.it.matsue-ct.jp) に data_now ディレクトリを転送せよ.
- 教員は各自のホームディレクトリに ip.txt が出来ているか & メール送信できるか確認する.
- 上記演習で自分に届いたメール (含むヘッダ) を wbt のオンラインテキストにコピペせよ. さらに, メールヘッダ上のキーワード (Return-Path, Deliverd-To, Recieved, Mime-Version, Content-Type, Content-Transfer-Encording, From, To, Subject, Date, Message-Id) の意味を調べよ.
- crontab について以下の問いに答えよ
- crontab に以下の行が書かれていた. hostname コマンドが何分おきに実行されるか答えよ
- /20 * * * * hostname
- 毎日 1:00, 3:00, 5:00 に hostname コマンドを実行したい. crontab -e でどのような行を追加すれば良いか答えよ.
- 毎週火曜日 5:10 に hostname コマンドを実行したい. crontab -e でどのような行を追加すれば良いか答えよ.
- 毎月 1 日に, 2 時間おき (0:05, 2:05, 4:05, 6:05, ....) hostname コマンドを実行したい. crontab -e でどのような行を追加すれば良いか答えよ.
- crontab に以下の行が書かれていた. hostname コマンドが何分おきに実行されるか答えよ
- [発展, 必須ではない] Windows の putty からサーバ (sky.epi.it.matsue-ct.jp) に公開鍵認証でリモートアクセスせよ. puttygen.exe を使うと Windows 上で公開鍵・秘密鍵を作ることができる. (puttygen.exe の使い方は google 検索すればたくさん見つかる. 例えば http://www.omakase.org/freebsd/puttyssh.html など参考になる). wbt のオンラインテキストに公開鍵作成からリモートアクセスまでの作業記録をつけること.