rsync時にパスワード認証をしたくないのだ

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

こんにちは、rsyncというコマンドは希望と絶望が表裏一体となった恐るべきコマンドということを痛感したおてらです。

今回はそんなrsyncをする時に面倒なパスワード入力を省くようにするためのメモ。

はじめに

データ移行やバックアップなどで重宝するrsyncコマンドですが、cronなどで自動実行する時や、いくつかの特定のディレクトリを同期させる必要がある場合など、パスワードを何度も入力する場面が出てくると煩わしいですよね。

そんな煩わしさからは、SSHで公開鍵認証を用いることで解放されるのです。

 

クライアント側(SSHする側)の設定

公開鍵の作成

公開鍵を作成しますが、この時パスワードなしで作成します。

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #何も入力せずにEnter
Enter passphrase (empty for no passphrase):#何も入力せずにEnter
Enter same passphrase again:#何も入力せずにEnter
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:
47:2b:f6:a2:ed:b5:c4:58:0a:40:9f:9d:04:66:6f:60 root@ip-192-168-0-100
The key's randomart image is:
+--[ RSA 2048]----+
| . E.. |
:

上記はrootで実行しているので /root/.ssh/ 以下にファイルが生成されます。

他のユーザで実行した場合はユーザのホームディレクトリ以下に生成されます。

  • id_rsa(秘密鍵)
  • id_rsa.pub(公開鍵)

SSH先のサーバへ公開鍵をコピー

scp /root/.ssh/id_rsa.pub サーバ名:/tmp

接続先のサーバのIPまたはホスト名に対してscpコマンドで転送します。

パーミッションの調整

鍵ファイルが格納されているディレクトリと秘密鍵のファイルのパーミッションを変更します。

chmod 700 /root/.ssh
chmod 600 /root/.ssh/id_rsa

 

これでクライアント側の準備は完了です。

 

ホスト側(SSHされる側)の設定

ディレクトリの作成とパーミッションの調整

この公開鍵を利用するユーザのホームディレクトリに .ssh ディレクトリがない場合は作成してください。

このときにパーミッションも700に設定します。

mkdir /root/.ssh
chmod 700 /root/.ssh

rootの場合は恐らくデフォルトで存在していると思います。

 

コピーした公開鍵をauthorized_keysファイルへ追加

先ほど /tmp にコピーしてきた公開鍵を authorized_keys として先ほど作成したディレクトリに追加します。

cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys

これで準備は完了です。

 

接続確認

ここまでできたら早速接続確認。

ssh 接続先サーバIP or 接続先ホスト名

パスワードなしでログインできればOKです。

 

 

これで思う存分にパスワードなしでrsyncが出来ますが、実行する前にデバッグモードで動作をちゃんと確認してからにするなどしましょうね。

私のようにrsyncで絶望する羽目になりますよ…(遠い目)

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。