arinux

Linux サーバー設定備忘録
rsync (ssh 鍵交換方式)


前回の scp と同様に、鍵交換方式による ssh 認証を使用して rsync 実行する方法を説明します。ssh サーバー側では、rsync デーモンは起動していなくても OK です。


メモ RSA鍵の生成


  1. クライアント側でパスワードなしの RSA鍵を生成します。
    ●クライアント側
    [gamba]$ ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/gamba/.ssh/id_rsa): <Enter>
    Enter passphrase (empty for no passphrase): <Enter>
    Enter same passphrase again: <Enter>
    Your identification has been saved in /home/gamba/.ssh/id_rsa.
    Your public key has been saved in /home/gamba/.ssh/id_rsa.pub.
    The key fingerprint is:
    e5:f6:f1:da:56:31:c8:2d:4a:28:f2:7f:f4:91:29:85 gamba@test15.examples.net
    
    虫眼鏡 root で gamab ユーザーの RSA鍵を生成する場合は、以下のようにします。
    [root]# ssh-keygen -t rsa -C gamba@10.1.1.15
    (省略)
    [root]# chown gamba:gyomu /homee/gamba/.ssh/id_rsa
    [root]# chown gamba:gyomu /homee/gamba/.ssh/id_rsa.pub
    


  2. 公開鍵を sshサーバー側へコピーします。
    ●クライアント側
    [gamba]$ scp ./id_rsa.pub gamba@test16,examples.net:/home/gamba/.ssh/authorized_keys
    gamba@test16,examples.net's password: <gambaパスワード入力>
    id_rsa.pub                                    100%  237     0.2KB/s   00:00
    



メモ ssh サーバーの設定


  1. ssh サーバーの設定を変更します。
    ●サーバー側
    [gamba]$ sudo su -
    Enter [gamba]'s Password: <gambaパスワード入力>
    [root]# cd /etc/ssh
    [root]# vi sshd_config
    #以下の行のコメントアウトを外す
    PubkeyAuthentication yes
    AuthorizedKeysFile      .ssh/authorized_keys
    
    ※ssh1 の場合は 「RSAAuthentication yes」 のコメントを外す。
    ※ssh2 の場合は 「PubkeyAuthentication yes」 のコメントを外す。
    


  2. sshd を再起動します。
    ●サーバー側
    [root]# service sshd restart
    sshd を停止中:                                             [  OK  ]
    sshd を起動中:                                             [  OK  ]
    



旗 【クライアント:gamba】 → 【リモート:gamba】の rsync


  1. rsync 実行例
    ●クライアント側
    [gamba]$ rsync -avz -e ssh /home/gamba/save/ 10.1.1.16:/home/gamba/public_html/data/
    



旗 【クライアント:gamba】 → 【リモート:sanga】の rsync


  1. 公開鍵をサーバー側の sanga/.ssh へコピーします。
    ●クライアント側
    [gamba]$ scp ~/.ssh/id_rsa.pub sanga@10.1.1.16:/home/sanga/.ssh/authorized_keys
    sanga@10.1.1.16's password: <sangaパスワード入力>
    id_rsa.pub                                   100%  237     0.2KB/s   00:00
    


  2. rsync 実行例
    ●クライアント側
    [gamba]$ rsync -avz -e ssh /home/gamba/save/ sanga@10.1.1.16:/home/sanga/public_html/data/
    



旗 【クライアント:root】 → 【リモート:gamba】の rsync


  1. RSAキーを指定して rsync を実行
    ●クライアント側
    [root]# rsync -avz -e "ssh -i /home/gamba/.ssh/id_rsa" /home/gamba/save/ ¥
    gamba@10.1.1.16:/home/gamba/public_html/data/
    


  2. 以下でも結果は同じ
    ●クライアント側
    [root]# rsync -avz -e "ssh -l gamba -i /home/gamba/.ssh/id_rsa" /home/gamba/save/ ¥
    10.1.1.16:/home/gamba/public_html/data/
    



