<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SSH on ポンコツ地方エンジニアの技術ブログ</title><link>https://blog-0847c6.gitlab.io/tags/ssh/</link><description>Recent content in SSH on ポンコツ地方エンジニアの技術ブログ</description><generator>Hugo -- gohugo.io</generator><language>ja-jp</language><lastBuildDate>Wed, 03 Jun 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://blog-0847c6.gitlab.io/tags/ssh/index.xml" rel="self" type="application/rss+xml"/><item><title>VS Code で WSL 上の SSH の設定を使って Remote SSH で接続する</title><link>https://blog-0847c6.gitlab.io/posts/2026/06/03/vscode-remote-ssh/</link><pubDate>Wed, 03 Jun 2026 00:00:00 +0900</pubDate><guid>https://blog-0847c6.gitlab.io/posts/2026/06/03/vscode-remote-ssh/</guid><description>&lt;p&gt;以下に Windows の bat ファイルを使って WSL の SSH クライアントを呼び出す方法が書いてあったので、やり方をまとめてみました。&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://github.com/microsoft/vscode-remote-release/issues/937#issuecomment-578416517" target="_blank" rel="noopener"
 &gt;https://github.com/microsoft/vscode-remote-release/issues/937#issuecomment-578416517&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;尚、上記のやり方だと Windows 側の設定が使えなくなります。
私はそれで問題ありませんが、併用したいという場合の解決策は以下で提示されていました。&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://zenn.dev/kurusugawa/articles/vscode-remote-ssh-with-wsl" target="_blank" rel="noopener"
 &gt;https://zenn.dev/kurusugawa/articles/vscode-remote-ssh-with-wsl&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="概要"&gt;&lt;a href="#%e6%a6%82%e8%a6%81" class="header-anchor"&gt;&lt;/a&gt;概要
