tag:crieit.net,2005:https://crieit.net/tags/%E5%85%AC%E9%96%8B%E9%8D%B5%E8%AA%8D%E8%A8%BC%E6%96%B9%E5%BC%8F%E3%80%80/feed 「公開鍵認証方式 」の記事 - Crieit Crieitでタグ「公開鍵認証方式 」に投稿された最近の記事 2022-08-15T02:03:36+09:00 https://crieit.net/tags/%E5%85%AC%E9%96%8B%E9%8D%B5%E8%AA%8D%E8%A8%BC%E6%96%B9%E5%BC%8F%E3%80%80/feed tag:crieit.net,2005:PublicArticle/17717 2021-10-20T03:32:37+09:00 2022-08-15T02:03:36+09:00 https://crieit.net/posts/OCI-AWS OCIやAWS上のサーバの環境構築 <h1 id="1.公開鍵認証方式でssh接続"><a href="#1%EF%BC%8E%E5%85%AC%E9%96%8B%E9%8D%B5%E8%AA%8D%E8%A8%BC%E6%96%B9%E5%BC%8F%E3%81%A7ssh%E6%8E%A5%E7%B6%9A">1.公開鍵認証方式でssh接続</a></h1> <h2 id="1-1.キーの作成(おまけ)"><a href="#1-1%EF%BC%8E%E3%82%AD%E3%83%BC%E3%81%AE%E4%BD%9C%E6%88%90%28%E3%81%8A%E3%81%BE%E3%81%91%29">1-1.キーの作成(おまけ)</a></h2> <p>Windowsのコマンドプロンプトで,</p> <pre><code>>ssh-keygen -b 4096 </code></pre> <p>(4096は任意鍵長)と打つと,<code>~/.ssh</code>に公開鍵と秘密鍵が作成される.例えばユーザー名がTanakaさんなら.<code>C:\Users\Tanaka\.ssh</code>に作成される.<br /> 秘密鍵のファイル名が<code>id_rsa</code>で,公開鍵が<code>id_rsa.pub</code>となる.</p> <p>以降の話ではこの節はあまり関係ない.</p> <h2 id="1-2.OCIでインスタンス作成"><a href="#1-2%EF%BC%8EOCI%E3%81%A7%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E4%BD%9C%E6%88%90">1-2.OCIでインスタンス作成</a></h2> <p>sshキーにスポットをあてて話を進める.<br /> <a href="https://crieit.now.sh/upload_images/01951106d2320a385b15633467219304616f061fd5cf3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/01951106d2320a385b15633467219304616f061fd5cf3.png?mw=700" alt="image.png" /></a></p> <h3 id="1-2-1.キーペアを持っていない場合"><a href="#1-2-1%EF%BC%8E%E3%82%AD%E3%83%BC%E3%83%9A%E3%82%A2%E3%82%92%E6%8C%81%E3%81%A3%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88">1-2-1.キーペアを持っていない場合</a></h3> <p>[ SSHキーの追加 ]欄で,[キー・ペアを自動で生成 ]を選択し,<br /> [公開キーの保存]→[秘密キーの保存]をクリックすることでキーペア取得できる.<br /> この2つのファイルは大切に保管しましょう.(今後も使いまわせるので)</p> <p>保存された2つのファイルは,<br /> 公開鍵が<code>~.key.pub</code><br /> 秘密鍵が<code>~.key</code><br /> となっている.</p> <p>この2つのファイルはどこか好きなディレクトリに格納しとこう.<br /> 例:<code>C:\Users\Tanaka\Documents\Oracle</code></p> <p>インスタンスを作成.</p> <h3 id="1-2-2.キーペアを持っている場合"><a href="#1-2-2%EF%BC%8E%E3%82%AD%E3%83%BC%E3%83%9A%E3%82%A2%E3%82%92%E6%8C%81%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E5%A0%B4%E5%90%88">1-2-2.キーペアを持っている場合</a></h3> <p>OCIでインスタンスを作成する際,[sshキーの追加]欄がある.<br /> ここで,[公開キー・ファイル(.pub)のアップロード]を選択し,<br /> 自身の公開鍵のファイル(~.key.pub)をドラッグ&ドロップでアップロード.<br /> インスタンスを作成.</p> <h2 id="1-3.ssh接続"><a href="#1-3%EF%BC%8Essh%E6%8E%A5%E7%B6%9A">1-3.ssh接続</a></h2> <p>sshクライアントを起動してssh接続を試みる.</p> <h3 id="1-3-1.TeraTermの場合"><a href="#1-3-1%EF%BC%8ETeraTerm%E3%81%AE%E5%A0%B4%E5%90%88">1-3-1.TeraTermの場合</a></h3> <p>TeraTermを起動させたら[ ホスト(T) ]にIPアドレスを書いて,<br /> その下の[ TCPポート ]欄に「22」と書く※1.<br /> [ ok ]ボタンを押す.</p> <p>[ ユーザ名 ]に指定されたユーザ名を記入.<br /> OCIのCentOSの初期ユーザ名は「opc」※2.</p> <p>[ 認証方式 ]で,[ RSA/DSA/ECDSA/ED25119鍵を使う]を選択し,<br /> 1-1節で作成した秘密鍵のパスを指定.<br /> 例:</p> <pre><code>C:\Users\Tanaka\Documents\Oracle\~.key </code></pre> <p>これで接続できる.</p> <p>※1:sshのデフォルトのport番号が22.これは後で利用できるport番号内で任意番号に変更可能<br /> ※2:AWSのRHEL8の場合は「ec2-user」</p> <h3 id="1-3-2.PowerShellの場合"><a href="#1-3-2%EF%BC%8EPowerShell%E3%81%AE%E5%A0%B4%E5%90%88">1-3-2.PowerShellの場合</a></h3> <p>これだけ.</p> <pre><code>> ssh -i [秘密鍵のパス] [ユーザ名]@[IPアドレス] </code></pre> <p>以上。</p> <h1 id="2. 環境設定"><a href="#%EF%BC%92.+%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A">2. 環境設定</a></h1> <h2 id="2-1.パスワード設定"><a href="#2-1%EF%BC%8E%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E8%A8%AD%E5%AE%9A">2-1.パスワード設定</a></h2> <p>ログインできたら,rootユーザとログインユーザ(今回であればopc)のPassを任意に設定しとく.<br /> まずはroot</p> <pre><code>$sudo passwd root (パスワード聞かれるので適当に打つ) (切り替わるか確かめる) $ su - </code></pre> <p>次は別のユーザ</p> <pre><code>#passwd opc </code></pre> <h2 id="2-2.ssh接続のconfファイル書き換え"><a href="#2-2%EF%BC%8Essh%E6%8E%A5%E7%B6%9A%E3%81%AEconf%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E6%9B%B8%E3%81%8D%E6%8F%9B%E3%81%88">2-2.ssh接続のconfファイル書き換え</a></h2> <p>セキュリティの観点から,ssh接続のconfigファイルを書き換える.</p> <pre><code>$ sudo vi /etc/ssh/sshd_config </code></pre> <p>とやるといろいろ書き換えられる.<br /> 英語読めば何の設定なのか想像つくと思うのでてきとーにやっとく.</p> <pre><code>Port 11326 (←port番号を22から変更) PermitRootLogin no (←Rootユーザでログインできないようにする) PubkeyAuthentication yes (←公開鍵認証方式) PasswordAuthentication no (←パスワード認証を無効化) などなど </code></pre> <p>これではまだ反映されないので,reloadしてメモリの設定を読み込ませる.<br /> (restartじゃないよ)</p> <pre><code>$ sudo systemctl reload sshd.service </code></pre> <h2 id="2-3.タイムゾーンを変更"><a href="#2-3%EF%BC%8E%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%BE%E3%83%BC%E3%83%B3%E3%82%92%E5%A4%89%E6%9B%B4">2-3.タイムゾーンを変更</a></h2> <p>タイムゾーンを東京に変更しとく.</p> <pre><code>$ sudo timedatectl set-timezone Asia/Tokyo </code></pre> <h2 id="2-4.変更確かめ"><a href="#2-4%EF%BC%8E%E5%A4%89%E6%9B%B4%E7%A2%BA%E3%81%8B%E3%82%81">2-4.変更確かめ</a></h2> <p>Windows端末のPowerShellでPortして疎通確認.</p> <pre><code>> Test-NetConnection [ IPアドレス ] -Port [ Port番号 ] </code></pre> <h1 id="3.yum"><a href="#3%EF%BC%8Eyum">3.yum</a></h1> <p>参考:https://access.redhat.com/ja/articles/3221791</p> <p>/etc/yum.confと/etc/yum.repos.dの二つの領域に分かれる。<br /> ※rhel8からはyumは廃止されdnfに置き換わっている。使い方はほぼ同じ。<br /> 実際、/etc/をみてみると、</p> <pre><code>[root@publicpc1 etc]# ll|grep yum drwxr-xr-x. 2 root root 57 Mar 24 12:32 yum lrwxrwxrwx. 1 root root 12 Nov 12 00:18 yum.conf -> dnf/dnf.conf drwxr-xr-x. 2 root root 217 Mar 24 12:39 yum.repos.d [root@publicpc1 yum]# pwd /etc/yum [root@publicpc1 yum]# ll total 0 lrwxrwxrwx. 1 root root 14 Nov 12 00:18 pluginconf.d -> ../dnf/plugins lrwxrwxrwx. 1 root root 18 Nov 12 00:18 protected.d -> ../dnf/protected.d lrwxrwxrwx. 1 root root 11 Nov 12 00:18 vars -> ../dnf/vars </code></pre> <p>となっている。</p> <h2 id="3-1. yum.conf(dnf.conf)"><a href="#3-1.+yum.conf%28dnf.conf%29">3-1. yum.conf(dnf.conf)</a></h2> <pre><code>[root@publicpc1 etc]# cat yum.conf [main] gpgcheck=1 installonly_limit=3 clean_requirements_on_remove=True best=True skip_if_unavailable=False </code></pre> <p>[main]はセクション名で、ここに記載されているのはyumのグローバルな設定。</p> <pre><code>gpgcheck </code></pre> <p>は署名チェック。1が有効で、0が無効。</p> <h2 id="3-2. yum.repos.d"><a href="#3-2.+yum.repos.d">3-2. yum.repos.d</a></h2> <pre><code>[root@publicpc1 yum.repos.d]# ll total 32 -rw-r--r--. 1 root root 495 May 5 2021 ksplice-ol8.repo -rw-r--r--. 1 root root 759 Apr 13 2021 mysql-ol8.repo -rw-r--r--. 1 root root 253 Mar 20 2021 oci-included-ol8.repo -rw-r--r--. 1 root root 252 Mar 24 12:39 oracle-epel-ol8.repo -rw-r--r--. 1 root root 694 Mar 24 12:39 oraclelinux-developer-ol8.repo -rw-r--r--. 1 root root 2740 Mar 24 12:39 oracle-linux-ol8.repo -rw-r--r--. 1 root root 470 Mar 11 01:09 uek-ol8.repo -rw-r--r--. 1 root root 243 Mar 11 01:09 virt-ol8.repo </code></pre> <p>oracle-linux-ol8.repoの中身を見てみると、ダウンロードする際に参照するURLが記載されている。<br /> ここが間違っていると適切にインストールできなくなる。<br /> ただ、ここを編集することはなさそう。</p> <p>もし社内にあるレポジトリサーバを利用したい場合、対応は2つある。<br /> 1つは、 yum.repos.d配下に~.repoファイルを追加する。<br /> 2つ目は、<code>yum -y install ~</code>で追加する方法。</p> <p>1つ目の場合</p> <pre><code># vim /etc/ yum.repos.d/test.repo [test] name=test baseurl=http://xxx.xxx/xxx.xxx/xxx gpgcheck=0 </code></pre> <p>など。</p> <h1 id="4.踏み台サーバの準備"><a href="#4%EF%BC%8E%E8%B8%8F%E3%81%BF%E5%8F%B0%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AE%E6%BA%96%E5%82%99">4.踏み台サーバの準備</a></h1> <h2 id="4-1.キーペアの準備"><a href="#4-1%EF%BC%8E%E3%82%AD%E3%83%BC%E3%83%9A%E3%82%A2%E3%81%AE%E6%BA%96%E5%82%99">4-1.キーペアの準備</a></h2> <h2 id="4-2.scpでファイル転送"><a href="#4-2%EF%BC%8Escp%E3%81%A7%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E8%BB%A2%E9%80%81">4-2.scpでファイル転送</a></h2> <h2 id="4-3.公開鍵認証の読み込みパス指定"><a href="#4-3%EF%BC%8E%E5%85%AC%E9%96%8B%E9%8D%B5%E8%AA%8D%E8%A8%BC%E3%81%AE%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E3%83%91%E3%82%B9%E6%8C%87%E5%AE%9A">4-3.公開鍵認証の読み込みパス指定</a></h2> <p><a href="https://crieit.net/posts/OCI-CentOS">https://crieit.net/posts/OCI-CentOS</a></p> <h1 id="5. Port ForwardingでRDP接続"><a href="#5.+Port+Forwarding%E3%81%A7RDP%E6%8E%A5%E7%B6%9A">5. Port ForwardingでRDP接続</a></h1> <h2 id="5.1 sshトンネリング"><a href="#5.1+ssh%E3%83%88%E3%83%B3%E3%83%8D%E3%83%AA%E3%83%B3%E3%82%B0">5.1 sshトンネリング</a></h2> <h1 id="6.Pythonインストール"><a href="#6%EF%BC%8EPython%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">6.Pythonインストール</a></h1> <h1 id="7.OCI CLIの利用方法"><a href="#7%EF%BC%8EOCI+CLI%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95">7.OCI CLIの利用方法</a></h1> <p>公式ドキュメントを参考に進めていくとインストールできる。</p> <h2 id="7.1 Oracle Linux8でオンラインインストール"><a href="#7.1+Oracle+Linux8%E3%81%A7%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">7.1 Oracle Linux8でオンラインインストール</a></h2> <p>参考<br /> OCIのクイックインストール:https://docs.oracle.com/ja-jp/iaas/Content/API/SDKDocs/cliinstall.htm#InstallingCLI__linux_and_unix</p> <h3 id="7.1.1 dnfでインストール"><a href="#7.1.1+dnf%E3%81%A7%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">7.1.1 dnfでインストール</a></h3> <p>dnfを使用してCLIをインストール</p> <pre><code>$ sudo dnf -y install oraclelinux-developer-release-el8 We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for opc: Ksplice for Oracle Linux 8 (x86_64) 16 MB/s | 1.2 MB 00:00 MySQL 8.0 for Oracle Linux 8 (x86_64) 9.1 MB/s | 2.4 MB 00:00 MySQL 8.0 Tools Community for Oracle Linux 8 (x86_64) 5.2 MB/s | 308 kB 00:00 MySQL 8.0 Connectors Community for Oracle Linux 8 (x86_64) 214 kB/s | 23 kB 00:00 Oracle Software for OCI users on Oracle Linux 8 (x86_64) 38 MB/s | 46 MB 00:01 Oracle Linux 8 BaseOS Latest (x86_64) 62 MB/s | 49 MB 00:00 Oracle Linux 8 Application Stream (x86_64) 48 MB/s | 37 MB 00:00 Oracle Linux 8 Addons (x86_64) 21 MB/s | 4.9 MB 00:00 Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linu 63 MB/s | 53 MB 00:00 Package oraclelinux-developer-release-el8-1.0-7.el8.x86_64 is already installed. Dependencies resolved. Nothing to do. Complete! </code></pre> <p>続いて、cliをインストール</p> <pre><code>$ sudo dnf install python36-oci-cli Last metadata expiration check: 0:00:34 ago on Sat 13 Aug 2022 03:23:12 PM GMT. Dependencies resolved. =============================================================================================== Package Arch Version Repository Size =============================================================================================== Installing: python36-oci-cli noarch 3.14.0-1.el8 ol8_oci_included 14 M Upgrading: python36-oci-sdk x86_64 2.78.0-1.el8 ol8_oci_included 23 M Installing dependencies: python3-arrow noarch 1.1.1-1.el8 ol8_oci_included 119 k python3-jmespath noarch 0.10.0-1.el8 ol8_oci_included 48 k python3-prompt-toolkit noarch 3.0.29-1.0.2.el8 ol8_oci_included 669 k python3-terminaltables noarch 3.1.0-1.0.1.el8 ol8_oci_included 31 k python3-typing-extensions noarch 3.7.4.2-1.el8 ol8_oci_included 47 k python3-wcwidth noarch 0.2.5-3.el8 ol8_oci_included 48 k Transaction Summary =============================================================================================== Install 7 Packages Upgrade 1 Package Total download size: 38 M Is this ok [y/N]: y Downloading Packages: (1/8): python3-jmespath-0.10.0-1.el8.noarch.rpm 520 kB/s | 48 kB 00:00 (2/8): python3-prompt-toolkit-3.0.29-1.0.2.el8.noarch.rpm 4.2 MB/s | 669 kB 00:00 (3/8): python3-arrow-1.1.1-1.el8.noarch.rpm 740 kB/s | 119 kB 00:00 (4/8): python3-terminaltables-3.1.0-1.0.1.el8.noarch.rpm 298 kB/s | 31 kB 00:00 (5/8): python3-typing-extensions-3.7.4.2-1.el8.noarch.rpm 739 kB/s | 47 kB 00:00 (6/8): python3-wcwidth-0.2.5-3.el8.noarch.rpm 711 kB/s | 48 kB 00:00 (7/8): python36-oci-cli-3.14.0-1.el8.noarch.rpm 46 MB/s | 14 MB 00:00 (8/8): python36-oci-sdk-2.78.0-1.el8.x86_64.rpm 37 MB/s | 23 MB 00:00 ----------------------------------------------------------------------------------------------- Total 45 MB/s | 38 MB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Upgrading : python36-oci-sdk-2.78.0-1.el8.x86_64 1/9 Installing : python3-wcwidth-0.2.5-3.el8.noarch 2/9 Installing : python3-prompt-toolkit-3.0.29-1.0.2.el8.noarch 3/9 Installing : python3-typing-extensions-3.7.4.2-1.el8.noarch 4/9 Installing : python3-arrow-1.1.1-1.el8.noarch 5/9 Installing : python3-terminaltables-3.1.0-1.0.1.el8.noarch 6/9 Installing : python3-jmespath-0.10.0-1.el8.noarch 7/9 Installing : python36-oci-cli-3.14.0-1.el8.noarch 8/9 Cleanup : python36-oci-sdk-2.75.1-1.el8.x86_64 9/9 Running scriptlet: python36-oci-sdk-2.75.1-1.el8.x86_64 9/9 Verifying : python3-arrow-1.1.1-1.el8.noarch 1/9 Verifying : python3-jmespath-0.10.0-1.el8.noarch 2/9 Verifying : python3-prompt-toolkit-3.0.29-1.0.2.el8.noarch 3/9 Verifying : python3-terminaltables-3.1.0-1.0.1.el8.noarch 4/9 Verifying : python3-typing-extensions-3.7.4.2-1.el8.noarch 5/9 Verifying : python3-wcwidth-0.2.5-3.el8.noarch 6/9 Verifying : python36-oci-cli-3.14.0-1.el8.noarch 7/9 Verifying : python36-oci-sdk-2.78.0-1.el8.x86_64 8/9 Verifying : python36-oci-sdk-2.75.1-1.el8.x86_64 9/9 Upgraded: python36-oci-sdk-2.78.0-1.el8.x86_64 Installed: python3-arrow-1.1.1-1.el8.noarch python3-jmespath-0.10.0-1.el8.noarch python3-prompt-toolkit-3.0.29-1.0.2.el8.noarch python3-terminaltables-3.1.0-1.0.1.el8.noarch python3-typing-extensions-3.7.4.2-1.el8.noarch python3-wcwidth-0.2.5-3.el8.noarch python36-oci-cli-3.14.0-1.el8.noarch Complete! </code></pre> <p>インストール完了したらバージョン確認。</p> <pre><code>$ oci --version 3.14.0 </code></pre> <h3 id="7.1.2 構成ファイルの設定"><a href="#7.1.2+%E6%A7%8B%E6%88%90%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E8%A8%AD%E5%AE%9A">7.1.2 構成ファイルの設定</a></h3> <pre><code>$ oci setup config This command provides a walkthrough of creating a valid CLI config file. The following links explain where to find the information required by this script: User API Signing Key, OCID and Tenancy OCID: https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#Other Region: https://docs.cloud.oracle.com/Content/General/Concepts/regions.htm General config documentation: https://docs.cloud.oracle.com/Content/API/Concepts/sdkconfig.htm Enter a location for your config [/home/opc/.oci/config]:特に指定しなくてok Enter a user OCID: OCIコンソールよりユーザのOCIDをコピペ Enter a tenancy OCID: OCIコンソールよりコピペ Enter a region by index or name(e.g. 1: af-johannesburg-1, 2: ap-chiyoda-1, 3: ap-chuncheon-1, 4: ap-dcc-canberra-1, 5: ap-hyderabad-1, 6: ap-ibaraki-1, 7: ap-melbourne-1, 8: ap-mumbai-1, 9: ap-osaka-1, 10: ap-seoul-1, 11: ap-singapore-1, 12: ap-sydney-1, 13: ap-tokyo-1, 14: ca-montreal-1, 15: ca-toronto-1, 16: eu-amsterdam-1, 17: eu-frankfurt-1, 18: eu-marseille-1, 19: eu-milan-1, 20: eu-paris-1, 21: eu-stockholm-1, 22: eu-zurich-1, 23: il-jerusalem-1, 24: me-abudhabi-1, 25: me-dcc-muscat-1, 26: me-dubai-1, 27: me-jeddah-1, 28: mx-queretaro-1, 29: sa-santiago-1, 30: sa-saopaulo-1, 31: sa-vinhedo-1, 32: uk-cardiff-1, 33: uk-gov-cardiff-1, 34: uk-gov-london-1, 35: uk-london-1, 36: us-ashburn-1, 37: us-gov-ashburn-1, 38: us-gov-chicago-1, 39: us-gov-phoenix-1, 40: us-langley-1, 41: us-luke-1, 42: us-phoenix-1, 43: us-sanjose-1): 13(OCIコンソールをブラウザで開いてURLを見るとわかる Do you want to generate a new API Signing RSA key pair? (If you decline you will be asked to supply the path to an existing key.) [Y/n]: Y Enter a directory for your keys to be created [/home/opc/.oci]: Enter a name for your key [oci_api_key]: Public key written to: /home/opc/.oci/oci_api_key_public.pem Enter a passphrase for your private key (empty for no passphrase): Private key written to: /home/opc/.oci/oci_api_key.pem Fingerprint: ~なんか記載されている~ Config written to /home/opc/.oci/config </code></pre> <p>完了すると、~/.oci配下にoci_api_key_public.pemが作成されているはず。このキーをOCIコンソールで<br /> アイデンティティ>ユーザー>ユーザーの詳細<br /> に行くと、画面サブに「APIキー」があるのでクリックし、oci_api_key_public.pemの中身を張り付ける。</p> <p>試しに実行してみる。</p> <pre><code>$ oci compute instance list --all Usage: oci compute instance list [OPTIONS] Error: Missing option(s) --compartment-id. </code></pre> <p>コンパートメントIDをオプションで追記しろとのこと。</p> <pre><code>$ oci compute instance list --compartment-id <OCID貼り付け> いっぱい表示された </code></pre> <p>ただ、毎回コンパートメントIDを打ち込むのは面倒なので、oci_cli_rcファイルに書き込むことでコマンド入力時にオプション付ける必要がないようにする。</p> <pre><code>$ vi ~/.oci/oci_cli_rc [DEFAULT] compartment-id=<コンパートメントID> </code></pre> <h3 id="7.1.3 プライベートサブネットからOCI CLIを実行する方法"><a href="#7.1.3+%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88%E3%82%B5%E3%83%96%E3%83%8D%E3%83%83%E3%83%88%E3%81%8B%E3%82%89OCI+CLI%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95">7.1.3 プライベートサブネットからOCI CLIを実行する方法</a></h3> <p>OCI CLIでコマンドを実行するとAPIエンドポイントと通信を行う。そのため、プライベートサブネットからAPIを発行してエンドポイントへ到達させるにはいくつかの設定が必要になる。方法は以下3つ。<br /> ①NATゲートウェイを利用してインターネットに出ていく。②サービスゲートウェイを使用して、OCI環境内に閉じた通信を行う。③プロキシを使用してインターネットへ出ていくルートを作る。</p> <p>なずは何も設定しない状態でプライベートサブネットからコマンドを実行してみる。その際、APIの実行履歴を出力させるためにデバックオプション--debug(または-d)をつけて実行する。</p> <pre><code>$ oci compute instance list --all -d ~省略~ DEBUG:oci.base_client.140243454499864:Endpoint: https://iaas.ap-tokyo-1.oraclecloud.com/20160918 INFO:oci.base_client.140243454499864: 2022-08-14 15:05:12.072064: Request: GET https://iaas.ap-tokyo-1.oraclecloud.com/20160918/instances INFO:oci.base_client.140243454499864: 2022-08-14 15:05:23.487363: Request: GET https://iaas.ap-tokyo-1.oraclecloud.com/20160918/instances ~つづく~ </code></pre> <p>となり、エンドポイントへの接続を所定の回数試行して失敗すると、以下のようなエラーが返ってくる。</p> <pre><code>oci.exceptions.ConnectTimeout: (MaxRetryError("OCIConnectionPool(host='iaas.ap-tokyo-1.oraclecloud.com', port=443): Max retries exceeded with url: /20160918/instances?compartmentId=ocid1.compartment.oc1..aaaaaaaantybfae5pn7h77jmgcwgzg2hm27gv6whsiwhmo54ycefc3sxyiwa (Caused by ConnectTimeoutError(<oci.base_client.OCIConnection object at 0x7f8cf8e2f2b0>, 'Connection to iaas.ap-tokyo-1.oraclecloud.com timed out. (connect timeout=10.0)'))",), 'Request Endpoint: GET https://iaas.ap-tokyo-1.oraclecloud.com/20160918/instances See https://docs.oracle.com/en-us/iaas/Content/API/Concepts/sdk_troubleshooting.htm for help troubleshooting this error, or contact support and provide this full error message.') </code></pre> <p>実際、エンドポイント(iaas.ap-tokyo-1.oraclecloud.com)にpingを打っても返ってこない。</p> <h4 id="7.1.3.1 NATゲートウェイの利用"><a href="#7.1.3.1+NAT%E3%82%B2%E3%83%BC%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A4%E3%81%AE%E5%88%A9%E7%94%A8">7.1.3.1 NATゲートウェイの利用</a></h4> <p>NATゲートウェイを作成して、プライベートサブネットのルート表に追加させる。</p> <p>まずは、<br /> ネットワーキング>仮想クラウド・ネットワーク>仮想クラウド・ネットワークの詳細>NATゲートウェイ<br /> から「NATゲートウェイの作成」を行う。作成したNATゲートウェイをルート表のルート・ルールに追加する。<br /> <a href="https://crieit.now.sh/upload_images/01951106d2320a385b1563346721930462f9118f303fa.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/01951106d2320a385b1563346721930462f9118f303fa.png?mw=700" alt="image.png" /></a></p> <p>追加できたら、まずはエンドポイント(iaas.ap-tokyo-1.oraclecloud.com)にpingを打つ。きっと返ってくるはずだ。<br /> エンドポイントへの疎通が確認できたら、OCIコマンドを実行してみよう。</p> <pre><code>$ oci compute instance list --all -d </code></pre> <p>インスタンス情報が出力されたと思う。</p> <h4 id="7.1.3.2 サービスゲートウェイの利用"><a href="#7.1.3.2+%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%82%B2%E3%83%BC%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A4%E3%81%AE%E5%88%A9%E7%94%A8">7.1.3.2 サービスゲートウェイの利用</a></h4> <p>社内ルールで、むやみにインターネットに出ていける設定をしてはいけない場合もあるはず。そういった場合には、OCIのVCN内に閉じた環境でエンドポイントへの通信できるサービスゲートウェイを利用するといい。<br /> ネットワーキング>仮想クラウド・ネットワーク>仮想クラウド・ネットワークの詳細>サービス・ゲートウェイ<br /> からサービスゲートウェイを作成する。<br /> <a href="https://crieit.now.sh/upload_images/01951106d2320a385b1563346721930462f914cd84d54.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/01951106d2320a385b1563346721930462f914cd84d54.png?mw=700" alt="image.png" /></a></p> <p>作成したら、さきほどと同じようにプライベートサブネットのルート表のルート・ルールに追加する。<br /> <a href="https://crieit.now.sh/upload_images/01951106d2320a385b1563346721930462f9151e5f6a7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/01951106d2320a385b1563346721930462f9151e5f6a7.png?mw=700" alt="image.png" /></a></p> <p>追加できたら、まずはエンドポイント(iaas.ap-tokyo-1.oraclecloud.com)にpingを打つ。きっと返ってくるはずだ。<br /> エンドポイントへの疎通が確認できたら、OCIコマンドを実行してみよう。</p> <pre><code>$ oci compute instance list --all -d </code></pre> <p>インスタンス情報が出力されたと思う。</p> <h4 id="7.1.3.3 プロキシを使用してインターネット経由のルーティング"><a href="#7.1.3.3+%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E7%B5%8C%E7%94%B1%E3%81%AE%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0">7.1.3.3 プロキシを使用してインターネット経由のルーティング</a></h4> <p>https通信を行う際にプロキシ経由するように設定をするだけでよい。</p> <pre><code>$ export HTTPS_PROXY=http://10.1.1.45:3128 </code></pre> <p>設定した後はOCI CLIコマンドを実行すると成功するはずだ。</p> <h3 id="7.1.4 インスタンスプリンシパルの設定"><a href="#7.1.4+%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B7%E3%83%91%E3%83%AB%E3%81%AE%E8%A8%AD%E5%AE%9A">7.1.4 インスタンスプリンシパルの設定</a></h3> <h2 id="7.2 インスタンスプリンシパルの設定"><a href="#7.2+%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B7%E3%83%91%E3%83%AB%E3%81%AE%E8%A8%AD%E5%AE%9A">7.2 インスタンスプリンシパルの設定</a></h2> <p>さきほどまではAPIを用いてユーザ認証を実行してきた。それとは別に、インスタンスに対して実行権限を付与させる方法がある。それがインスタンスプリンシパル。プリンシパルは操作の実行主体を指す。</p> <h3 id="7.2.1 別ユーザで実行する"><a href="#7.2.1+%E5%88%A5%E3%83%A6%E3%83%BC%E3%82%B6%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B">7.2.1 別ユーザで実行する</a></h3> <h2 id="7.3 仮想環境の作成"><a href="#7.3+%E4%BB%AE%E6%83%B3%E7%92%B0%E5%A2%83%E3%81%AE%E4%BD%9C%E6%88%90">7.3 仮想環境の作成</a></h2> <p>システム全体にCLIをインストールするのは非推奨。</p> <h3 id="7.3.1 仮想環境を構成するディレクトリ作成"><a href="#7.3.1+%E4%BB%AE%E6%83%B3%E7%92%B0%E5%A2%83%E3%82%92%E6%A7%8B%E6%88%90%E3%81%99%E3%82%8B%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E4%BD%9C%E6%88%90">7.3.1 仮想環境を構成するディレクトリ作成</a></h3> <p>仮想環境を構成するディレクトリを作成する。<br /> このディレクトリは、仮想環境をアクティブ化する際に打つパスになるので<br /> よく考えてディレクトリ名はつけるように。</p> <pre><code>[root@publicpc oci]# pwd /opt/oci </code></pre> <h3 id="7.3.2 仮想環境作成"><a href="#7.3.2+%E4%BB%AE%E6%83%B3%E7%92%B0%E5%A2%83%E4%BD%9C%E6%88%90">7.3.2 仮想環境作成</a></h3> <p>まずはPythonのバージョンを確認する。</p> <pre><code>[opc@publicpc ~]$ python --version Python 3.6.8 </code></pre> <p>バージョンに応じた仮想環境作成のコマンドを打つ。</p> <pre><code>python<Pythonのバージョン> -m venv <仮想環境名> [root@publicpc oci]# python3.6 -m venv venv1 </code></pre> <p>/opt/oci配下にvenv1という仮想環境が作成される。</p> <h3 id="7.3.3 仮想環境をアクティブ化"><a href="#7.3.3+%E4%BB%AE%E6%83%B3%E7%92%B0%E5%A2%83%E3%82%92%E3%82%A2%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96%E5%8C%96">7.3.3 仮想環境をアクティブ化</a></h3> <p>OCI CLIのコマンドを打つときは、仮想環境をアクティブ化したうえで実行させる。<br /> アクティブ化させるコマンドは以下の通り。</p> <pre><code>[root@publicpc oci]# source /opt/oci/venv1/bin/activate (venv1) [root@publicpc oci]# </code></pre> <p>ちなみに、非アクティブ化は以下でできる。</p> <pre><code>(venv1) [root@publicpc oci]# deactivate [root@publicpc oci]# </code></pre> <h2 id="7.4 OCI-CLIのオフラインインストール"><a href="#7.4+OCI-CLI%E3%81%AE%E3%82%AA%E3%83%95%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">7.4 OCI-CLIのオフラインインストール</a></h2> <p>会社の社内規則などによってLinuxサーバがインターネット接続できない場合、自分がWindows端末にインストールファイルをダウンロードし、<br /> そのファイルをLinuxサーバに配置して読み込ませることでCLIの実行環境を準備することができる。</p> <p>Github(https://github.com/oracle/oci-cli/releases)から、oci-cli.zipをローカルにダウンロード。<br /> oci-cli.zipを作Linuxサーバに配置し解凍する。</p> <h1 id="8.Ansibleのインストール"><a href="#8%EF%BC%8EAnsible%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">8.Ansibleのインストール</a></h1> <h1 id="9.BlockVolumeのパーティション切りとマウント"><a href="#9%EF%BC%8EBlockVolume%E3%81%AE%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3%E5%88%87%E3%82%8A%E3%81%A8%E3%83%9E%E3%82%A6%E3%83%B3%E3%83%88">9.BlockVolumeのパーティション切りとマウント</a></h1> <h1 id="10.コンテナ"><a href="#10%EF%BC%8E%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A">10.コンテナ</a></h1> kawai_mizugorou