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に接続するための正しくフォーマットされたSSHコマンドの例を示します。
- インスタンスに正しいユーザー名を使用していることを確認してください。
- Oracle Linuxまたはその他のRed Hat互換OSesの場合は、
opcを使用します。 - Ubuntu Linuxの場合は、
ubuntuを使用します。
- Oracle Linuxまたはその他のRed Hat互換OSesの場合は、
- 正しい秘密キーを使用していることを確認してください。間違った秘密キー・ファイルを使用すると、このエラー・メッセージが表示されます。
- キーを含むディレクトリにいることを確認します。
- または、秘密キーへのパスが正しいことを確認してください。
- 私は秘密鍵をなくした。
- 新しいインスタンスを作成し、新しい公開キーと秘密キーをダウンロードします。
- 新しい公開キーおよび秘密キー・セットを作成します。新しいインスタンスを作成します。
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インスタンスにログインできます。
- PuTTYgenがない場合は、https://www.puttygen.com/からダウンロードしてインストールします。
- PuTTYgenを開きます。
- 「ファイル」をクリックし、「秘密キーのロード」をクリックします。
- PuTTY秘密キー・ファイル(.ppk)に移動し、「開く」をクリックします。
- (オプション)キー・パスフレーズを入力します。
- 「Conversions」をクリックし、「Export OpenSSH key」をクリックします。
パスフレーズとして使用しなかった場合は、PuTTYgen WarningでYesをクリックして続行します。
- 「秘密キーの保存方法: 」ウィンドウで、変換されたキーのファイル名を入力し、「保存」をクリックします。
変換されたキーを使用して、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コンソール接続を使用すると、インスタンスのシリアル・コンソールを使用してインスタンスに接続できます。これにより、インスタンスをリモートでトラブルシューティングおよび構成できます。詳細は、インスタンス・コンソールの接続を使用したインスタンスのトラブルシューティングを参照してください
- ブート・プロセスを割り込み、メンテナンス・モードを起動します。
- メンテナンス・モードでは、
opcユーザーのSSHキーを追加またはリセットします。
インスタンス・ヘルスの確認
インスタンスの詳細ページでは、インスタンスのヘルスなど、インスタンスに関連するメトリックを確認できます。oci_compute_instance_healthメトリックを使用すると、VMインスタンスが応答しないかどうかをモニターできます。コンピュートでは、アドレス解決プロトコル(ARP)のリクエストがインスタンスの仮想ネットワーク・インタフェース・カード(VNIC)に送信されます。ARP pingが失敗した場合、メトリックはインスタンスが応答していないことを示します。
メトリックを使用するには、詳細ページの「メトリック・ネームスペース」コントロールからoci_compute_instance_healthを選択します。詳細は、コンピュート・インスタンス・ヘルス・メトリックに関する項を参照してください。
その他のコンピュート・トラブルシューティング・セクション
SSHに加えて、次のトラブルシューティング・トピックも使用できます。