&lt;/h2&gt;&lt;p&gt;VS Codeの「Remote - SSH」拡張機能はデフォルトでWindows側のOpenSSH（またはGit for WindowsのSSH）を使用するため、WSL（Linux）側に設定した &lt;code&gt;~/.ssh/config&lt;/code&gt; や鍵、ControlMasterなどの機能を利用することができません。&lt;/p&gt;
&lt;p&gt;解決策は、「Windows側でダミーのバッチファイル（&lt;code&gt;.bat&lt;/code&gt;）を作成し、その中からWSLの &lt;code&gt;ssh&lt;/code&gt; コマンドを呼び出すようにVS Codeに設定する」という方法です。&lt;/p&gt;
&lt;h2 id="設定手順"&gt;&lt;a href="#%e8%a8%ad%e5%ae%9a%e6%89%8b%e9%a0%86" class="header-anchor"&gt;&lt;/a&gt;設定手順
&lt;/h2&gt;&lt;h3 id="1-バッチファイルsshbatの作成"&gt;&lt;a href="#1-%e3%83%90%e3%83%83%e3%83%81%e3%83%95%e3%82%a1%e3%82%a4%e3%83%absshbat%e3%81%ae%e4%bd%9c%e6%88%90" class="header-anchor"&gt;&lt;/a&gt;1. バッチファイル（&lt;code&gt;ssh.bat&lt;/code&gt;）の作成
&lt;/h3&gt;&lt;p&gt;Windows　側の適当なフォルダ（例: &lt;code&gt;C:\Users\ユーザー名\ssh.bat&lt;/code&gt; など）に &lt;code&gt;ssh.bat&lt;/code&gt; という名前のファイルを作成し、以下の内容を記述します。&lt;/p&gt;
&lt;p&gt;※バッチファイルを作成する際は、文字コード（エンコーディング）を &lt;strong&gt;「ANSI」または「UTF-8」&lt;/strong&gt; で保存してください。（UTF-16だと正しく動作しない場合があります）&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;@echo off
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;C:&lt;span class="se"&gt;\W&lt;/span&gt;indows&lt;span class="se"&gt;\S&lt;/span&gt;ystem32&lt;span class="se"&gt;\w&lt;/span&gt;sl.exe bash -ic &lt;span class="s2"&gt;&amp;#34;ssh %*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-vs-codewindows側の-settingsjson-の編集"&gt;&lt;a href="#2-vs-codewindows%e5%81%b4%e3%81%ae-settingsjson-%e3%81%ae%e7%b7%a8%e9%9b%86" class="header-anchor"&gt;&lt;/a&gt;2. VS Code（Windows側）の &lt;code&gt;settings.json&lt;/code&gt; の編集
&lt;/h3&gt;&lt;p&gt;次に、VS Codeが標準の SSH ではなく、今作成したバッチファイルを使用するように設定します。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Windows側でVS Codeを開きます。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl + ,&lt;/code&gt; で設定を開き、画面右上の「設定(JSON)を開く」アイコンをクリックして settings.json を開きます。&lt;/li&gt;
&lt;li&gt;以下の2つの設定項目を追加（または既存のものを修正）します。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// 1で作成したバッチファイルの「絶対パス」を指定（バックスラッシュは2つ重ねる）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;remote.SSH.path&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;C:\\Users\\あなたのユーザー名\\bin\\ssh.bat&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// ローカル（Windows）側での不要なサーバープロセスの立ち上げを抑制する
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;remote.SSH.useLocalServer&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="3-リモート接続を実行する"&gt;&lt;a href="#3-%e3%83%aa%e3%83%a2%e3%83%bc%e3%83%88%e6%8e%a5%e7%b6%9a%e3%82%92%e5%ae%9f%e8%a1%8c%e3%81%99%e3%82%8b" class="header-anchor"&gt;&lt;/a&gt;3. リモート接続を実行する
&lt;/h3&gt;&lt;p&gt;設定が完了したら、実際に接続を行います。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;設定を確実に反映させるため、VS Codeを一度完全に閉じて再起動します。&lt;/li&gt;
&lt;li&gt;左下の緑色のリモート接続アイコン（または F1 キーを押して Remote-SSH: Connect to Host&amp;hellip;）をクリックします。&lt;/li&gt;
&lt;li&gt;WSL（Linux）側の ~/.ssh/config に記載されているホスト名（例: oci-ubuntu）を選択します。&lt;/li&gt;
&lt;li&gt;初回接続時のみ「接続先のOSプラットフォーム（Linux / Windows / macOS）」を聞かれるので、Linux を選択します。&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>OCI Bastion 経由でプライベート・サブネット内の Ubuntu インスタンスに SSH で接続</title><link>https://blog-0847c6.gitlab.io/posts/2026/05/27/oci-bastion-ubuntu/</link><pubDate>Wed, 27 May 2026 00:00:00 +0900</pubDate><guid>https://blog-0847c6.gitlab.io/posts/2026/05/27/oci-bastion-ubuntu/</guid><description>&lt;p&gt;前回、Oracle Linux インスタンスへ OCI Bastion 経由で SSH 接続する手順を書きました。&lt;/p&gt;
&lt;p&gt;今回は、前回記事で触れた基本的な構成を前提に、Ubuntu インスタンスを対象とした OCI Bastion 経由の SSH 接続手順だけをまとめます。&lt;br&gt;
Oracle Linux と共通する VCN / Bastion の作成や一般的なネットワーク設定は省略し、Ubuntu 固有の注意点に絞って解説します。&lt;/p&gt;
&lt;h2 id="前提"&gt;&lt;a href="#%e5%89%8d%e6%8f%90" class="header-anchor"&gt;&lt;/a&gt;前提
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;ターゲット OCI インスタンスには Ubuntu のイメージを使う&lt;/li&gt;
&lt;li&gt;インスタンスは &lt;strong&gt;プライベートサブネット&lt;/strong&gt; に配置し、&lt;strong&gt;パブリックIPなし&lt;/strong&gt; で作成する&lt;/li&gt;
&lt;li&gt;Bastion サービスは事前に作成済みで、プライベートサブネットをターゲットにしている&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ubuntu-でのインスタンス作成時のポイント"&gt;&lt;a href="#ubuntu-%e3%81%a7%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%b9%e3%82%bf%e3%83%b3%e3%82%b9%e4%bd%9c%e6%88%90%e6%99%82%e3%81%ae%e3%83%9d%e3%82%a4%e3%83%b3%e3%83%88" class="header-anchor"&gt;&lt;/a&gt;Ubuntu でのインスタンス作成時のポイント
&lt;/h2&gt;&lt;h3 id="1-イメージに-ubuntu-を選択する"&gt;&lt;a href="#1-%e3%82%a4%e3%83%a1%e3%83%bc%e3%82%b8%e3%81%ab-ubuntu-%e3%82%92%e9%81%b8%e6%8a%9e%e3%81%99%e3%82%8b" class="header-anchor"&gt;&lt;/a&gt;1. イメージに Ubuntu を選択する
&lt;/h3&gt;&lt;p&gt;インスタンス作成画面のイメージ選択で、&lt;strong&gt;Ubuntu&lt;/strong&gt; を選びます。&lt;br&gt;
OCI の無料枠対象であれば &lt;code&gt;Always Free 適格&lt;/code&gt; のマークを確認してください。&lt;br&gt;
私は今回 &lt;strong&gt;Ubuntu 24.04 Minimal&lt;/strong&gt; を選択しました。&lt;/p&gt;
&lt;h3 id="2-ネットワーキング設定"&gt;&lt;a href="#2-%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%ad%e3%83%b3%e3%82%b0%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;2. ネットワーキング設定
&lt;/h3&gt;&lt;p&gt;ここは Oracle Linux のときと同じく以下のように設定します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;プライベートサブネットを選択する&lt;/li&gt;
&lt;li&gt;パブリックIP の割当ては &lt;strong&gt;なし&lt;/strong&gt; にする&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;SSH キーについても同様です。&lt;/p&gt;
&lt;h2 id="ubuntu-での-bastion-セッション作成"&gt;&lt;a href="#ubuntu-%e3%81%a7%e3%81%ae-bastion-%e3%82%bb%e3%83%83%e3%82%b7%e3%83%a7%e3%83%b3%e4%bd%9c%e6%88%90" class="header-anchor"&gt;&lt;/a&gt;Ubuntu での Bastion セッション作成
&lt;/h2&gt;&lt;p&gt;Bastion 自体は、Oracle Linux のときに作成済みなのでそれを使います。&lt;br&gt;
ただ、セッションの作成方法が異なり、Ubuntu の場合は &lt;strong&gt;管理対象 SSH セッションではなく、SSHポート転送セッションを使う&lt;/strong&gt; のが一般的です。&lt;/p&gt;
&lt;h3 id="bastion-セッションの設定"&gt;&lt;a href="#bastion-%e3%82%bb%e3%83%83%e3%82%b7%e3%83%a7%e3%83%b3%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;Bastion セッションの設定
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;OCI コンソールで「アイデンティティとセキュリティ」 &amp;gt; 「要塞（Bastion）」に移動する&lt;/li&gt;
&lt;li&gt;作成した Bastion を選択し、「セッションの作成」をクリックする&lt;/li&gt;
&lt;li&gt;以下のように設定する&lt;/li&gt;
&lt;/ol&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;項目&lt;/th&gt;
 &lt;th&gt;内容&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;セッション・タイプ&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;SSHポート転送セッション&lt;/strong&gt; を選択します。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ターゲット・ホスト&lt;/td&gt;
 &lt;td&gt;Ubuntu インスタンスをIPアドレスまたはインスタンス名で指定します。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;SSH キー&lt;/td&gt;
 &lt;td&gt;ご自身のPCにある SSH 公開鍵をアップロード or ペーストするか、新規に生成します。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="330px" data-flex-grow="137" height="621" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog-0847c6.gitlab.io/posts/2026/05/27/oci-bastion-ubuntu/01.webp" srcset="https://blog-0847c6.gitlab.io/posts/2026/05/27/oci-bastion-ubuntu/01_hu_4bf74bb699c3bcbb.webp 800w, https://blog-0847c6.gitlab.io/posts/2026/05/27/oci-bastion-ubuntu/01.webp 854w" width="854"&gt;&lt;/p&gt;
