ssh + rsyncをcron jobで実行するためにパスワード入力を省略する方法です。
参考サイト
おおらかにいこう ssh + rsync でパスワードなし認証
http://fuminori14.hatenablog.com/entry/20121002/1349184746
テスト環境はhost01はCentOS 6.7, host02はCentOS 7.2になります。
- host01のユーザmatsuokaがhost02のユーザmatsuokaに対して公開鍵認証
- host01のmatsuokaでログイン
- 公開鍵作成
- host02へ公開鍵をコピー
- host02にmatsuokaでログイン
- matsuokaの公開鍵設定
- authorized_keysのアクセス権設定
- host01からhost02へログイン
- host01のユーザrootがhost02のユーザmatsuokaに対して公開鍵認証
- host01にrootでログイン
- 公開鍵作成
- host02へ公開鍵をコピー
- host02にmatsuokaでログイン
- rootの公開鍵設定
- host01からhost02へログイン
1 2 |
Last login: Wed Jan 27 21:42:40 2016 from 192.168.1.1 [matsuoka@host01 ~] |
公開鍵へのアクセスでパスワードは設定しません。id_rsaが秘密鍵、id_rsa.pubが公開鍵になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
[matsuoka@host01 ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/matsuoka/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/matsuoka/.ssh/id_rsa. Your public key has been saved in /home/matsuoka/.ssh/id_rsa.pub. The key fingerprint is: 4b:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx matsuoka@host01 The key's randomart image is: +--[ RSA 2048]----+ | | | | | | | . . | | S X X | | E o & = . | | . A O . | | .. * * | | .. . | +-----------------+ [matsuoka@host01 ~]$ ls -l .ssh/ 合計 12 -rw-------. 1 matsuoka matsuoka 1675 1月 28 10:56 2016 id_rsa -rw-r--r--. 1 matsuoka matsuoka 397 1月 28 10:56 2016 id_rsa.pub -rw-r--r--. 1 matsuoka matsuoka 395 1月 27 21:24 2016 known_hosts |
1 2 3 4 5 6 7 8 |
[matsuoka@host01 ~]$ sftp host02 Connecting to host02... matsuoka@host02's password: sftp> put .ssh/id_rsa.pub Uploading .ssh/id_rsa.pub to /home/matsuoka/id_rsa.pub .ssh/id_rsa.pub 100% 397 0.4KB/s 00:00 sftp> quit [matsuoka@host01 ~]$ |
1 2 |
Last login: Wed Jan 27 22:30:06 2016 from 192.168.1.2 [matsuoka@host02 ~]$ |
1 2 3 4 5 6 7 8 9 10 |
[matsuoka@host02 ~]$ ls -l 合計 4 -rw-r--r--. 1 matsuoka matsuoka 397 1月 28 11:01 id_rsa.pub [matsuoka@host02 ~]$ cat id_rsa.pub >> .ssh/authorized_keys [matsuoka@host02 ~]$ ls -la .ssh/ 合計 12 drwx------. 2 matsuoka matsuoka 46 1月 28 11:06 . drwx------. 3 matsuoka matsuoka 4096 1月 28 11:01 .. -rw-rw-r--. 1 matsuoka matsuoka 397 1月 28 11:06 authorized_keys -rw-r--r--. 1 matsuoka matsuoka 175 1月 27 22:47 known_hosts |
必ずアクセス権を600に設定して下さい。
1 2 3 4 5 6 7 |
[matsuoka@host02 ~]$ chmod 600 .ssh/authorized_keys [matsuoka@host01 ~]$ ls -la .ssh/ 合計 12 drwx------. 2 matsuoka matsuoka 46 1月 28 11:06 . drwx------. 3 matsuoka matsuoka 4096 1月 28 11:01 .. -rw-------. 1 matsuoka matsuoka 397 1月 28 11:06 authorized_keys -rw-r--r--. 1 matsuoka matsuoka 175 1月 27 22:47 known_hosts |
host01のmatsuokaからhost02のmatsuokaに対してパスワード入力無しでログインできました。
1 2 3 4 5 6 7 8 |
[matsuoka@host01 ~]$ ssh host02 Last login: Thu Jan 28 11:04:11 2016 from host01 [matsuoka@host02 ~]$ cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [matsuoka@host02 ~]$ exit ログアウト Connection to host02 closed. [matsuoka@host01 ~]$ |
1 2 |
Last login: Wed Jan 27 22:14:47 2016 from 192.168.1.1 [root@host01 ~]# |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[root@host01 ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 7c:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx root@host01 The key's randomart image is: +--[ RSA 2048]----+ | | | o | | o o+. | | o . = o | | S + * o .| | o * o +.| | . o o = A| | . o o . | | ..o . | +-----------------+ |
id_rsa.pub.rootという名前でアップロードしています。
1 2 3 4 5 6 7 8 |
[root@host01 ~]# sftp matsuoka@host02 Connecting to host02... matsuoka@host02's password: sftp> put .ssh/id_rsa.pub id_rsa.pub.root Uploading .ssh/id_rsa.pub to /home/matsuoka/id_rsa.pub.root .ssh/id_rsa.pub 100% 393 0.4KB/s 00:00 sftp> quit [root@host01 ~]# |
1 2 |
Last login: Wed Jan 27 22:30:06 2016 from 192.168.1.2 [matsuoka@host02 ~]$ |
matsuoka@host01とroot@host01の公開鍵が設定されています。
1 2 3 4 5 6 7 8 |
[matsuoka@host02 ~]$ ls -l 合計 8 -rw-r--r--. 1 matsuoka matsuoka 397 1月 28 11:01 id_rsa.pub -rw-r--r--. 1 matsuoka matsuoka 393 1月 28 11:13 id_rsa.pub.root [matsuoka@host02 ~]$ cat id_rsa.pub.root >> .ssh/authorized_keys [matsuoka@host02 ~]$ cat .ssh/authorized_keys ssh-rsa AAAAB3........................BVGw== matsuoka@host01 ssh-rsa AAAAB3........................rPAw== root@host01 |
host01のrootからhost02のmatsuokaに対してパスワード入力無しでログインできました。
1 2 3 4 5 6 7 |
[root@host01 ~]# ssh matsuoka@host02 [matsuoka@host02 ~]$ cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [matsuoka@host02 ~]$ exit ログアウト Connection to host02 closed. [matsuoka@host01 ~]$ |
これでhost01のユーザmatsuokaとrootはhost02のユーザmatsuokaに対してパスワード入力無しでsshログインできるようになりました。
ログイン出来ない場合はhost02の/etc/ssh/sshd_configの
1 |
PubkeyAuthentication yes |
を確認して下さい。