メモ cron とスクリプトによる rsync


  1. rsync のスクリプトの例です。
    ●クライアント側
    [gamba]$ vi /home/gamba/bin/rsync_test.sh
    #!/bin/sh
    
    logdir="`date +%Y_%m%d`"
    
        if [ ! -d /home/gamba/save/$logdir ]; then
          /bin/mkdir /home/gamba/save/$logdir
        fi
    
    /usr/bin/rsync -avz -e "ssh -i /home/gamba/.ssh/id_rsa" --exclude 'tmp*' ¥
    /home/gamba/public_html/images/ sanga@10.1.1.16:/home/sanga/www/htdocs/images/ ¥
    >& /home/gamba/save/$logdir/log_images.`date +%Y_%m%d_%H%M`
    
    exit 0
    
    • 「--exclude 'tmp*'」 は、先頭に tmp の付くファイル、ディレクトリを除外する、という意味です。
    • 「>&」 は、標準出力と標準エラー出力の両方をリダイレクトします。


  2. cron の例です。
    ●クライアント側
    [gamba]$ crontab -e
    */10 * * * * /home/gamba/bin/rsync_test.sh >> /home/gamba/save/log_script 2>&1
    
    • 上記の例では、10分おきに実行します。
    • 「2>&1」は、標準出力と標準エラー出力の両方をリダイレクトします。


ここまで

| arinux | Tips | 10:26 | comments(0) | trackbacks(0) | pookmark |
scp 自動応答(ssh 鍵交換方式)


scp(secure copy) は、ssh をベースにしたファイル転送プロトコル。sshを使ってデータを暗号化してリモート・ホストにファイルをコピーします。


ここでは、すでに ~/.ssh/known_hosts に、接続先のホストに対する公開鍵が記述されていることを前提とします。


メモ ssh 認証がパスワード方式の場合


  • scp 実行の際、以下のようにパスワードを聞かれます。
    [root]# scp ./testfile.txt gamba@10.1.1.15:/home/gamba/save
    gamba@10.1.1.15's password:
    



メモ ssh 認証が鍵交換鍵方式の場合


  1. クライアント側で RSA鍵を生成します。
    ●クライアント側
    [gamba]$ ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/gamba/.ssh/id_rsa): <Enter>
    Enter passphrase (empty for no passphrase): <パスワード入力>
    Enter same passphrase again: <再入力>
    Your identification has been saved in /home/gamba/.ssh/id_rsa.
    Your public key has been saved in /home/gamba/.ssh/id_rsa.pub.
    The key fingerprint is:
    e5:f6:f1:da:56:31:c8:2d:4a:28:f2:7f:f4:91:29:85 gamba@test15.examples.net
    


  2. 秘密鍵のパーミッションが 「600」 であることを確認します。
    ●クライアント側
    [gamba]$ ls -l .ssh
    -rw-------  1 gamba gyomu 887 Mar 28 10:57 id_rsa
    -rw-r--r--  1 gamba gyomu 237 Mar 28 10:57 id_rsa.pub
    


  3. 公開鍵を sshサーバー側へコピーします。
    ●クライアント側
    [gamba]$ scp ./id_rsa.pub gamba@test16,examples.net:/home/gamba/.ssh
    gamba@test16,examples.net's password: <gambaパスワード入力>
    id_rsa.pub                                    100%  237     0.2KB/s   00:00
    


  4. サーバー側の公開鍵のファイル名を変更します。
    ●サーバー側
    [gamba]$ cd ~/.ssh
    [gamba]$ mv id_rsa.pub authorized_keys
    


  5. ssh サーバーの設定を変更します。
    ●サーバー側
    [gamba]$ sudo su -
    Enter [gamba]'s Password: <gambaパスワード入力>
    [root]# cd /etc/ssh
    [root]# vi sshd_config
    #以下の行のコメントアウトを外す
    PubkeyAuthentication yes
    AuthorizedKeysFile      .ssh/authorized_keys
    
    ※ssh1 の場合は 「RSAAuthentication yes」 のコメントを外す。
    ※ssh2 の場合は 「PubkeyAuthentication yes」 のコメントを外す。
    


  6. sshd を再起動します。
    ●サーバー側
    [root]# service sshd restart
    sshd を停止中:                                             [  OK  ]
    sshd を起動中:                                             [  OK  ]
    


  7. クライアント側から 「-i」 オプションで秘密鍵を指定して scp を実行します。
    ●クライアント側
    [gamba]$ touch test01.txt
    [gamba]$ scp -i ~/.ssh/id_rsa ./test01.txt gamba@test16.examples.net:/home/gamba/save
    Enter passphrase for key '/home/gamba/.ssh/id_rsa': <鍵生成時のパスワード入力>
    test01.txt                                    100%    0     0.0KB/s   00:00
    



メモ 鍵交換方式を利用した自動 scp スクリプト