&lt;ol start="4"&gt;
&lt;li&gt;「セッションの作成」を実行し、状態が &lt;code&gt;アクティブ&lt;/code&gt; になるまで待つ&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="鍵のパーミッション"&gt;&lt;a href="#%e9%8d%b5%e3%81%ae%e3%83%91%e3%83%bc%e3%83%9f%e3%83%83%e3%82%b7%e3%83%a7%e3%83%b3" class="header-anchor"&gt;&lt;/a&gt;鍵のパーミッション
&lt;/h3&gt;&lt;p&gt;Linux の SSH では秘密鍵の権限が緩いと接続が拒否されます。
以下のように &lt;code&gt;chmod 600&lt;/code&gt; で制限しておきます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 例&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod &lt;span class="m"&gt;600&lt;/span&gt; ~/.ssh/&amp;lt;Ubuntuの秘密鍵&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod &lt;span class="m"&gt;600&lt;/span&gt; ~/.ssh/&amp;lt;セッションの秘密鍵&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="ssh-での接続方法"&gt;&lt;a href="#ssh-%e3%81%a7%e3%81%ae%e6%8e%a5%e7%b6%9a%e6%96%b9%e6%b3%95" class="header-anchor"&gt;&lt;/a&gt;SSH での接続方法
&lt;/h2&gt;&lt;h3 id="方法１"&gt;&lt;a href="#%e6%96%b9%e6%b3%95%ef%bc%91" class="header-anchor"&gt;&lt;/a&gt;方法１
&lt;/h3&gt;&lt;p&gt;Bastion セッションがアクティブになったら、右側のメニューから「SSH コマンドのコピー」を使います。
以下のようなコマンドがコピーされます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -i &amp;lt;privateKey&amp;gt; -N -L &amp;lt;localPort&amp;gt;:10.0.1.203:22 -p &lt;span class="m"&gt;22&lt;/span&gt; ...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;項目&lt;/th&gt;
 &lt;th&gt;内容&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;privateKey&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;セッション作成時の秘密鍵のパスを設定します。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;localPort&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;基本的には 「（1024番〜65535番の間であれば）あなたのPCで現在使われていない任意のポート番号」なら何番でも自由 です。&lt;br&gt;よく使われるのは、覚えやすい 12345 や 2222、50022 などだそうです。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;上記を踏まえたうえで、まずは以下のようにコマンドを時刻します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 例&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -i ~/.ssh/bastion_id_rsa -N -L 12345:10.0.1.143:22 -p &lt;span class="m"&gt;22&lt;/span&gt; ...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;すると画面が止まった（待機状態）になります。&lt;br&gt;
これでトンネルが維持されている状態ですので、このターミナル画面は閉じずにそのまま放置してください。&lt;/p&gt;
&lt;p&gt;この状態で新しく別のターミナル画面を開き、以下のコマンドを実行して Ubuntu インスタンスにログインします。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -i ~/.ssh/Ubuntu作成時の秘密鍵 -p &lt;span class="m"&gt;12345&lt;/span&gt; ubuntu@localhost
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote class="alert alert-note"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📝&lt;/span&gt;
 &lt;span class="alert-title"&gt;注記&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;あなたのPCの 12345 番ポート（localhost:12345）に接続することが、そのままトンネルを通じて向こう側のUbuntuに繋がるため、接続先は localhost となります。&lt;br&gt;
