sshでの公開鍵認証を利用してパスワード無しでログインができるようになりました。
sshの公開鍵認証でパスワード入力を省略する
https://www.rootlinks.net/2016/01/30/sshの公開鍵認証でパスワード入力を省略する/
今回はhost02のデータをhost01にファイル転送を行います。
1. host01のrootでrsyncを実行
2. host02のsshはrootログオン拒否なので一般ユーザmatsuokaでログイン
3. matsuokaへのログインは公開鍵でパスワード省略
4. host02のrsyncはsudoでroot権限で実行(host02の全てのデータがhost01に転送可能)
参考サイト
root権限でrsyncによるファイル転送を行う
http://qiita.com/tkyk@github/items/7f1216088b789d0538fb
- host02のsudo設定
- host01にrootでログイン
host02のmatsuokaはrsyncをパスワード無しでsudo実行可能に設定。
またrsyncはtty無しで(端末にログインしていなくても)実行可能に設定。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[root@host02 ~]# visudo -f /etc/sudoers.d/matsuoka [root@host02 ~]# cat /etc/sudoers.d/matsuoka Defaults!/usr/bin/rsync !requiretty matsuoka ALL=(ALL) NOPASSWD:/usr/bin/rsync [root@host01 ~]# sudo -l -U matsuoka このホスト上でユーザー matsuoka に一致したデフォルト項目: requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin ユーザー matsuoka 用の Runas およびコマンド特有のデフォルト: Defaults!/usr/bin/rsync !requiretty ユーザー matsuoka は次のコマンドをこのホスト上で実行できます: (ALL) NOPASSWD: /usr/bin/rsync |
host01にrootでログインしてrsyncを実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@host01 ~]# rsync -avz -e ssh --rsync-path="sudo rsync" matsuoka@host02:/usr/local/src/testdata/ /usr/local/src/testdata receiving incremental file list created directory /usr/local/src/testdata ./ .gitignore README.md docs/ (snip) html/ html/index.php html/htdocs/ sent 486 bytes received 530434 bytes 1061840.00 bytes/sec total size is 613207 speedup is 1.15 |
転送元データ(host02)
1 2 3 |
[root@host02 ~]# ls -l /usr/local/src 合計 5092 drwx------. 4 root root 61 3月 18 2015 testdata |
転送先データ(host01)
1 2 3 |
[root@host01 ~]# ls -l /usr/local/src 合計 60716 drwx------. 4 root root 4096 3月 18 15:24 2015 testdata |
転送元のフォルダ、ファイルがrootのみのアクセス権でも転送ができました。
[1. host01のrootでrsyncを実行]が不可能な場合は一般ユーザmatsuokaでフィル転送できるようにします。
参考サイトにあるようにhost01のvisudo(/etc/sudoers)でDefaults env_keep += “SSH_AUTH_SOCK”を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[root@host01 ~]# visudo [root@host01 ~]# cat /etc/sudoers ## Sudoers allows particular users to run various commands as ## the root user, without needing the root password. (snip) Defaults always_set_home Defaults env_reset Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS" Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE" Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES" Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE" Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY" Defaults env_keep += "SSH_AUTH_SOCK" (snip) ## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment) #includedir /etc/sudoers.d |
またhost01のmatsuokaはパスワード無しでsudo rsyncが実行できるように設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[root@host01 ~]# visudo -f /etc/sudoers.d/matsuoka [root@host01 ~]# cat /etc/sudoers.d/matsuoka matsuoka ALL=(ALL) NOPASSWD: /usr/bin/rsync [root@host01 ~]# sudo -l -U matsuoka このホスト上でユーザー matsuoka に一致したデフォルト項目: requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", env_keep+=SSH_AUTH_SOCK, secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin ユーザー matsuoka は次のコマンドをこのホスト上で実行できます: (ALL) NOPASSWD: /usr/bin/rsync |
host01のmatsuokaでsudo rsyncを実行してhost02のファイルを転送します。
1 2 3 4 5 6 |
[matsuoka@host01 ~]$ sudo rsync -avz -e ssh --rsync-path="sudo rsync" matsuoka@host02:/usr/local/src/testdata/ /usr/local/src/testdata receiving incremental file list sent 15 bytes received 482 bytes 994.00 bytes/sec total size is 613207 speedup is 1233.82 [matsuoka@host01 ~]$ |
これでhost01, host02ともに一般ユーザmatsuokaでroot権限のrsyncが実行できたのでhost02の全てのファイルをバックアップすることが可能になりました。
さらに全てのパスワード入力が省略できたのでrootまたはmatsuokaのcron jobでスケジュール実行が可能になります。