SSH の問題のトラブルシューティング

このページの内容

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

robotsnoindex
robotsnoindex
robotsnoindex

SSH で問題が発生した場合、以下のことを試して問題のトラブルシューティングを行います。

Sourcetree を使用している場合、これらのソリューションの一部は Sourcetree でのステップに含まれます。ただし、コマンド ラインの使用が必要となる場合もあります。Sourcetree のリポジトリで右上の [ターミナル] ををクリックすると、コマンド ラインを見つけることができます。

エラー メッセージのトラブルシューティング

SSH 経由で認証中に次のエラー メッセージが表示されることがあります。


Permission denied (publickey)

または

No suitable response from remote

または

repository access denied

Git または Mercurial を使用して SSH 経由でクローン、プッシュ、またはプルを実行する際に、SSH エージェントが提供したキーを Bitbucket で認証できなかった場合、これらのメッセージのいずれかが表示されることがあります。

このようなメッセージが表示される最も一般的な理由は以下のとおりです。

  • 接続の試行時に sudo を使用した

    ssh-agent は、ルート レベルではなくユーザー レベルで実行されるため、クローン、プッシュ、またはプルの実行時に sudo を使用しないでください

  • 公開キーが Bitbucket にロードされていない

    公開キーが Bitbucket にロードされているかどうかを確認するには、以下を実行します。

    1. Bitbucket で、左下にあるアバターから [個人設定] を選択します。
      [アカウント設定] ページが表示されます。
    2. [SSH キー] をクリックします。
      [SSH キー] ページにすべての既存のキーが一覧表示されます。
    3. 一覧にキーが表示されない場合、「SSH キーの設定」ドキュメントに従って SSH キーを 1 つ設定します。
  • キーが SSH エージェントにロードされていない

    SSH エージェントが Bitbucket にキーを提供していない場合、接続に失敗します。システムを最近再起動している場合にこの問題が発生することがあります。

    SSH エージェントが提供しているキーを調べ、エージェントに追加する手順は次のとおりです。

    ターミナルから

    SSH キーがロードされていることを確認します。

    $ ssh-add -l

    キーが一覧に表示されない場合、「ssh-add」に続けて秘密キー ファイルへのパスを入力して追加します。

    $ ssh-add ~/.ssh/<private_key_file>
    Sourcetree から

    Windows:

    システム トレイで Pageant (PuTTY 認証エージェント) アイコンをダブルクリックして [Pageant Ket List] ダイアログを開きます。


    SSH キーが表示されない場合は、[キーの追加] をクリックします

Could not open a connection to your authentication agent

ssh-add コマンドを使用しようとしたときにこのエラー メッセージが表示されることがあります。多くの場合、ssh-agent が適切に開始されていません。エージェントを開始するには、以下を実行します。


macOS / Linux

$ eval `ssh-agent`
Agent pid 9700

Windows

$ eval $(ssh-agent)
Agent pid 9700

次に、引き続き ssh-add コマンドを使用してキーを追加します。


unexpected token

.bashrc が正しく起動しない場合、以下のようなメッセージが表示される場合があります。

line19: syntax error near unexpected token 'then'
line 19: ' if[ $? -eq 0 ]; then '
これらのメッセージは、ブラウザからカット アンド ペーストを実行した時にエラーが発生したことを示しています。このエラーは、Chrome の使用時に一般的に見られます。Firefox など別のブラウザを試してください。

Operation timed out

タイムアウトした操作がある場合は、以下のメッセージまたは類似のメッセージが表示されます。


ssh: connect to host bitbucket.org port 22: Operation timed out
fatal: The remote end hung up unexpectedly
Completed with errors, see above

タイムアウトはお使いのコンピューターが Bitbucket に到達できなかったことを示しており、おそらく、ユーザー自身のネットワークに原因があると考えられます。たとえば、ネットワーク管理者がこの接続をブロックするファイアウォール ルールを設定している可能性があります。ネットワーク管理者に連絡してこの問題を解決してください。


The authenticity of host 'bitbucket.org (104.192.143.1)' can't be established.

Bitbucket ホストでは、Git と Mercurial の SSH 接続のみが許可されます。SSH URL を使用して Bitbucket に初めてアクセスするときに、SSH クライアントは Bitbucket のホストが既知のホストかどうかを確認します。ホストが ~/.ssh/known_hosts ファイル内にない場合に続行しようとすると、SSH により、Bitbucket のホストを既知のホストとして追加する旨の警告が表示されます。

