rsyncを使って差分のあるファイルを・・・の続き

ローカルからリモートのサーバー間でrsyncを実行するのにsshを使わないと
なぁ~って事で。
「sshでログインせずに鍵認証のみで実行する。」
をやってみた。

local:~% 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:
04:cf:a6:c9:2e:01:41:6c:86:34:03:96:c9:7b:7a:cd hoge@hoge.com

そうすると

id_rsa」と

id_rsa.pub」ってのが出来るので、そいつをリモートの方にコピーしてから
下記を実行した。

remote:~% cat id_rsa.pub >> ~/.ssh/authorized_keys

そうするとリモート側に公開鍵が出来上がるので、パスワードが必要なくなる。

下記は最初の認証時のみで、一度設定すると次回からは聞かれない。

local:~% ssh remote
The authenticity of host ‘remote (192.168.1.1)’ can’t be established.
DSA key fingerprint is 2e:f1:b2:ff:33:d2:c0:00:11:33:44:55:b7:8e:e4:46.
Are you sure you want to continue connecting (yes/no)?

<yesを入力>

パスワードを入力しちゃうと、パスワードを聞かれてしまう所でちょっとつまづいた。
重要だったのは「パスワードを入力せずに鍵のみでの認証にする。」って事でした。
つまり「空」<ENTER>だよ!!!
気付けよ俺!!!

ちなみにPHPで「exec関数」を使って「rsync」を使ってみよぉ~と思ったら、1日位はまってはまってくじけそうになった。
原因は・・・

ズバリ「環境変数」ですね。

exec(‘rsync -nva -e ssh [ローカルファイル名] [リモートユーザー名]:[リモートホスト名][リモートファイル名]’)

って実行したらゼンゼン動いてくれなくて、すげ~困った。

こいつを

exec(‘/usr/local/bin/rsync -nva -e /usr/local/bin/ssh [ローカルファイル名] [リモートユーザー名]:[リモートホスト名][リモートファイル名]’)

ってやったら動いたよぉ~♪
まじで疲れた。
駄目だね、はまる時はすげぇ~簡単な事でも気付かず延々と時間だけが過ぎていく・・・。

投稿者:

kishir

趣味: sk8, ピスト、ターンテーブル、レコード 仕事: Python, Objective-C, PHP, JavaScript

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です