OCI の Ubuntu インスタンスのユーザー名は &lt;code&gt;ubuntu&lt;/code&gt; なので、それを指定します。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;h3 id="方法２"&gt;&lt;a href="#%e6%96%b9%e6%b3%95%ef%bc%92" class="header-anchor"&gt;&lt;/a&gt;方法２
&lt;/h3&gt;&lt;p&gt;前述の方法だとターミナルを２つを使わないといけません。&lt;br&gt;
これをコマンド一発でやる場合、以下のように打ちます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -i &amp;lt;Ubuntuの秘密鍵&amp;gt; -o &lt;span class="nv"&gt;ProxyCommand&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ssh -i &amp;lt;セッションの秘密鍵&amp;gt; -W %h:%p -p 22 ... ubuntu@10.0.1.143
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="方法３"&gt;&lt;a href="#%e6%96%b9%e6%b3%95%ef%bc%93" class="header-anchor"&gt;&lt;/a&gt;方法３
&lt;/h3&gt;&lt;p&gt;上記のコマンドも結局めちゃくちゃ長いので、自分のPCの &lt;code&gt;~/.ssh/config&lt;/code&gt; に設定を書いてしまうのが最もスマートです。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;~/.ssh/config&lt;/code&gt; をテキストエディタで開き、以下のように追記します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 1. Bastion（要塞）自体の設定
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Host oci-bastion
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; HostName host.bastion.....oci.oraclecloud.com
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Port 22
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # ★セッションを作成するたびに、以下のUser（ocid...の部分）だけ書き換える
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; User ocid1.bastionsession.oc1.....amaaaaaa...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; IdentityFile ~/.ssh/セッション作成時の秘密鍵
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 2. ターゲットとなるUbuntuの設定
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Host oci-ubuntu
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; HostName 10.0.1.143
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; User ubuntu
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; IdentityFile ~/.ssh/Ubuntu作成時の秘密鍵
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ProxyCommand ssh oci-bastion -W %h:%p
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;設定した後は以下のコマンドだけで接続できます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh oci-ubuntu
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;また、3時間ごとにセッションを作り直した際も、上の User の部分（ocid1.bastionsession&amp;hellip;）だけを書き換えるだけで済みます。&lt;/p&gt;
&lt;p&gt;VS Code の Remote SSH もこれで使えるようになります。&lt;/p&gt;
&lt;h2 id="ubuntu-へのログイン後に確認すること"&gt;&lt;a href="#ubuntu-%e3%81%b8%e3%81%ae%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e5%be%8c%e3%81%ab%e7%a2%ba%e8%aa%8d%e3%81%99%e3%82%8b%e3%81%93%e3%81%a8" class="header-anchor"&gt;&lt;/a&gt;Ubuntu へのログイン後に確認すること
&lt;/h2&gt;&lt;p&gt;接続に成功すると、プロンプトが次のようになります。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ubuntu@&amp;lt;hostname&amp;gt;:~$
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="参考"&gt;&lt;a href="#%e5%8f%82%e8%80%83" class="header-anchor"&gt;&lt;/a&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://documentation.ubuntu.com/oracle/oracle-how-to/use-bastion-to-access-VM/" target="_blank" rel="noopener"
 &gt;https://documentation.ubuntu.com/oracle/oracle-how-to/use-bastion-to-access-VM/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.oracle.com/en-us/iaas/Content/Bastion/Tasks/bastionmanaging.htm" target="_blank" rel="noopener"
 &gt;https://docs.oracle.com/en-us/iaas/Content/Bastion/Tasks/bastionmanaging.htm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://oci-tech.jp/connect-private-compute-via-oci-bastion/" target="_blank" rel="noopener"
 &gt;https://oci-tech.jp/connect-private-compute-via-oci-bastion/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>OCI Bastion 経由でプライベート・サブネット内のインスタンスに SSH で接続</title><link>https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/</link><pubDate>Tue, 26 May 2026 00:00:00 +0900</pubDate><guid>https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/</guid><description>&lt;p&gt;日本語では &lt;strong&gt;要塞&lt;/strong&gt; と訳されています。&lt;/p&gt;
&lt;p&gt;手元の PC からこの Bastion（踏み台の役割）を経由させることで、インスタンス自体にパブリックIPを一切持たせないまま、手元の PC のターミナルから直接 SSH 接続できるようになります。&lt;/p&gt;
&lt;p&gt;設定には、ネットワーク（VCN）の構築段階からいくつか重要なポイント（ルーターやセキュリティ・リストの設定など）があり、結構はまったのでメモとして残しておきます。&lt;/p&gt;
&lt;h2 id="仕組みとメリット"&gt;&lt;a href="#%e4%bb%95%e7%b5%84%e3%81%bf%e3%81%a8%e3%83%a1%e3%83%aa%e3%83%83%e3%83%88" class="header-anchor"&gt;&lt;/a&gt;仕組みとメリット
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;完全無料で、自分で踏み台用のサーバー（EC2など）を1台管理・維持する必要がありません。&lt;/li&gt;
&lt;li&gt;接続が必要なときだけ、手元のPCから「3時間だけ有効な一時的な接続セッション（トンネル）」を発行して侵入します。時間が経てば自動で完全に閉じられるため、セキュリティが非常に強固です。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="環境"&gt;&lt;a href="#%e7%92%b0%e5%a2%83" class="header-anchor"&gt;&lt;/a&gt;環境
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;ホストPC: Ubuntu 22.04&lt;/li&gt;
&lt;li&gt;インスタンス: Oracle Linux 9&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class="alert alert-note"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📝&lt;/span&gt;
 &lt;span class="alert-title"&gt;注記&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;インスタンスが Oracle Linux の場合と、Ubuntu などの他の OS の場合とで方法が一部異なります。&lt;br&gt;