$ hg clone ssh://hg@bitbucket.org/newuserme/mquotefork testkey
The authenticity of host 'bitbucket.org (104.192.143.1)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)?

この警告が表示されたら、「yes」と入力できます。


既知のホストの内容を表示すると、実際のキーが base64 エンコード形式で保存されていることがわかります。

bitbucket.org,104.192.143.1 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==

ネットワーク内のセキュリティ プロトコルによっては、システム管理者は承認された既知のホストをまとめた一覧を保持する場合があります。Bitbucket のサーバーの公開キーのフィンガープリントについては、「SSH キー」を参照してください。


remote: No supported authentication methods left to try!

このエラーは、Windows で Sourcetree を使用して SSH による認証を実行しようとすると発生することがあります。

このエラーを修正するには、次の点を確認します。

  • Pageant が実行中で、キーがロード済みであることを確認します。
  • 対応する公開キーが使用する Bitbucket アカウントに追加されていることを確認します。

他の SSH 問題のトラブルシューティング

エラー メッセージが表示されずに次のような SSH の問題が生じる場合もあります。

Mercurial リポジトリへのプッシュに時間がかかる場合

新しい Mercurial リポジトリのプッシュに時間がかかるか、応答しない場合、Mercurial 圧縮を有効にする必要がある場合があります (有効にしていない場合)。

SSH 圧縮の有効化は推奨されますが、必須ではありません。

既定では、Git の場合、データの送信または取得時に圧縮が自動で実行されますが、Mercurial では実行されません。SSH 圧縮を有効にすると、データの送信および取得の速度が劇的に向上する場合があります。

SSH 圧縮を有効にするには、次の手順を使用します。

  1. Mercurial グローバル構成ファイル (~/.hgrc) を開きます。
  2. 以下の行を UI セクションに追加します。

    ssh = ssh -C

    追加後のファイルは次のようになります。

    [ui]
    # Name data to appear in commits
    username = Emma <emmap1@atlassian.com>
    ssh = ssh -C
  3. ファイルを保存して閉じます。

ポート 22 がブロックされている場合

ネットワーク管理者は、ポート 22 上での SSH の外部接続をブロックすることがあります。ネットワークでこのポートがブロックされている場合、Bitbucket は、代替のホスト名とポートの組み合わせを提供します。

代わりに、altssh.bitbucket.org をポート 443 経由で使用します。通常、ポート 443 は HTTPS 用に使用されるため、管理者は外部の Web 参照用にこのポートを開いています。この場合、使用可能な URL は以下のとおりです。

Mercurialssh://hg@altssh.bitbucket.org:443/<account_name>/<repo_name>/
Gitssh://git@altssh.bitbucket.org:443/<account_name>/<repo_name>/

SSH 認証のテスト

このセクションのコマンドを使用して SSH の認証に関する問題のトラブルシューティングを行います。


SSH 認証をテストするには

以下のコマンドは SSH キーについて SSH エージェントをチェックしてから、その秘密キーが既存の Bitbucket アカウントの公開キーと一致するかどうかをチェックします。


Git

$ ssh -T git@bitbucket.org

Mercurial

$ ssh -T hg@bitbucket.org
エージェントにキーがロードされていない場合:
$ ssh -T hg@bitbucket.org
Permission denied (publickey).
ローカル マシンが bitbucket.org の IP アドレスを取得できない場合:
$ ssh -T hg@bitbucket.org
ssh: connect to host bitbucket.org port 22: Connection refused
接続が正常に完了した場合:
$ ssh -T hg@bitbucket.org
conq: logged in as teamsinspace.
You can use git or hg to connect to bitbucket. Shell access is disabled.



SSH 接続の問題を突き止めるには

"Permission denied (publickey)" エラーが表示されていて、キーが SSH エージェントと Bitbucket アカウントで読み込まれていることを確認済みの場合、接続の問題の詳細情報を取得できます。

Git

$ ssh -v git@bitbucket.org

Mercurial

$ ssh -v hg@bitbucket.org

このコマンドにより取得できる情報のタイプには以下のようなものがあります。

  • ターミナルが読み取っている SSH 構成ファイル

  • IP アドレスがローカル マシンに接続されていること

  • 認証のためにロードする SSH キー
エラーの場合の応答
$ ssh -v hg@bitbucket.org
OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /Users/emmap1/.ssh/config
debug1: Applying options for bitbucket.org
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: Connecting to bitbucket.org [172.16.10.101] port 22.
debug1: Connection established.
debug1: identity file /Users/emmap1/.ssh/emmap1 type 1
debug1: identity file /Users/emmap1/.ssh/emmap1-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 zlib@openssh.com
debug1: kex: client->server aes128-ctr hmac-md5 zlib@openssh.com
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'bitbucket.org' is known and matches the RSA host key.
debug1: Found key in /Users/emmap1/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/emmap1/.ssh/emmap1
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).

