SSH接続のトラブルシューティング

SSHを使用してコンピュート・インスタンスに接続できない場合は、次のトラブルシューティング・エラー・メッセージおよび問題を解決するための提案を確認してください。

ヒント

インスタンスを初めて作成する場合は、ガイド付きチュートリアルで次の点を検討してください。
ヒント

インスタンスを初めて作成する場合は、最初にVirtual Cloud Network (VCN)を作成することをお薦めします。「VCNウィザードの起動」ワークフローを使用して、「インターネット接続性によるVCNの作成」オプションを選択できます。ワークフローにより、パブリック・サブネットとプライベート・サブネットの両方を必要なゲートウェイおよびルート・ルールとともに自動的に構成するVCNが作成されます。また、ワークフローには、IPv6を構成するオプションが用意されています。ワークフローの実行の詳細は、「仮想ネットワーキング・クイックスタート」を参照してください。

SSHエラー: ホストw.x.y.zポート22への接続: 操作がタイムアウトしました

このエラーは、SSHが指定されたIPアドレスでホストに接続できないことを意味します。問題を解決するには、次のシナリオを確認してください。

システムにインターネット・アクセスがあることの確認

SSHコマンドが実行中でインターネット・アクセスが可能な環境を確認します。
  • Windows:コマンド・プロンプト・ウィンドウを開きます。
  • MacOS/Linux:端末ウィンドウを開きます。
  • google.comやamazon.comなどの既知のホストをPingします。
  • pingコマンドが成功した場合は、次のオプションに進みます。
Pingが失敗しました

SSH環境ではインターネットにアクセスできない可能性があります。インターネット・アクセスの組織ファイアウォール設定について不明な場合は、OCI Cloud Shellを使用してインスタンスにSSH接続することを検討してください。詳細は、このページのOCI Cloud Shellセクションを参照してください。

プロキシ・サーバー
組織でプロキシ・サーバーを使用してインターネットに接続している場合は、プロキシ設定が正しいことを確認してください。プロキシ構成および使用するオペレーティング・システムによって設定が異なる可能性があるため、組織のプロキシ・ドキュメントを参照してください。

OCI設定の確認

次に、OCI設定を確認して構成を確認します。

インスタンス詳細をオープンします
  • OCI Consoleにログインします。
  • ナビゲーション・メニューを開き、「コンピュート」を選択します。「コンピュート」で、「インスタンス」を選択します。
  • 目的のインスタンスを選択します。インスタンス詳細ページが表示されます。
次の設定を確認してください
  • インスタンスが実行中で、停止していないことを確認します。
  • インスタンスにパブリックIPアドレスがあることを確認します。
    • 「インスタンス・アクセス」セクションを参照してください。パブリックIPアドレスが割り当てられている場合、そのアドレスにはパブリック・アクセスIPアドレス:というラベルが付けられます。
    • 「インスタンス・アクセス」セクションが空の場合、パブリックIPアドレスは割り当てられません。
  • パブリック・アドレスがある場合は、SSHコマンドで正しいIPアドレスを使用していることを確認してください。
  • パブリックIPアドレスがない場合は、VCNサブネットを確認します。
  • パブリック・サブネット上にインスタンスを作成したが、インスタンスの作成時にパブリックIPアドレスを割り当てなかった場合でも、アドレスを割り当てることができます(「既存のプライマリ・プライベートIPへのエフェメラル・パブリックIPの割当て」を参照)。
    • IPアドレスを設定した後、インスタンスを再起動し、SSHを使用してインスタンスに接続してみてください。

インスタンスのパブリックIPアドレスがパブリック・サブネットにあり、まだ接続できない

OCIを初めて使用する場合は、次のトラブルシューティング手順をさらに進めます。作業を高速化するには、次のヒントの説明に従って、新しいVCNおよび新しいコンピュート・インスタンスを設定することを検討してください。

ヒント

インスタンスを初めて作成する場合は、ガイド付きチュートリアルで次の点を検討してください。
ヒント

インスタンスを初めて作成する場合は、最初にVirtual Cloud Network (VCN)を作成することをお薦めします。「VCNウィザードの起動」ワークフローを使用して、「インターネット接続性によるVCNの作成」オプションを選択できます。ワークフローにより、パブリック・サブネットとプライベート・サブネットの両方を必要なゲートウェイおよびルート・ルールとともに自動的に構成するVCNが作成されます。また、ワークフローには、IPv6を構成するオプションが用意されています。ワークフローの実行の詳細は、「仮想ネットワーキング・クイックスタート」を参照してください。
インスタンス詳細をオープンします
  • OCI Consoleにログインします。
  • ナビゲーション・メニューを開き、「コンピュート」を選択します。「コンピュート」で、「インスタンス」を選択します。
  • 目的のインスタンスを選択します。インスタンス詳細ページが表示されます。
