harumaki.net

インフラ屋の覚書や、ラーメン食べある記とか。

ssh バッチ処理用認証鍵の設定

   


バッチ処理用認証鍵の設定

【参照サイト】
お世話になってます。

OpenSSH 日本語マニュアルページ
http://www.unixuser.org/~euske/doc/openssh/jman/sshd.html

ssh/scpを利用してバッチ処理を行う場合に合わせて
パスフレーズ無しの秘密鍵/公開鍵ペアを生成し、実行できる作業を限定する設定を追加。

1)パスフレーズなし秘密鍵/公開鍵の作成

元々秘密鍵/公開鍵がある場合は名前を変更する。
ssh/scpでパスなし秘密鍵を使用する際はオプションで鍵ファイルを指定する。

$ ssh-keygen -d
Generating public/private dsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_dsa): /home/user/.ssh/id_dsa.nopass
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_dsa.nopass.
Your public key has been saved in /home/user/.ssh/id_dsa.nopass.pub.
The key fingerprint is:
f3:a7:24:64:d6:b3:8e:4b:c8:4d:44:98:e0:2b:a3:3c user@example
$

2)公開鍵をリモートホストへ登録

作成した公開鍵をリモートホストの~/.ssh/authorized_keyへ追記する。
その際、以下のオプションを公開鍵の最初へ追加すると
ログイン後の作業を制限できる。
特にcommand指定は、記述された作業以外は実行できなくなるので
バッチ処理には有効。

パスフレーズ無しでの接続をテストした後で追記する。

【authorized_keysへのオプション追加】

OpenSSH日本語マニュアルから抜粋。詳細は以下URLを参照のこと。
http://www.unixuser.org/~euske/doc/openssh/jman/sshd.html

  • from="pattern-list"
    公開鍵認証に加えて、クライアントのホストをpattern-listに沿ってチェックする。
    ホスト名、ドメイン、IPアドレスなどを指定可能。
    ※鍵ベースのTCPwrapperのような活用も可能。
  • command="COMMAND"
    認証にこの鍵が使われたときは必ずここで指定されたコマンドが実行されるようになります。
    ユーザが (訳注: クライアント側で) 指定したコマンドは無視されます。
  • no-port-forwarding
    TCP/IP 転送が禁止される。
  • no-X11-forwarding
    X11 転送が禁止される。
  • no-agent-forwarding
    認証エージェントの転送が禁止される。
  • no-pty
    端末の割り当てを禁止します (仮想端末の割り当てが失敗するようになります)。
    つまり指定した秘密鍵(パスなし)を使用してsshでの接続が出来なくなる。

【記述例】

ssh-dss AAA…で始まる公開鍵の前に記述する。

no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-dss AAAAB3N
zaC1kc3M*****AIvhYqy2V+93pzB2EVZhOEdROwIylfmeAiEGbwLmXmq0t4XYhbRQStWmzqy
uscZnuZ3ekvlP4*******w5M23lvoyeuQ5dtB3y1KNxEzS8NwQSVp5Q7P7Byfx3oIfTWwwW4
ovhMJBARQ35iyqhRb8nHt*******WIcC7L77FBs27AAAAFQDTk6Zkte5rP3BKM+sTjR/JXet
n6QAAAIB0CKmXMcOK8D6yBrYr7ud*******Qx**ZI6t1T67wXyNCmkMPVStOTZjZ7PY4nRJa
2hyVWiQxB0WbQ2smD11RHlAFwq/fH78WKN0F4mm*********18Ovs+069rynd/ZeTpjsSbNn
yWqasTUrDa/xB0Ja4LPdCYhfkqwjY2y+iLgAAAIEAhg3Tvu5iB*********xkjrsnAK0lDvJ
8d2tMzf72uF+2bPZ1nyT9NJPNDMKGYxN2rsexdbWmIkajlps0//9vDz/EJ2vmPKf*****/GU
HM+dVjiVgGHg9R36UxAZK/LwgY8gd0JjTuCBzcF*************1trYkoMa4QKtUzOw= us
er@example_nopass

3)接続

パスフレーズ無しの秘密鍵を使用する場合はオプションで指定する。
オプションはssh、scpともに共通。

  • ssh
    • オプション-iの場合
      $ ssh -i /home/user/.ssh/id_dsa.nopass user@remotehost
      Last login: Tue Nov 22 14:06:58 2005 from 111-222-234-***.hogehoge.com
      $
    • オプション-oの場合
      $ ssh -oIdentityFile=/home/user/.ssh/id_dsa.nopass user@remotehost
      Last login: Tue Nov 22 14:06:58 2005 from 111-222-234-***.hogehoge.com
      $
  • scp
    • オプション-iの場合
      $ scp -i ~/.ssh/id_dsa.nopass user@remotehost:/h
      ome/user/test.txt ./
      test.txt                                      100%    6    22.7KB/s   00:00
      $
    • オプション-oの場合
      $ scp -oIdentityFile=~/.ssh/id_dsa.nopass user@remotehost:/h
      ome/user/test.txt ./
      test.txt                                      100%    6    22.7KB/s   00:00
      $



 - GNU/Linux, network, ssh , ,