この実行では、システムは emmap1 公開キーを最初に提供しました。これに失敗したため、システムは既定のキーを使用しようとしましたが、再び失敗しました。適切なキーで失敗する場合、 Permission denied (publickey) エラー メッセージのトラブルシューティングの手順を行います。

成功した場合の応答
$ ssh -v hg@bitbucket.org
OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /Users/manthony/.ssh/config
debug1: Applying options for bitbucket.org
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: Connecting to bitbucket.org [172.16.10.101] port 22.
debug1: Connection established.
debug1: identity file /Users/manthony/.ssh/manthony type 1
debug1: identity file /Users/manthony/.ssh/manthony-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 zlib@openssh.com
debug1: kex: client->server aes128-ctr hmac-md5 zlib@openssh.com
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'bitbucket.org' is known and matches the RSA host key.
debug1: Found key in /Users/manthony/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by serverhg
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/manthony/.ssh/manthony
debug1: Remote: Forced command: conq manthony
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
debug1: read PEM private key done: type RSA
Identity added: /Users/manthony/.ssh/manthony (/Users/manthony/.ssh/manthony)
debug1: read PEM private key done: type RSA
Connection closed by 172.16.10.101



ssh-agent の複数のバージョンを実行しているかどうかを確認する方法

読み込まれた SSH キーが 1 つ以上ある場合、コマンド ラインにpsと入力します。


$ ps
PID PPID PGID WINPID TTY UID STIME COMMAND
5192 1 5192 5192 ? 500 19:23:34 /bin/ssh-agent
5840 1 5840 5840 con 500 08:38:20 /bin/sh
6116 5840 6116 1336 con 500 08:38:22 /bin/ps

先ほどの応答では、実行中の ssh-agent が 1 つのみ表示されています。

  • /bin/ssh-agent – 実行中の ssh-agent
  • /bin/sh – ユーザーがいるシェル。
  • /bin/ps – ユーザーが実行しているプロセス。

このレスポンスで 2 つ以上の ssh-agent が返される場合、エージェントのすべてのバージョンを強制終了し、ssh-agent を再起動します。

各バージョンを強制終了するには、kill コマンドとプロセス ID を使用します。先ほどの例では、プロセス ID は 5192 です。

$ kill 5192
ssh-agent を再起動するには、以下を実行します。
$ eval 'ssh-agent'



使用する SSH キーがロードされていることを確認するには

ロード済みのキーを一覧表示するには、「ssh-add -l」と入力します (これは文字の l で数字の 1 ではありません)。この例では、異なる 2 つの異なるキーが返されます。

$ ssh-add -l
2048 4c:80:61:2c:00:3f:9d:dc:08:41:2e:c0:cf:b9:17:69 /Users/manthony/.ssh/workid (RSA)
2048 7a:9c:b2:9c:8e:4e:f4:af:de:70:77:b9:52:fd:44:97 /Users/manthony/.ssh/personalid (RSA)

利用したい SSH キーが表示されない場合、「ssh-add」に続けて、秘密キー ファイルへのパスを入力してキーを追加します。

$ ssh-add ~/.ssh/<private_key_file>

引き続き問題がある場合、すべての不要な SSH キーを削除します。

$ ssh-add -d ~/.ssh/<private_key_file>
Windows で Sourcetree を使用している場合

システム トレイで Pageant アイコンをダブルクリックして、Pageant の Key List ダイアログを開きます。


SSH キーが表示されない場合、[キーの追加] をクリックして追加します



ssh-agentが実行されているかどうかを確認するには

ps -e  | grep [s]sh-agent 」と入力して、実行されているかどうかを確認します。ssh-agent が実行されている場合、次の応答が表示されます。

$ ps -e  | grep [s]sh-agent
 9060 ??         0:00.28 /usr/bin/ssh-agent -l

エージェントが実行されていない場合、ターミナルで応答は返されません。この場合、次のコマンドを使用して、エージェントを手動で開始します。

$ ssh-agent /bin/bash
Windows で Sourcetree を使用している場合

システム トレイで、Pageant が実行されていることを確認します。

リストに含まれていない任意のキーを追加するには、[Add key] をクリックします。

最終更新日 2020 年 6 月 24 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.