VCN構成の確認
  • このインスタンスに割り当てられているVCNをクリックします。
  • 少なくとも1つのインターネット・ゲートウェイがインターネット・ゲートウェイ・リソースで使用可能であることを確認してください。
    • インターネット・ゲートウェイが割り当てられていない場合は、次のセクションに進みます。
  • インターネット・ゲートウェイが割り当てられている場合は、パブリック・サブネットにゲートウェイのルート・ルールが割り当てられていることを確認してください。
    • 「サブネット」リソースで、パブリック・サブネットを選択します。
    • 「サブネット情報」で、「ルート表」リンクをクリックします。
    • 宛先が 0.0.0.0/0の静的ルートがあることを確認します。
    • ルート・エントリがない場合は、次のセクションに進みます。
自分のパブリック・サブネットが正しく構成されていません

パブリック・サブネットが正しく構成されていないと思われる場合は、サブネットを再構成するための2つのオプションがあります。

(1)計算クイック処理の使用

インスタンスの詳細ページから:

  • 「リソース」リストで、「クイック・アクション」を選択します。
  • 「インターネットへのパブリック・サブネットの接続」クイック・アクションで「接続」をクリックします。
  • ワークフローに従ってインスタンスに接続します。

(2)パブリック・サブネットを手動で作成します。

  • シナリオA: パブリック・サブネットのドキュメントを使用して、新しいパブリック・サブネットの設定および構成ステップを順を追って説明します。
  • 新しいパブリック・サブネットに新しいコンピュート・インスタンスを作成します。
セキュリティ・リストのチェック

問題が続く場合は、セキュリティ・リストがポート22のトラフィックを許可していることを確認してください。詳細は、セキュリティ・リストを参照してください。

高度なトラブルシューティング

上級ユーザーの場合、ネットワーク・パス・アナライザを使用してネットワーク接続をさらにトラブルシューティングできます。詳細は、Network Path Analyzerを参照してください。

SSH: ホストw.x.y.zポート22への接続: 接続が拒否されました

このエラーメッセージは、ホストがターゲットアドレスで待機しているが、ポート22に接続できないために発生します。

Netcat(nc)を使用してSSHが実行中であることを確認します。

LinuxまたはMacOS

ターミナル・ウィンドウで、次のコマンドを実行します:

nc <public ip> 22
  • コマンドが次のようなメッセージを返す場合: SSH-2.0-OpenSSH_9.4

    インスタンスに正常に接続し、SSHが実行中であることが確認されました。SSHコマンドでIPアドレスを再確認し、正しいことを確認します。

  • コマンドが何も返さない場合:

    • インスタンスの詳細ページでパブリックIPアドレスを確認し、正しいアドレスを使用していることを確認してください。
    • コマンドで使用されているIPアドレスを再確認し、正しいことを確認してください。

    それ以外の場合は、次の項に進みます。

Windows

PowerShellウィンドウで、次のコマンドを実行します。

tnc <public ip> -p 22
  • コマンドが次のようなメッセージを返す場合:

    ComputerName     : <public ip>
                                    RemoteAddress    : <public ip>
                                    RemotePort       : 22
                                    InterfaceAlias   : Ethernet
                                    SourceAddress    : <source ip>
                                    TcpTestSucceeded : True

    インスタンスに正常に接続し、SSHが実行中であることが確認されました。SSHコマンドでIPアドレスを再確認し、正しいことを確認します。

  • コマンドが次の結果を返す場合: WARNING: TCP connect to (<public ip>) failed
    • インスタンスの詳細ページでパブリックIPアドレスを確認し、正しいアドレスを使用していることを確認してください。
    • コマンドで使用されているIPアドレスを再確認し、正しいことを確認してください。

    それ以外の場合は、次のセクションでトラブルシューティングを続行します。