今回は Oracle Linux 9 の場合で、Ubuntu についてはまた別で書きます。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;h2 id="step1-vcn-とサブネットの作成"&gt;&lt;a href="#step1-vcn-%e3%81%a8%e3%82%b5%e3%83%96%e3%83%8d%e3%83%83%e3%83%88%e3%81%ae%e4%bd%9c%e6%88%90" class="header-anchor"&gt;&lt;/a&gt;Step1: VCN とサブネットの作成
&lt;/h2&gt;&lt;p&gt;まずは土台となる仮想クラウド・ネットワーク（VCN）を作成します。&lt;br&gt;
手動で細かく作ることもできますが、「VCNウィザード」を使うのが一番簡単で確実です。&lt;br&gt;
インターネットに出るための「インターネット・ゲートウェイ」だけでなく、プライベートVMがアップデート等で外と通信するための「NATゲートウェイ」や「サービス・ゲートウェイ」も自動で作成・紐付けされます。&lt;/p&gt;
&lt;p&gt;OCIコンソールメニューから 「ネットワーキング」 &amp;gt; 「仮想クラウド・ネットワーク」 に移動します。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="306px" data-flex-grow="127" height="535" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/01-1.webp" width="683"&gt;&lt;/p&gt;
&lt;p&gt;アクションから「VCNウィザードの起動」 をクリックします。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="306px" data-flex-grow="127" height="535" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/01-2.webp" width="683"&gt;&lt;/p&gt;
&lt;p&gt;「インターネット接続性を持つVCNの作成」 を選択し、「VCNウィザードの起動」をクリックします。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="420px" data-flex-grow="175" height="677" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/01-3.webp" srcset="https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/01-3_hu_eeb952604ff3b7e5.webp 800w, https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/01-3.webp 1187w" width="1187"&gt;&lt;/p&gt;
&lt;p&gt;以下の情報を入力・確認して「次へ」進み、作成します。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;項目&lt;/th&gt;
 &lt;th&gt;内容&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;VCN名&lt;/td&gt;
 &lt;td&gt;任意の名前（例: my-bastion-vcn）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;VCNの構成 CIDRブロック&lt;/td&gt;
 &lt;td&gt;10.0.0.0/16（デフォルトのままでOK）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;パブリック・サブネットのCIDR&lt;/td&gt;
 &lt;td&gt;10.0.0.0/24&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;プライベート・サブネットのCIDR&lt;/td&gt;
 &lt;td&gt;10.0.1.0/24&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="step2-インスタンスの作成"&gt;&lt;a href="#step2-%e3%82%a4%e3%83%b3%e3%82%b9%e3%82%bf%e3%83%b3%e3%82%b9%e3%81%ae%e4%bd%9c%e6%88%90" class="header-anchor"&gt;&lt;/a&gt;Step2: インスタンスの作成
&lt;/h2&gt;&lt;p&gt;次に、パブリックIPを持たない接続先のインスタンスを作成します。&lt;br&gt;
「コンピュート」 &amp;gt; 「インスタンス」 から 「インスタンスの作成」 をクリックします。&lt;br&gt;
インスタンスの作成については別記事でも書いているので詳細は割愛しますが、イメージは &lt;strong&gt;Oracle Linux 9&lt;/strong&gt; を選びます。&lt;/p&gt;
&lt;p&gt;そして、ネットワーキングセクションで以下を選択します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;プライベート・サブネット（Step 1で作成したもの）を選択。&lt;/li&gt;
&lt;li&gt;「パブリックIPアドレスの割当て」 で 「パブリックIPなし」 を選択。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="270px" data-flex-grow="112" height="1047" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/02-1.webp" srcset="https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/02-1_hu_650111b0751cc4fc.webp 800w, https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/02-1.webp 1178w" width="1178"&gt;&lt;/p&gt;
&lt;p&gt;SSHキーのセクションでは、ご自身のPCで作成した公開鍵（.pub）をアップロード、または新規で生成して秘密鍵を保存してください。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="679px" data-flex-grow="282" height="329" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/02-2.webp" srcset="https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/02-2_hu_9c0e80c630669994.webp 800w, https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/02-2.webp 931w" width="931"&gt;&lt;/p&gt;
&lt;p&gt;設定したら「作成」をクリックします。&lt;/p&gt;
&lt;h2 id="stes3-bastion-プラグインの有効化-oracle-linux-の場合のみ"&gt;&lt;a href="#stes3-bastion-%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e3%81%ae%e6%9c%89%e5%8a%b9%e5%8c%96-oracle-linux-%e3%81%ae%e5%a0%b4%e5%90%88%e3%81%ae%e3%81%bf" class="header-anchor"&gt;&lt;/a&gt;Stes3: Bastion プラグインの有効化 (Oracle Linux の場合のみ)
&lt;/h2&gt;&lt;p&gt;作成したインスタンスの詳細画面に入り、管理タブの「Oracle Cloud エージェント」で要塞を探し、有効化します。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="470px" data-flex-grow="196" height="709" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/03.webp" srcset="https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/03_hu_3bf5c1beaa28ef3d.webp 800w, https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/03.webp 1391w" width="1391"&gt;&lt;/p&gt;
&lt;p&gt;要塞のステータスが停止済となります。&lt;br&gt;
OSの内部でプログラムのダウンロードや配置が行われており、ステータスが「実行中」になるまでには5分〜10分ほどかかることがあります。&lt;/p&gt;
&lt;blockquote class="alert alert-note"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📝&lt;/span&gt;
 &lt;span class="alert-title"&gt;注記&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;ここで要塞を有効にしておかないと、後述の管理対象SSHセッションの作成で API エラーとなります。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;h2 id="step4-bastionの作成"&gt;&lt;a href="#step4-bastion%e3%81%ae%e4%bd%9c%e6%88%90" class="header-anchor"&gt;&lt;/a&gt;Step4: Bastionの作成
