セッションへの接続時の問題
既存のセッションに接続しようとするときに発生する可能性のある問題を修正します。
一般に、SSHコマンドのトラブルシューティングを行うには、詳細(-v
)オプションを追加します。次に例を示します:
ssh -v -i <private_key> -N -L <local_port>:<target_IP>:<port> <bastion>
-vv
または-vvv
オプションは使用しないでください。SSHおよび公開キーを使用してセッションに接続できません
SSHおよび公開鍵を使用して管理対象SSHまたはポート転送セッション(SSHトンネルとも呼ばれる)に接続すると、接続が失敗し、次のメッセージが表示されます。
Permission denied (publickey)
この問題を解決するには、ファイル~/.ssh/config
を編集し、次の行を追加します:
Host *
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
要塞ホストとターゲット・ホストの両方にアクセスするには、SSH構成ファイルでホストに
*
を使用します。または、host.bastion.*.oci.*
およびすべてのターゲット・ホストのプライベートIPアドレスをSSH構成ファイルに追加できます。 詳細は、「インスタンスへの接続」を参照してください。
IPアドレスは要塞許可リストにありません
要塞を作成する際は、CIDRブロック許可リストを指定します。この要塞でホストされるセッションへの接続を許可する1つ以上のアドレス範囲をCIDR表記で追加します。
ローカル・マシンのIPアドレスが許可リストにない場合、SSHコマンドは失敗し、次のメッセージが表示されます。
Enter passphrase for key 'id_rsa': <your_passphrase>
...
Connection to host.bastion.<region>.oci.oraclecloud.com closed by remote host.
要塞を編集し、ローカル・マシンのIPアドレスがCIDRブロック許可リストにあることを確認します。許可リストを変更したら、新しいセッションの作成も行う必要があります。この変更は既存のセッションには影響しません。
VCNで要塞からのイングレス・トラフィックが許可されない
ターゲット・リソースが作成されたVCN (仮想クラウド・ネットワーク)およびサブネットは、ターゲット・ポートの要塞からの受信ネットワーク・トラフィックを許可する必要があります。
管理対象SSHセッションに接続しようとすると、数分後に接続がタイムアウトし、次のメッセージが表示されます:
Enter passphrase for key 'id_rsa': <your_passphrase>
...
kex_exchange_identification: Connection closed by remote host
ポート転送セッションでは、最初のSSH接続は成功しますが、SSHトンネルの使用を試行すると数分後にタイムアウトし、同じエラー・メッセージが表示されます。
たとえば、セッションを使用して、IPアドレス192.168.0.99
の要塞からコンピュート・インスタンスのポート8001
に接続する場合、インスタンスへのアクセスに使用されるサブネットは、ポート8001
の192.168.0.99
からのイングレス・トラフィックを許可する必要があります。
サブネットのデフォルト・セキュリティ・リストでは、任意のIPアドレスからSSHポート22
へのイングレス・トラフィックが許可されますが、このルールは変更または削除できます。また、サブネットのデフォルト・セキュリティ・リストでは、一般に、任意のIPアドレスから、次などのその他のポート番号へのイングレス・トラフィックは許可しません:
1521
: Oracleデータベース3306
: MySQLデータベース3389
: リモート・デスクトップ・プロトコル(RDP)
ターゲット・サブネットのセキュリティ・リストを更新し、要塞のIPアドレスを追加します。「要塞からのネットワーク・アクセスの許可」を参照してください。
ポート転送コマンドが応答していない
SSHを使用してポート転送セッション(SSHトンネルとも呼ばれる)に接続する場合、秘密キーのパスフレーズを入力してもプロセスは終了しません。これは正常です。端末を閉じないでください。
SSHトンネルが正常に作成されたことを確認するには、SSHコマンドを詳細出力で再度実行します。正常に接続した後の最終メッセージは次のとおりです:
debug1: Entering interactive session.
debug1: pledge: network
SSHトンネルを作成した後、適切なアプリケーションを使用して、SSHコマンドで指定したローカル・ポート(localhost:local port
または127.0.0.1:local port
)からターゲット・リソースに接続します。
たとえば、Oracle Databaseへのポート転送セッションを使用するには、Oracle SQL Developerを開き、localhost:1521
に接続します。
その他の例は、「要塞内のセッションへの接続」を参照してください。
アイドル接続がクローズされている
SSHサーバーでは、アイドル接続は、5分経過するとデフォルトでクローズされます。アイドル接続がクローズされないようにするには、サーバーに空パケットを定期的に送信するようにSSHクライアントを構成します。
たとえば、Linuxでは、ファイル~/.ssh/config
を作成または編集し、次の行を追加します:
Host *
ServerAliveInterval 120
ServerAliveCountMax 3
この例では、空のパケットが2分(120秒)ごとに送信され、クライアントでは最大3回試行されます。