SSHが実行されていません

  • インスタンスがパブリック・サブネット上にあることを確認します。
    • インスタンスがプライベート・サブネット上にある場合、インスタンスに直接接続することはできません。プライベート・サブネットの使用の項を参照してください。
  • ポート22への接続を許可するようにセキュリティ・リストが構成されていることを確認します。詳細は、セキュリティ・リストを参照してください。
  • インスタンスを再起動してSSHデーモンを再起動します。
  • 拡張:カスタム・イメージを使用していて、SSHサービスを起動またはインストールする必要がある場合は、シリアル・コンソールを使用してインスタンスに接続します。

<user-name>@w.x.y.z: 権限が拒否されました(publickey、gssapi-keyex、gssapi-with-mic)

このエラー・メッセージは、SSHがSSHサービス・ホストに接続しているが、SSHコマンドに問題があることを示します。

SSHコマンドに関する次の問題を確認してください

  • SSHのすべてのコマンドライン・オプションを再度確認します。間違ったオプションを指定すると、このエラーメッセージが表示されることがあります。
    • 次に、Oracle Linuxに接続するための正しくフォーマットされたSSHコマンドの例を示します。
      ssh -i <my-private-key-file> opc@x.x.x.x
  • インスタンスに正しいユーザー名を使用していることを確認してください。
    • Oracle Linuxまたはその他のRed Hat互換OSesの場合は、opcを使用します。
    • Ubuntu Linuxの場合は、ubuntuを使用します。
  • 正しい秘密キーを使用していることを確認してください。間違った秘密キー・ファイルを使用すると、このエラー・メッセージが表示されます。
    • キーを含むディレクトリにいることを確認します。
    • または、秘密キーへのパスが正しいことを確認してください。
  • 私は秘密鍵をなくした。
    • 新しいインスタンスを作成し、新しい公開キーと秘密キーをダウンロードします。
    • 新しい公開キーおよび秘密キー・セットを作成します。新しいインスタンスを作成します。

PuTTYgenキー・ファイルを使用してSSHログインが拒否されました: 「権限が拒否されました(publickey、gssapi-keyex、gssapi-with-mic)」

これは、LinuxインスタンスでOpenSSH生成のSSHキーがサポートされ、PuTTYgen生成のSSHキーで異なる形式が使用されるためです。

SSHキー書式の一致

PuTTYgenで生成された.ppkキーを使用して、OpenSSH SSHコマンドを使用してLinuxインスタンスにログインしている場合、接続は失敗します。例:

$ ssh -i deployment_key.txt opc@<IP_ADDRESS>
Enter passphrase for key 'deployment_key.txt':
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

このエラーは、LinuxインスタンスがOpenSSHで生成されたSSHキーをサポートし、PuTTYgenで生成されたSSHキーが異なる形式を使用しているために発生します。この問題を解決するには、PuTTYgenを使用して、キーをOpenSSHキー形式に変換します。その後、SSHコマンドでキーを使用してLinuxインスタンスにログインできます。

  1. PuTTYgenがない場合は、https://www.puttygen.com/からダウンロードしてインストールします。
  2. PuTTYgenを開きます。
  3. 「ファイル」をクリックし、「秘密キーのロード」をクリックします。
  4. PuTTY秘密キー・ファイル(.ppk)に移動し、「開く」をクリックします。
  5. (オプション)キー・パスフレーズを入力します。
  6. 「Conversions」をクリックし、「Export OpenSSH key」をクリックします。

    パスフレーズとして使用しなかった場合は、PuTTYgen WarningYesをクリックして続行します。

  7. 「秘密キーの保存方法: 」ウィンドウで、変換されたキーのファイル名を入力し、「保存」をクリックします。

変換されたキーを使用して、Linuxインスタンスにログインできるようになりました。

「Authentication Refused: Bad Ownership or Modes for Directory」というエラーでSSHが失敗します。

このエラーは、/home/<USERNAME>ディレクトリまたは.ssh/authorized_keysファイルに不正な権限が設定されているために発生します。

ノート

このトラブルシューティングのヒントのホーム・ディレクトリ・パスの例は、Oracle Linuxを使用しています。ホーム・パスは、オペレーティング・システムによって異なります。たとえば、MacOSのホーム・パスは/Users/<USERNAME>です。

正しい権限を設定

/home/<USERNAME>ディレクトリまたは.ssh/authorized_keysファイルで不正な権限が設定されている場合、SSHを使用してLinuxインスタンスに接続すると失敗する可能性があります。

例:

login as: <username>
Server refused our key

Linuxインスタンスで/var/log/secureログ・ファイルを確認すると、エラーの理由が表示されます。

<SERVER> sshd[6245]: Authentication refused: bad ownership or modes for directory /home/<USERNAME>

