arinux

Linux サーバー設定備忘録
<< openLDAP 構築(45) - マルチマスター(MirrorMode) (2) | main | rsync (ssh 鍵交換方式) >>
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 |









http://arinux.net/trackback/58
   1234
567891011
12131415161718
19202122232425
2627282930  
<< November 2017 >>
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ RECENT TRACKBACK
+ CATEGORIES
+ ARCHIVES
+ 掲載予定のタイトル
  • Wordpress
  • Pukiwiki
  • SMTPs/POPs/IMAPs
  • fml
  • Tips
+ CSS Nite
+ MOBILE
qrcode
+ LINKS
+ RECOMMEND
+ PROFILE