&lt;/h2&gt;&lt;p&gt;「アイデンティティとセキュリティ」 &amp;gt; 「要塞」（Bastion）に移動します。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="715px" data-flex-grow="298" height="560" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/04-1.webp" srcset="https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/04-1_hu_982245cf6ad2724f.webp 800w, https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/04-1_hu_36b79f883301d695.webp 1600w, https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/04-1.webp 1669w" width="1669"&gt;&lt;/p&gt;
&lt;p&gt;「要塞の作成」 をクリックし、以下のように設定します。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;項目&lt;/th&gt;
 &lt;th&gt;内容&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;要塞名&lt;/td&gt;
 &lt;td&gt;任意の名前&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ターゲット仮想クラウド・ネットワーク&lt;/td&gt;
 &lt;td&gt;Step 1で作成したVCN&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ターゲット・サブネット&lt;/td&gt;
 &lt;td&gt;ターゲットVMがいる「プライベート・サブネット」 を選択します。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;CIDRブロックの許可リスト&lt;/td&gt;
 &lt;td&gt;0.0.0.0/0 （特定のIPだけに絞るとより安全です）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="435px" data-flex-grow="181" height="532" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/04-2.webp" srcset="https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/04-2_hu_e3bf1741c390b50c.webp 800w, https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/04-2.webp 965w" width="965"&gt;&lt;/p&gt;
&lt;p&gt;「要塞の作成」をクリックします（アクティブになるまで数分かかります）。&lt;/p&gt;
&lt;h2 id="step5-セッションの作成"&gt;&lt;a href="#step5-%e3%82%bb%e3%83%83%e3%82%b7%e3%83%a7%e3%83%b3%e3%81%ae%e4%bd%9c%e6%88%90" class="header-anchor"&gt;&lt;/a&gt;Step5: セッションの作成
&lt;/h2&gt;&lt;p&gt;作成した Bastion の詳細画面に入り、「セッションの作成」 をクリックします。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="322px" data-flex-grow="134" height="481" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/05-1.webp" width="646"&gt;&lt;/p&gt;
&lt;p&gt;以下のように設定します。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;項目&lt;/th&gt;
 &lt;th&gt;内容&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;セッション・タイプ&lt;/td&gt;
 &lt;td&gt;Oracle Linux の場合は &lt;strong&gt;管理対象SSHセッション&lt;/strong&gt; を選択します。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ユーザー名&lt;/td&gt;
 &lt;td&gt;Oracle Linux の場合は &lt;code&gt;opc&lt;/code&gt; です。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ターゲット・コンピュート・インスタンス&lt;/td&gt;
 &lt;td&gt;Step2 で作成したプライベートVMを選択します。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;SSHキー&lt;/td&gt;
 &lt;td&gt;ご自身のPCにある SSH 公開鍵をアップロード or ペーストするか、新規に生成します。VM作成時に使ったものと同じ、またはペアになるものをアップロードしても OK です（後述）。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="295px" data-flex-grow="123" height="739" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/05-2.webp" srcset="https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/05-2_hu_bdf974789b8dc277.webp 800w, https://blog-0847c6.gitlab.io/posts/2026/05/26/oci-bastion/05-2.webp 911w" width="911"&gt;&lt;/p&gt;