エラーを修正するには、ホーム・ディレクトリまたは.ssh/authorized_keysファイルの権限を設定し、chmodコマンドを使用します。

# chmod 700 /home/<username>
# chmod 700 /home/<username>/.ssh/
# chmod 600 /home/username/.ssh/authorized_keys

Cloud Shellを使用したOCIインスタンスへの接続

OCI Cloud Shellは、OCIコンソールからアクセスできるWebブラウザベースのターミナルです。クラウド・シェルは(月次テナンシ制限内で)無償で使用できます。Linuxシェルへのアクセスが提供され、事前認証済のOCI CLI、事前認証済のAnsibleインストール、およびその他の便利なツールが用意されています。

インスタンスに接続の問題がある場合、クラウド・シェルはSSHとの接続に有効なオプションです。Cloud Shellはブラウザ・ベースであるため、ラップトップまたは企業のファイアウォール設定による潜在的な接続の問題を排除します。この項では、クラウド・シェルの使用方法に関する情報を示します。

プライベート・サブネットの使用

コンピュート・インスタンスがプライベート・サブネット上にある場合、通常は2つのシナリオがあります。

(1)インスタンスはプライベート・サブネット上にあるが、パブリック・サブネット上にある必要がある

インスタンスをパブリック・サブネットに配置するには、次のオプションがあります。

  • 現在のVCNのパブリック・サブネットに新しいインスタンスを作成します。古いインスタンスを終了します。
  • 現在のVCNに新しいパブリック・サブネットを作成します。新しいパブリック・サブネットに新しいインスタンスを作成します。古いインスタンスを終了します。
  • パブリック・サブネットを使用して新しいVCNを作成し、パブリック・サブネットに新しいインスタンスを作成します。古いインスタンスを終了します。
ヒント

インスタンスを初めて作成する場合は、ガイド付きチュートリアルで次の点を検討してください。
ヒント

インスタンスを初めて作成する場合は、最初にVirtual Cloud Network (VCN)を作成することをお薦めします。「VCNウィザードの起動」ワークフローを使用して、「インターネット接続性によるVCNの作成」オプションを選択できます。ワークフローにより、パブリック・サブネットとプライベート・サブネットの両方を必要なゲートウェイおよびルート・ルールとともに自動的に構成するVCNが作成されます。また、ワークフローには、IPv6を構成するオプションが用意されています。ワークフローの実行の詳細は、「仮想ネットワーキング・クイックスタート」を参照してください。
(2)インスタンスは意図的にプライベート・サブネット上にある

コンピュート・インスタンスがプライベート・サブネット上にある場合は、次を使用して接続できます:

  • クラウド・シェル: 詳細は、このページのOCI Cloud Shellセクションを参照してください。
  • 要塞は、パブリック・エンドポイントがないターゲット・リソースへの制限および時間制限付きアクセスを提供します。詳細は、要塞の概要を参照してください。

追加の接続およびインスタンスのトラブルシューティング・オプション

このページの焦点は、SSHコマンドを使用してインスタンスに接続することです。コンピュート・インスタンスのトラブルシューティングに使用できるその他のツールを次に示します。

シリアル・コンソールを使用したトラブルシューティング

OCIコンソール接続を使用すると、インスタンスのシリアル・コンソールを使用してインスタンスに接続できます。これにより、インスタンスをリモートでトラブルシューティングおよび構成できます。詳細は、インスタンス・コンソールの接続を使用したインスタンスのトラブルシューティングを参照してください

シリアルコンソールから、次の管理タスクを実行できます。

インスタンス・ヘルスの確認

インスタンスの詳細ページでは、インスタンスのヘルスなど、インスタンスに関連するメトリックを確認できます。oci_compute_instance_healthメトリックを使用すると、VMインスタンスが応答しないかどうかをモニターできます。コンピュートでは、アドレス解決プロトコル(ARP)のリクエストがインスタンスの仮想ネットワーク・インタフェース・カード(VNIC)に送信されます。ARP pingが失敗した場合、メトリックはインスタンスが応答していないことを示します。

メトリックを使用するには、詳細ページの「メトリック・ネームスペース」コントロールからoci_compute_instance_healthを選択します。詳細は、コンピュート・インスタンス・ヘルス・メトリックに関する項を参照してください。

その他のコンピュート・トラブルシューティング・セクション

SSHに加えて、次のトラブルシューティング・トピックも使用できます。