パスワード認証無しでONTAPにログインし、ONTAP CLIを実行する方法


LinuxマシンのシェルからONTAPの状態を拾ったり、設定を投入したりするときにONTAPのパスワード認証が邪魔になることがあります。この場合、ONTAPと鍵交換しておけばパスワード無しでリモートからONTAP CLIを実行し、結果を得ることができます。

また、ONTAPのコマンドの中には[y/n]を聞かれるものがありますが、これをバイパスして常にyを選ぶ設定も紹介します。これによりJP1やZabbixと連携して、外部から特定の時間帯のsysstat結果を拾いたい、みたいなことにも使えると思います。

* WindowsのPowerShellでの手順は以下が参考になります。
https://qiita.com/s_yosh1d/items/7ed8af8d7e8f16ddf040
* Amazon FSx for NetApp ONTAPで設定する場合は、以下の「admin」ユーザを「fsxadmin」ユーザに置き換えて読んでください。


■全体の流れ
(1) Linuxマシンで、ONTAPにログインしたいユーザでssh-keygenを実行
(2) Linuxユーザの公開鍵の確認
(3) ONTAP側に公開鍵でのみログインできる、新しいadminユーザ「adminssh」を作成
(4) adminsshユーザに、Linuxのユーザの公開鍵を登録
(5) LinuxからONTAP CLIを実行

■手順詳細
(1) Linuxマシンで、ONTAPにログインしたいユーザでssh-keygenを実行
以下の実行中にパスワード入力を求められますが、入力せずにエンターで次に進みます。
```
[ec2-user@ip-172-29-2-235 ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ec2-user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Your identification has been saved in /home/ec2-user/.ssh/id_rsa.
Your public key has been saved in /home/ec2-user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:WARjuBFYIHQWSr8QfBDxNZtXzqoV/mzVg2ZGbQSXhMk ec2-user@ip-172-29-2-235.ap-northeast-1.compute.internal
The key's randomart image is:
+---[RSA 2048]----+
|+B=B+=+.....=+. |
|.oO.+.+o+ E+. |
| o.o = o.o . o |
| . o ooo . + |
| . .+S * o |
| o o = . |
| . + |
| . |
| |
+----[SHA256]-----+
```

(2) Linuxユーザの公開鍵の確認
```
[ec2-user@ip-172-29-2-235 ~]$ cat /home/ec2-user/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7gD1MkZE1pePcaN28Qrkq+27vghQTPQ/l3Rq/I+bo+Q4uRrIk9ae40zdN++JrSPWpkTGQ7RJ9pRtfBWYG6U4xK9gG0AoWfXhKHvXFdyIClH/oOjYLQxo3t8gD1zi5prlGhHKfKoRjILzxSDFrWUK5XNL+ly6OpkdGXSGDwhx015yhEQS1VmFpKOXP6tB++8r34JuM9kzBuUlnxSdgGCpRQJ26aDW/WB0WewXQdOTO+OMXTHsg14Yl6Te+A56OL7JIoBHSxK3835xdkCne8K/pLowvrt6/8Mx2fp3Lw6IQjyTQtitxdpzUhtpdpfIFOv0rtxjnf0f9NF8G3AOVfroT ec2-user@ip-172-29-2-235.ap-northeast-1.compute.internal
```

(3) ONTAP側に公開鍵でのみログインできる、新しいadminユーザ「adminssh」を作成
```
sr-a300-02::> security login create -user-or-group-name adminssh -application ?
 console
 http
 ontapi
 rsh
 service-processor
 snmp
 ssh
 telnet
```
```
sr-a300-02::> security login create -user-or-group-name adminssh -application ssh -authentication-method ?
 password
 publickey
 domain
 nsswitch
```

```
sr-a300-02::> security login create -user-or-group-name adminssh -application ssh -authentication-method publickey -role admin
Warning: To use public-key authentication, you must create a public key for user "adminssh".
```

※ -role adminを指定するとなんでもできてしまうアカウントになるので、制限したい場合は-roleの引数を変更してください。
※ FSx for ONTAPの場合は、-roleの引数に以下を選択できます。(ONTAP9.11.1P3の場合)
```
FsxId09146a4d2755be841::*> security login create -user-or-group-name adminssh -application ssh -authentication-method publickey -role ?
  fsxadmin
  vsadmin
  vsadmin-backup
  vsadmin-protocol
  vsadmin-readonly
  vsadmin-snaplock
  vsadmin-volume
```

(4) adminsshユーザに、Linuxのユーザの公開鍵を登録 (公開鍵は""で囲む)
手順(2)で作成した公開鍵を以下のコマンドでONTAPのadminsshユーザに登録します。-publickeyの引数に鍵を指定しますが、間にスペースなどが入っているので、ダブルコーテーション""で囲ってください。
```
sr-a300-02::> security login publickey create -username adminssh -index 0 -publickey "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7gD1MkZE1pePcaN28Qrkq+27vghQTPQ/l3Rq/I+bo+Q4uRrIk9ae40zdN++JrSPWpkTGQ7RJ9pRtfBWYG6U4xK9gG0AoWfXhKHvXFdyIClH/oOjYLQxo3t8gD1zi5prlGhHKfKoRjILzxSDFrWUK5XNL+ly6OpkdGXSGDwhx015yhEQS1VmFpKOXP6tB++8r34JuM9kzBuUlnxSdgGCpRQJ26aDW/WB0WewXQdOTO+OMXTHsg14Yl6Te+A56OL7JIoBHSxK3835xdkCne8K/pLowvrt6/8Mx2fp3Lw6IQjyTQtitxdpzUhtpdpfIFOv0rtxjnf0f9NF8G3AOVfroT ec2-user@ip-172-29-2-235.ap-northeast-1.compute.internal"
```

(5) LinuxからONTAP CLIを実行
ssh -iの引数に秘密鍵(id_rsa)を指定します。id_rsa.pubは公開鍵なのでこれでは接続できません。
[ec2-user@ip-172-29-2-235 ~]$ ssh -i /home/ec2-user/.ssh/id_rsa adminssh@192.168.66.70

ONTAPのversionコマンドを実行してみます。
```
[ec2-user@ip-172-29-2-235 ~]$ ssh -i /home/ec2-user/.ssh/id_rsa adminssh@192.168.66.70 "version"

Last login time: 10/22/2022 14:05:08
NetApp Release 9.8P12: Fri May 13 00:04:00 UTC 2022
```

y/nを聞かれるコマンドを実行します。
・コマンドをセミコロン;でつないで、複数コマンドを実行します。
・「set confirmations off」でy/nが聞かれなくなります。
```
[ec2-user@ip-172-29-2-235 ~]$ ssh -i /home/ec2-user/.ssh/id_rsa adminssh@192.168.66.70 "set -confirmations off ; version ; set diag ; object-store config ? ; version"

This is your first recorded login.
NetApp Release 9.8P12: Fri May 13 00:04:00 UTC 2022

  create                      ambiguous command
  delete                      ambiguous command
  modify                      ambiguous command
  show                        ambiguous command
  dblade>                     *The dblade directory
  fabricpool_pvr>             *The fabricpool_pvr directory
  rename                      Rename an existing object store configuration

NetApp Release 9.8P12: Fri May 13 00:04:00 UTC 2022
```

関連情報は以下に今後追記予定です。