&lt;p&gt;「セッションの作成」をクリックします。&lt;br&gt;
状態が作成中となり、しばらく経つとアクティブになります。&lt;/p&gt;
&lt;h2 id="step6-ssh接続の実行"&gt;&lt;a href="#step6-ssh%e6%8e%a5%e7%b6%9a%e3%81%ae%e5%ae%9f%e8%a1%8c" class="header-anchor"&gt;&lt;/a&gt;Step6: SSH接続の実行
&lt;/h2&gt;&lt;p&gt;セッションが「アクティブ」になったら、いよいよ接続です。
作成したセッションの右側にある「3つの点」メニューから 「SSHコマンドのコピー」 をクリックします。&lt;/p&gt;
&lt;p&gt;コピーされるコマンドは以下のような形をしています。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -i &amp;lt;privateKey&amp;gt; -o &lt;span class="nv"&gt;ProxyCommand&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ssh -i &amp;lt;privateKey&amp;gt; -W %h:%p -p 22 ocid1.bastionsession.oc1...&amp;#34;&lt;/span&gt; opc@10.0.1.x
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;&amp;lt;privateKey&amp;gt;&lt;/code&gt; 2箇所ありますので、それぞれ VM インスタンス作成時の秘密鍵、Bastion セッション作成時の秘密鍵のパスに変更して実行します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 例&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -i ~/.ssh/VM用の秘密鍵 -o &lt;span class="nv"&gt;ProxyCommand&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ssh -i ~/.ssh/Bastion用の秘密鍵 -W %h:%p ...&amp;#34;&lt;/span&gt; opc@10.0.1.x
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote class="alert alert-note"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📝&lt;/span&gt;
 &lt;span class="alert-title"&gt;注記&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;セッション作成時の SSH キーを VM 作成時と同じものにした場合は、2箇所とも同じ秘密鍵のパスを指定します。&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;blockquote class="alert alert-note"&gt;
 &lt;div class="alert-header"&gt;
 &lt;span class="alert-icon"&gt;📝&lt;/span&gt;
 &lt;span class="alert-title"&gt;注記&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="alert-body"&gt;
 &lt;p&gt;Linux のルールとして、秘密鍵の権限が緩いままだとSSH接続が拒否されてしまいます。この場合、以下のコマンドでパーミッションを変更します。&lt;br&gt;
&lt;code&gt;chmod 600 ssh-key-xxxx.key&lt;/code&gt;&lt;/p&gt;
 &lt;/div&gt;
 &lt;/blockquote&gt;
