IT pass HikiWiki - [ITPASS2017]rsync エラーへの対処 Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
= 概要
* tako への rsync 失敗問題
* tako の OS アップグレード後, cron によるバックアップ(rsync)に失敗するようになった
*公開鍵認証の公開鍵の設定を変更することで解決
* 参考にした WEB ページ((<URL:http://www2s.biglobe.ne.jp/~nuts/labo/inti/cron-rsync-ssh-nodaemon.html>))
* 作業日
* 2018/04/04
* 作業者
* 高橋, 塩尻
= cron からのエラーメッセージ
* 件名
Cron <root@ika-itpass> cd / && run-parts --report /etc/cron.local/daily |mail -s "`hostname -f` daily run outputs" itpadmin@itpass.scitec.kobe-u.ac.jp
* 内容
/etc/cron.local/daily/230_rsync_itpassbk:
Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(235) [sender=3.1.2]
Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(235) [sender=3.1.2]
Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(235) [sender=3.1.2]
Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(235) [sender=3.1.2]
= 作業内容
参考 : ((<[ITPASS2017]サーバ交換作業 1 週間後に行う作業
>))
== ika-itpass 側での公開鍵作成
バックアップのための公開鍵を作成する.
ika-itpass:$ sudo -s -H
ika-itpass:# cd /root
ika-itpass:# ssh-keygen -t rsa -b 4096
(鍵の置き場はデフォルトの /root/.ssh/id_rsa とする)
(鍵の強度を上げるため, -b 4096 のオプションをつけている)
(パスフレーズは空にする)
== tako-itpass 側の鍵の設置
ika-itpass で作成した公開鍵 ika-itpass:/root/.ssh/id_dsa.pub を
tako-itpass:/root/.ssh/authorized_keys の最後尾に追記 (ファイルがない場合は作成する.).
ここで ika-itpass から直接追記しようとすると,
tako-itpass 側の root パスワードが必要になるので,
一旦 tako-itpass の自分のディレクトリに鍵を置いた後,
tako-itpass で root となり authorized_key に追記する.
tako-itpass: # cat ./id_rsa.pub >> /root/.ssh/authorized_keys
更にパーミッションを変更する.
tako-itpass: # chmod 600 /root/.ssh/authorized_keys
== authorized_keys の編集
このままでは ika-itpass で root を取られると
tako-itpass もそのまま乗っ取られることが考えられるため,
公開鍵認証の際にはバックアップ以外の動作をできないよう,
また ika-itpass 以外からのアクセスを受け付けないよう制限をかける.
そのために, 上記で設置した authorized_keys 内の
tako-itpass の公開鍵の行の冒頭に以下を加えた.
なお, 見やすさのため改行してあるが, 一行で書くこと.
またカンマの前後に空白は開けないこと.
そして, 最後の "no-agent-forwarding" と公開鍵の冒頭に書いてある
"ssh-dss" または "ssh-rsa" の間には空白を一文字入れること.
command="rsync --server -vvvlogDtpre.iLsfxC --delete . /home/",no-pty,
from="133.30.109.22",no-port-forwarding,no-X11-forwarding,no-agent-forwarding
これをauthorized_keys 内の tako-itpass の公開鍵の行の冒頭に加える.
=== 変更点メモ
参考 : ((<URL:http://www2s.biglobe.ne.jp/~nuts/labo/inti/cron-rsync-ssh-nodaemon.html>))
* command="" の表現
* rsync がリモートで rsync を起動する際のコマンドラインを -vv オプションをつけて調べた
ika-itpass# rsync -av -vv --delete gate tako-itpass.scitec.kobe-u.ac.jp:/home/ | lv
* from=""の表現
* ika-itpass.scitec.kobe-u.ac.jp => 133.30.109.22
* 原因は不明だが IP アドレス以外の表現だとエラーになった
* 変更前の表現
* 参考用
command="rsync --server -vvlogDtpre.iLsf --delete . /home/",no-pty,
from="ika-itpass.scitec.kobe-u.ac.jp",no-port-forwarding,
no-X11-forwarding,no-agent-forwarding
== tako-itpass 側の通信許可
最近の OpenSSH では, デフォルトでは root のログインを許可しないため,
設定を変更する. /etc/ssh/sshd_config の
PermitRootLogin no
という部分を
PermitRootLogin forced-commands-only
に変更したのち,
tako-itpass# systemctl restart sshd
として設定を反映させる.
== 確認
* エラーを出していた /etc/cron.local/daily/230_rsync_itpassbk を実行し, 成功することを確認
ika-itpass:# cd /etc/cron.local/daily
ika-itpass:# ./230_rsync_itpassbk
* tako への rsync 失敗問題
* tako の OS アップグレード後, cron によるバックアップ(rsync)に失敗するようになった
*
* 参考にした WEB ページ((<URL:http://www2s.biglobe.ne.jp/~nuts/labo/inti/cron-rsync-ssh-nodaemon.html>))
* 作業日
* 2018/04/04
* 作業者
* 高橋, 塩尻
= cron からのエラーメッセージ
* 件名
Cron <root@ika-itpass> cd / && run-parts --report /etc/cron.local/daily |mail -s "`hostname -f` daily run outputs" itpadmin@itpass.scitec.kobe-u.ac.jp
* 内容
/etc/cron.local/daily/230_rsync_itpassbk:
Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(235) [sender=3.1.2]
Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(235) [sender=3.1.2]
Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(235) [sender=3.1.2]
Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(235) [sender=3.1.2]
= 作業内容
参考 : ((<[ITPASS2017]サーバ交換作業 1 週間後に行う作業
>))
== ika-itpass 側での公開鍵作成
バックアップのための公開鍵を作成する.
ika-itpass:$ sudo -s -H
ika-itpass:# cd /root
ika-itpass:# ssh-keygen -t rsa -b 4096
(鍵の置き場はデフォルトの /root/.ssh/id_rsa とする)
(鍵の強度を上げるため, -b 4096 のオプションをつけている)
(パスフレーズは空にする)
== tako-itpass 側の鍵の設置
ika-itpass で作成した公開鍵 ika-itpass:/root/.ssh/id_dsa.pub を
tako-itpass:/root/.ssh/authorized_keys の最後尾に追記 (ファイルがない場合は作成する.).
ここで ika-itpass から直接追記しようとすると,
tako-itpass 側の root パスワードが必要になるので,
一旦 tako-itpass の自分のディレクトリに鍵を置いた後,
tako-itpass で root となり authorized_key に追記する.
tako-itpass: # cat ./id_rsa.pub >> /root/.ssh/authorized_keys
更にパーミッションを変更する.
tako-itpass: # chmod 600 /root/.ssh/authorized_keys
== authorized_keys の編集
このままでは ika-itpass で root を取られると
tako-itpass もそのまま乗っ取られることが考えられるため,
公開鍵認証の際にはバックアップ以外の動作をできないよう,
また ika-itpass 以外からのアクセスを受け付けないよう制限をかける.
そのために, 上記で設置した authorized_keys 内の
tako-itpass の公開鍵の行の冒頭に以下を加えた.
なお, 見やすさのため改行してあるが, 一行で書くこと.
またカンマの前後に空白は開けないこと.
そして, 最後の "no-agent-forwarding" と公開鍵の冒頭に書いてある
"ssh-dss" または "ssh-rsa" の間には空白を一文字入れること.
command="rsync --server -vvvlogDtpre.iLsfxC --delete . /home/",no-pty,
from="133.30.109.22",no-port-forwarding,no-X11-forwarding,no-agent-forwarding
これをauthorized_keys 内の tako-itpass の公開鍵の行の冒頭に加える.
=== 変更点メモ
参考 : ((<URL:http://www2s.biglobe.ne.jp/~nuts/labo/inti/cron-rsync-ssh-nodaemon.html>))
* command="" の表現
* rsync がリモートで rsync を起動する際のコマンドラインを -vv オプションをつけて調べた
ika-itpass# rsync -av -vv --delete gate tako-itpass.scitec.kobe-u.ac.jp:/home/ | lv
* from=""の表現
* ika-itpass.scitec.kobe-u.ac.jp => 133.30.109.22
* 原因は不明だが IP アドレス以外の表現だとエラーになった
* 変更前の表現
* 参考用
command="rsync --server -vvlogDtpre.iLsf --delete . /home/",no-pty,
from="ika-itpass.scitec.kobe-u.ac.jp",no-port-forwarding,
no-X11-forwarding,no-agent-forwarding
== tako-itpass 側の通信許可
最近の OpenSSH では, デフォルトでは root のログインを許可しないため,
設定を変更する. /etc/ssh/sshd_config の
PermitRootLogin no
という部分を
PermitRootLogin forced-commands-only
に変更したのち,
tako-itpass# systemctl restart sshd
として設定を反映させる.
== 確認
* エラーを出していた /etc/cron.local/daily/230_rsync_itpassbk を実行し, 成功することを確認
ika-itpass:# cd /etc/cron.local/daily
ika-itpass:# ./230_rsync_itpassbk