scp を実行する度にパスワードを聞かれないように、パスワードなしの鍵を生成します。これによって、複数のファイルを scp でコピーするスクリプトが実行できるようになります。


  1. クライアント側でパスワードなしの RSA鍵を生成します。
    ●クライアント側
    [gamba]$ ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/gamba/.ssh/id_rsa): <Enter>
    /home/gamba/.ssh/id_rsa already exists.
    Overwrite (y/n)? y
    Enter passphrase (empty for no passphrase): <Enter>
    Enter same passphrase again: <Enter>
    Your identification has been saved in /home/gamba/.ssh/id_rsa.
    Your public key has been saved in /home/gamba/.ssh/id_rsa.pub.
    The key fingerprint is:
    e5:f6:f1:da:56:31:c8:2d:4a:28:f2:7f:f4:91:29:85 gamba@test15.examples.net
    


  2. 公開鍵を sshサーバー側へコピーします。
    ●クライアント側
    [gamba]$ scp ./id_rsa.pub gamba@test16,examples.net:/home/gamba/.ssh/authorized_keys
    gamba@test16,examples.net's password: <gambaパスワード入力>
    id_rsa.pub                                    100%  237     0.2KB/s   00:00
    
    ※サーバー側の 「authorized_keys」 は上書きされます。
    


  3. 「-i」 オプションで秘密鍵を指定して scp を実行します。
    ●クライアント側
    [gamba]$ touch test02.txt
    [gamba]$ scp -i ~/.ssh/id_rsa ./test02.txt gamba@test16.examples.net:/home/gamba/save
    test02.txt                                    100%    0     0.0KB/s   00:00
    


  4. 特定のファイルを連続して scp するスクリプトの例です。
    ●クライアント側
    [gamba]$ ls -1 ~/save | grep ^t > scp_list
    [gamba]$ cat scp_list
    test01.txt
    test02.txt
    test03.txt
    test04.txt
    test05.txt
    
    [gamba]$ vi scp_test01.sh
    
    #!/bin/sh
    
    homedir="/home/gamba"
    local_dir="$homedir/save"
    rsa_private="$homedir/.ssh/id_rsa"
    remote_dir="gamba@test16.examples.com:/home/gamba/save"
    input01=$local_dir/scp_list
    
      while read SCPname
      do
         /usr/bin/scp -i $rsa_private $local_dir/$SCPname $remote_dir
      done < $input01
    
    exit 0
    


  5. 実行パーミッションを与えます。
    ●クライアント側
    [gamba]$ chmod +x scp_test01.sh
    


  6. 実行テストします。
    ●クライアント側
    [gamba]$ ./scp_test01.sh
    



ここまで

| arinux | Tips | 11:00 | comments(0) | trackbacks(0) | pookmark |
SSI を使用する方法
ひらめきファイルの拡張子を shtml にして、shtml ファイルを認識するように、.htaccess に以下を記述する。


Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml


| arinux | Tips | 15:26 | comments(0) | trackbacks(0) | pookmark |
メールの受信はできるが、送信ができない
ひらめき587番ポートを使用する。


接続プロバイダーで「アウトバウンド25番ポートブロック」が行われている場合は、SMTPサーバーのポート番号を変更する。


downアウトバウンド25番ポートブロックが行われているプロバイダー

  • BB.excite
  • Dion
  • EO(eonet)
  • InfoSphere
  • Nifty
  • OCN
  • Plala
  • So-net
  • TNC
  • Vectant
  • YBB


メモメールクライアント側の設定方法


nextサブミッション・ポートを利用してメールを送信する

| arinux | Tips | 15:01 | comments(0) | trackbacks(0) | pookmark |
PHPコードで文字化け
ひらめき.htaccess で文字コードの入出力を固定する。


メモEUC で統一する場合

php_value mbstring.language Japanese 
php_flag mbstring.encoding_translation On 
php_value mbstring.script_encoding EUC-JP 
php_value mbstring.internal_encoding EUC-JP


メモUTF-8 で統一する場合

php_value mbstring.language Japanese 
php_flag mbstring.encoding_translation On 
php_value mbstring.script_encoding UTF-8 
php_value mbstring.internal_encoding UTF-8 


メモSJIS で統一する場合

php_value mbstring.language Japanese 
php_flag mbstring.encoding_translation On 
php_value mbstring.script_encoding SJIS
php_value mbstring.internal_encoding SJIS


メモ上記でもまだ文字化けする場合

php_value default_charset EUC-JP 
php_value mbstring.http_output pass 
php_value mbstring.http_input EUC-JP


| arinux | Tips | 14:51 | comments(0) | trackbacks(0) | pookmark |
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< December 2017 >>
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ RECENT TRACKBACK
+ CATEGORIES
+ ARCHIVES
+ 掲載予定のタイトル
  • Wordpress
  • Pukiwiki
  • SMTPs/POPs/IMAPs
  • fml
  • Tips
+ CSS Nite
+ MOBILE
qrcode
+ LINKS
+ RECOMMEND
+ PROFILE