&lt;p&gt;実行すると、Bastionを経由してパブリックIPのないプライベートVMに直接SSHログインが完了します。&lt;/p&gt;
&lt;h2 id="ssh-キーについての補足"&gt;&lt;a href="#ssh-%e3%82%ad%e3%83%bc%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6%e3%81%ae%e8%a3%9c%e8%b6%b3" class="header-anchor"&gt;&lt;/a&gt;SSH キーについての補足
&lt;/h2&gt;&lt;p&gt;セッション作成時のSSHキーはVM作成時と同じでも別のものでも大丈夫です。&lt;/p&gt;
&lt;p&gt;OCI の Bastion サービスは、接続時に「2枚の壁（認証）」を通過するイメージになります。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bastionセッション作成時のSSHキー（壁1：入口の鍵）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ローカルPCから、OCIのBastionサービス（要塞）に侵入するための鍵です。&lt;/li&gt;
&lt;li&gt;Bastionサービス自体が「あなたは本当にこのセッションを作った本人ですか？」を確かめるために使います。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;VM作成時のSSHキー（壁2：奥の部屋の鍵）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bastionを通り抜けたあと、ターゲットのプライベートVMにログインするための鍵です。&lt;/li&gt;
&lt;li&gt;VM（OS）側が「あなたはログインを許可されたユーザーですか？」を確かめるために使います。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このように鍵の役割が独立しています。&lt;br&gt;
ただ、「同じ鍵」を使った場合と「別の鍵」を使った場合で、最後に実行するSSHコマンドの書き換え方が少し変わります。&lt;/p&gt;
&lt;h3 id="-同じ鍵を使った場合一番シンプル"&gt;&lt;a href="#-%e5%90%8c%e3%81%98%e9%8d%b5%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9f%e5%a0%b4%e5%90%88%e4%b8%80%e7%95%aa%e3%82%b7%e3%83%b3%e3%83%97%e3%83%ab" class="header-anchor"&gt;&lt;/a&gt;① 同じ鍵を使った場合（一番シンプル）
&lt;/h3&gt;&lt;p&gt;すべて1つの秘密鍵（例: id_rsa）で開くので、コピーしたコマンド内の2箇所の &lt;code&gt;&amp;lt;privateKey&amp;gt;&lt;/code&gt; に同じ秘密鍵のパスを指定すればOKです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -i ~/.ssh/id_rsa -o &lt;span class="nv"&gt;ProxyCommand&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ssh -i ~/.ssh/id_rsa -W %h:%p ...&amp;#34;&lt;/span&gt; opc@10.0.1.x
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="-別の鍵を使った場合それぞれ指定が必要"&gt;&lt;a href="#-%e5%88%a5%e3%81%ae%e9%8d%b5%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9f%e5%a0%b4%e5%90%88%e3%81%9d%e3%82%8c%e3%81%9e%e3%82%8c%e6%8c%87%e5%ae%9a%e3%81%8c%e5%bf%85%e8%a6%81" class="header-anchor"&gt;&lt;/a&gt;② 別の鍵を使った場合（それぞれ指定が必要）
&lt;/h3&gt;&lt;p&gt;コマンドの「前半」と「後半」で、それぞれの秘密鍵を指定する必要があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;前半の -i: VM作成時の秘密鍵を指定&lt;/li&gt;
&lt;li&gt;中間の ProxyCommand内の -i: Bastionセッション作成時の秘密鍵を指定&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -i ~/.ssh/VM用の秘密鍵 -o &lt;span class="nv"&gt;ProxyCommand&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;ssh -i ~/.ssh/Bastion用の秘密鍵 -W %h:%p ...&amp;#34;&lt;/span&gt; opc@10.0.1.x
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;管理やコマンドの書き換えをシンプルにしたい場合は、「同じ鍵（ペア）」を使ってしまうのが一番迷わなくてラクです。&lt;/p&gt;
&lt;h3 id="セキュリティ的な問題は"&gt;&lt;a href="#%e3%82%bb%e3%82%ad%e3%83%a5%e3%83%aa%e3%83%86%e3%82%a3%e7%9a%84%e3%81%aa%e5%95%8f%e9%a1%8c%e3%81%af" class="header-anchor"&gt;&lt;/a&gt;セキュリティ的な問題は？
&lt;/h3&gt;&lt;p&gt;個人開発や一般的な社内検証環境レベルであれば、同じ鍵を使い回しても実用上のセキュリティリスクは非常に低い（実質的に問題ない）と言えます。&lt;/p&gt;
&lt;p&gt;ただし、厳格なエンタープライズ（企業）の運用基準や、セキュリティの理想論（ベストプラクティス）の観点から見ると、いくつか「知っておくべきリスクと理由」があります。&lt;br&gt;
なぜ分けるのが理想とされるのか、その理由は以下です。&lt;/p&gt;
&lt;h4 id="1-鍵が漏洩した際の影響範囲爆発半径が広がる"&gt;&lt;a href="#1-%e9%8d%b5%e3%81%8c%e6%bc%8f%e6%b4%a9%e3%81%97%e3%81%9f%e9%9a%9b%e3%81%ae%e5%bd%b1%e9%9f%bf%e7%af%84%e5%9b%b2%e7%88%86%e7%99%ba%e5%8d%8a%e5%be%84%e3%81%8c%e5%ba%83%e3%81%8c%e3%82%8b" class="header-anchor"&gt;&lt;/a&gt;1. 鍵が漏洩した際の影響範囲（爆発半径）が広がる
&lt;/h4&gt;&lt;p&gt;これが最も大きな理由です。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;鍵を分けている場合：&lt;/strong&gt;
もしBastion用の鍵が外部に漏れても、攻撃者はBastionの入り口までしか来られません。ターゲットVMの鍵が無事なら、中のデータにはアクセスできません。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;同じ鍵を使っている場合：&lt;/strong&gt;
その1つの秘密鍵が漏洩した瞬間、Bastionの突破からターゲットVMへのログインまで、すべての防御壁が同時に崩壊します。&lt;/p&gt;
&lt;p&gt;ひとつの鍵にすべての権限を持たせることは、セキュリティの世界で嫌がられる「単一障害点（Single Point of Failure）」を作ることになってしまいます。&lt;/p&gt;
&lt;h4 id="2-誰がどこにアクセスしたかの監査ログが曖昧になる"&gt;&lt;a href="#2-%e8%aa%b0%e3%81%8c%e3%81%a9%e3%81%93%e3%81%ab%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%81%97%e3%81%9f%e3%81%8b%e3%81%ae%e7%9b%a3%e6%9f%bb%e3%83%ad%e3%82%b0%e3%81%8c%e6%9b%96%e6%98%a7%e3%81%ab%e3%81%aa%e3%82%8b" class="header-anchor"&gt;&lt;/a&gt;2. 「誰が・どこに」アクセスしたかの監査（ログ）が曖昧になる
&lt;/h4&gt;&lt;p&gt;本番環境やチーム開発において重要な視点です。&lt;/p&gt;
&lt;p&gt;Bastion（要塞）の本来の目的は、「いつ、誰が、どのサーバーに入ったか」を厳密に記録・コントロールすることです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bastion用の鍵： 「あなたがクラウド環境のネットワークに入った」ことを証明する&lt;/li&gt;
&lt;li&gt;VM用の鍵： 「あなたが特定のサーバーの opc ユーザーとしてログインした」ことを証明する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらを同じ鍵にしてしまうと、鍵の管理者が同一人物である前提になってしまい、「Bastionを通過した人と、実際にVMを操作した人が本当に同一人物か？」という厳密なトレース（監査ログの信頼性）が担保しにくくなります。&lt;/p&gt;
&lt;h2 id="参考"&gt;&lt;a href="#%e5%8f%82%e8%80%83" class="header-anchor"&gt;&lt;/a&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://documentation.ubuntu.com/oracle/oracle-how-to/use-bastion-to-access-VM/" target="_blank" rel="noopener"
 &gt;https://documentation.ubuntu.com/oracle/oracle-how-to/use-bastion-to-access-VM/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://techblog.ap-com.co.jp/entry/2025/03/19/132232" target="_blank" rel="noopener"
 &gt;https://techblog.ap-com.co.jp/entry/2025/03/19/132232&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://oci-tech.jp/connect-private-compute-via-oci-bastion/" target="_blank" rel="noopener"
 &gt;https://oci-tech.jp/connect-private-compute-via-oci-bastion/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://qiita.com/rieto/items/3fcdd5d5157ecb406719" target="_blank" rel="noopener"
 &gt;https://qiita.com/rieto/items/3fcdd5d5157ecb406719&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>