> For the complete documentation index, see [llms.txt](https://manual.dxable.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://manual.dxable.com/1password/ssh-agent-forwarding-with-1password.md).

# 1PasswordによるSSHエージェントフォワーディング

### **1PasswordによるSSHエージェントフォワーディング** <a href="#xkdakknq1wut" id="xkdakknq1wut"></a>

[SSHエージェントフォワーディングを使うと、クラウド開発環境](https://developer.1password.com/docs/ssh/agent/forwarding/#cde)や[リモートワークステーション](https://developer.1password.com/docs/ssh/agent/forwarding/#remote-workstation)からGitコマンドを実行したりコミットに署名したりするなど、ローカルマシンであるかのようにリモート環境内でSSHリクエストを行うことができます。

リモートホストに秘密鍵をSaveする代わりに、SSHエージェントフォワーディングを使用してリクエストをローカルの1PasswordSSHエージェントに転送できます。次に、秘密鍵がローカルの1Passwordプロセスを離れることなく、生体認証でリクエストを承認できます。

### &#x20;<a href="#d449nut8ullf" id="d449nut8ullf"></a>

### 必要条件 <a href="#zbw8z2h20ve1" id="zbw8z2h20ve1"></a>

* [Mac](https://support.1password.com/get-the-apps/?mac)または[Linux](https://support.1password.com/get-the-apps/?linux)用の1Passwordをインストールしてサインインしてください。
* [1PasswordでSSH鍵をインポートまたは生Createしてください。](https://developer.1password.com/docs/ssh/manage-keys/)
* [1Password SSHエージェントを設定し](https://developer.1password.com/docs/ssh/get-started/#step-3-turn-on-the-1password-ssh-agent)、ローカルマシン上で実行されていることを確認してください。

💡Windowsをお使いの場合

SSHエージェントフォワーディングはWindowsではサポートされていませんが、[1Password WSL統合を設定して](https://developer.1password.com/docs/ssh/integrations/wsl)、WindowsホストからWSLインスタンスでSSHリクエストを認証できます。

### &#x20;<a href="#bsiijr6fw56u" id="bsiijr6fw56u"></a>

### SSHエージェントフォワーディング <a href="#ebe6gg7dji7y" id="ebe6gg7dji7y"></a>

リモートホストのエージェントフォワーディングを有効にすると、リモート環境内で行う全SSHリクエストが1PasswordSSHエージェントソケットを介してローカルの1Passwordプロセスに転送されます。

1Passwordで設定したオプション（フィンガープリントなど）を使ってSSHリクエストをローカルで承認できます。その後、リモートサーバーに秘密鍵を提供しなくても、承認がリモートホストに転送されます。

⚠️注意

SSHエージェントフォワーディングは信頼できるホストでのみ使うようにしてください。こちらで[SSHエージェントフォワーディングをより安全に使う方法について学習してください。](https://developer.1password.com/docs/ssh/agent/forwarding/#security)

### &#x20;<a href="#xlcp8vywioo4" id="xlcp8vywioo4"></a>

### SSHエージェントフォワーディングを準備する <a href="#id-2oxzbphyrjs6" id="id-2oxzbphyrjs6"></a>

OpenSSHでは、SSHエージェントフォワーディングはデフォルトでオフになっています。[単一のセッション](https://developer.1password.com/docs/ssh/agent/forwarding/#for-a-single-session)または[特定のホスト](https://developer.1password.com/docs/ssh/agent/forwarding/#for-a-specific-host)に対してオンにすることを選択できます。

#### シングルセッション用に準備する <a href="#ozcgoiereazi" id="ozcgoiereazi"></a>

シングルセッションのみエージェントフォワーディングをオンにするには、次のsshコマンドで-Aフラグを使用します。

ssh -A <user@example.com>

エージェントフォワーディングをオンにしてリモートホストに接続すると、リモートホストの環境変数SSH\_AUTH\_SOCKが自動的に設定されます。このソケット経由で送信されたデータは、ローカルの1Passwordソケットに転送されます。

<user@example.com>:\~$ echo $SSH\_AUTH\_SOCK\
結果の例：\
/tmp/ssh-XXXXNpdlnL/agent.151

エージェントフォワーディングが機能しているかどうかを確認するには、次のコマンドを実行して、1Passwordからリモートホストに転送されたSSH鍵のリストを表示させます。

<user@example.com>:\~$ ssh-add -l\
結果の例：\
256 SHA256:2zmxMpLy5MeIx18pBUkumptKkKinlghygOvV6URe8QI SSH Key from 1Password (ED25519)

\
SSH鍵がリストに表示されたら、リモートサーバー内からSSHリクエストを実行してみてください。

<user@example.com>:\~$ ssh -T <git@github.com>

ローカルマシン上の1Passwordアプリで、リクエストを承認するように求められます。

#### 特定のホスト用に準備する <a href="#qy04sok3ym12" id="qy04sok3ym12"></a>

セッションごとに-Aフラグを使う必要がないように、特定のホストに対してSSHエージェントフォワーディングを常に設定したい場合は、そのホストを含​​めるように\~/.ssh/configファイルを編集します。<br>

例（Host example.com）\
ForwardAgent yes

### &#x20;SSHエージェントフォワーディングのセキュリティー <a href="#vchz3badxe7" id="vchz3badxe7"></a>

### **セキュリティーに関する考慮事項** <a href="#v9izbjvkax5p" id="v9izbjvkax5p"></a>

エージェントフォワーディングセッションでローカルターミナルやIDEやその他のSSHクライアントにSSH鍵の使用を許可すると、同じキーを使用してリモート環境内で行われる全ての新しい接続も許可されます。他のユーザーが同じOSユーザーとしてリモート環境にアクセスした場合、セッション中はSSH鍵を使用してリモートホストからの接続を認証できます。

ただし、リモート環境で利用可能なその他のSSH鍵は、使う前にユーザーの承認が必要です。エージェント内の全ての鍵をリモート環境で追加の承認なしに使える標準のOpenSSHエージェントとは異なり、1PasswordSSHエージェントでは、各SSH鍵を使う前にユーザーの承認が必要です。リモート環境からこれらの鍵のいずれかを使おうとすると、認証が必要な1Password承認プロンプトが表示されるため、エージェントフォワーディングはOpenSSHエージェントよりも1Passwordの方が安全です。

#### **エージェントフォワーディングをより安全に利用するには** <a href="#fg5prl7ha42e" id="fg5prl7ha42e"></a>

以下のことをお勧めします。

* エージェントフォワーディングは、必要な場合かつ安全であると信頼できる環境でのみ使用してください。
* [コマンドごと](https://developer.1password.com/docs/ssh/agent/forwarding/#for-a-single-session)にエージェントフォワーディングを設定するか、[特定のホストでのみ](https://developer.1password.com/docs/ssh/agent/forwarding/#for-a-specific-host)エージェントフォワーディングを許可するように\~/.ssh/configファイルを準備してください。デフォルトでは、全ホストに対してSSHエージェントフォワーディングをオンにしたりしないでください。

\~/.ssh/config（悪い例 👎）\
Host \*\
ForwardAgent yes

エージェントフォワーディングのために、常にForwardAgent yesディレクティブのスコープを特定のホストまたはドメインに絞ることをお勧めします。例えば、 [Gitpod](https://www.gitpod.io/)のエージェントフォワーディングをオンにするには、以下のようにしてください。

\~/.ssh/config （良い例👍）\
Host \*.gitpod.io\
ForwardAgent yes

### &#x20;<a href="#hcxrl9q3qyt4" id="hcxrl9q3qyt4"></a>

### **ユースケース：クラウド開発環境** <a href="#opue3k5p5ztj" id="opue3k5p5ztj"></a>

ローカルの統合開発環境（IDE）を使ってクラウド開発環境（CDE）に接続し、リモートGitコミットをプル、プッシュ、署名する場合は、ローカルの1PasswordSSHエージェントを介してこれらのコマンドを認証できます。

例えば、クラウドベースの開発環境への認証に使うIDEデスクトップアプリがローカルワークステーションにあるとします。リモートGitリポジトリーにアクセスするには、CDEワークスペースを使い、Gitリクエストを認証してコミットに署名する必要があります。SSHエージェントフォワーディングを使うと、ローカルワークステーションで実行されている1PasswordSSHエージェントを介して、IDEデスクトップアプリでCDEワークスペースからのSSHおよびGitコマンドを認証できます。

#### &#x20;<a href="#mnlmk0ym6cdq" id="mnlmk0ym6cdq"></a>

#### **SSHエージェントフォワーディング** <a href="#yuddmcmyvubz" id="yuddmcmyvubz"></a>

クラウド開発環境からのGitリクエストを承認できるようにSSHエージェントフォワーディングを設定するには、[SSH設定ファイルを編集してCDEホストを追加します](https://developer.1password.com/docs/ssh/agent/forwarding/#for-a-specific-host)。IDEのリモート開発統合では、これを自動的に認識するはずです。

エージェントフォワーディングが正しく設定されているかどうかを確認するには、IDEでリモートシェルを開き、次のコマンドを実行します。

$ ssh-add -l

結果の例：\
256 SHA256:2zmxMpLy5MeIx18pBUkumptKkKinlghygOvV6URe8QI SSH Key from 1Password (ED25519)

エージェントがSSHリクエストに使えるSSH鍵のリストが表示されます。

#### &#x20;<a href="#wytp6n8r2oog" id="wytp6n8r2oog"></a>

#### **Git認証にSSHを使う** <a href="#n8e3e5exnihe" id="n8e3e5exnihe"></a>

CDEがGitでの認証にHTTPSを使うように設定されていて、代わりにSSHを使う場合は、次のコマンドを実行してCDEのリモートGitの設定を変更します。

$ git config --global url."ssh://git@".insteadOf "https\://"

あるいは、クラウド開発を初期化するスクリプト（cloud-init）またはドットファイルにコマンドを追加することもできます。

次回CDEからGitリクエストを行うと、1Passwordはリクエストを承認するように要求します。

例：

$ git fetch

\
今後SSH認証のみを使う場合は、リポジトリーへのHTTPS書き込みアクセスを取り消すことをお勧めします。

#### &#x20;**Gitコミット署名を準備する** <a href="#yyj6g3p4mr6b" id="yyj6g3p4mr6b"></a>

ローカル.gitconfigファイルはクラウド開発環境に自動的に転送されないため、リモートGitコミット署名を設定するには、CDEのGit設定を変更する必要があります。

* コミット署名にSSHを使うようにGitを設定します。

git config --global gpg.format ssh

* コミットに常に署名するようにGitに指示します。

git config --global commit.gpgsign true

* コミットに署名するために使うSSH鍵を設定します。

git config --global user.signingkey \<your SSH public key>

#### &#x20;<a href="#m25655c37qgw" id="m25655c37qgw"></a>

#### **認証モデル** <a href="#drub0sv2ivjy" id="drub0sv2ivjy"></a>

クラウド開発環境で認証が必要なSSHまたはGitリクエストを実行すると、1PasswordはCDEに接続されているIDEのSSH鍵の使用を承認するように求めます。リクエストを承認すると、IDE全体がそのキーの使用を承認されます。同じOSユーザーでクラウド開発環境で実行されている全てのプロセスも承認されるため、[セキュリティー上の考慮事項](https://developer.1password.com/docs/ssh/agent/forwarding/#security)として留意する必要があります。

### **使用例：リモートワークステーション** <a href="#vpz764kz70rd" id="vpz764kz70rd"></a>

SSH経由で接続するリモートワークステーションがあり、そのワークステーションからSSHおよびGitリクエストを実行する場合は、ローカルホストで実行される1Passwordエージェントを通じてそれらのリクエストを認証できます。

例えば、自宅に全てのGitリポジトリーを含むデスクトップワークステーションがあるとします。外出先でCreate業したい場合は、ラップトップを使用してSSH経由でリモートワークステーションに接続し、GitリポジトリーでCreate業します。SSHエージェントフォワーディングを使うと、ローカルラップトップで実行されている1PasswordSSHエージェントを介して、リモートワークステーションからのSSHおよびGitコマンドを認証できます。

#### &#x20;<a href="#otfhu8c16ndu" id="otfhu8c16ndu"></a>

#### **SSHエージェントフォワーディング** <a href="#wk1ifyd6tetx" id="wk1ifyd6tetx"></a>

リモートワークステーションからのSSHおよびGitリクエストを承認できるようにSSHエージェントフォワーディングを設定するには、ローカルホスト上の[SSH設定ファイルを編集して](https://developer.1password.com/docs/ssh/agent/forwarding/#for-a-specific-host)、リモートワークステーションでのエージェントフォワーディングを許可します。

エージェントフォワーディングが正しく設定されているかどうかを確認するには、リモートワークステーションに接続し、次のコマンドを実行します。

$ ssh-add -l

結果の例：

256 SHA256:2zmxMpLy5MeIx18pBUkumptKkKinlghygOvV6URe8QI SSH Key from 1Password (ED25519)

エージェントがSSHリクエストに使えるSSH鍵のリストが表示されます。

#### &#x20;<a href="#gktle9hkavbn" id="gktle9hkavbn"></a>

#### **リモートワークステーション上でIdentityAgentの設定を変更する** <a href="#v8rfgg6632xt" id="v8rfgg6632xt"></a>

リモートワークステーションにも1PasswordSSHエージェントがインストールされている場合は、GitとSSHが、リモートワークステーションにインストールされている1Passwordアプリのエージェントソケットではなく、ローカルホストから転送されたソケットを使うようにしてください。

IdentityAgentは環境変数SSH\_AUTH\_SOCKよりも優先されるため、SSHシェルを使用していない場合にのみ設定が適用されるように、リモートワークステーションの\~/.ssh/configIdentityAgentファイルを例えば次のように変更することをお勧めします。

Match host \* exec "test -z $SSH\_TTY"

IdentityAgent "\~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"

\
その後、リモートワークステーションのSSHシェルから実行される全てのGitまたはSSHコマンドは、SSH\_AUTH\_SOCK認証に転送されたものを使用し、1PasswordはローカルホストからのSSHリクエストを承認するように要求します。

この変更は、ワークステーションにリモートでアクセスするのではなく、ローカルで使う場合の1PasswordSSHエージェントの実行方法には影響しません。IdentityAgentワークステーションで実行されているSSHエージェントを使うために、設定は通常通り適用されます。

#### &#x20;<a href="#id-5r4hhsa93pja" id="id-5r4hhsa93pja"></a>

#### **Gitコミット署名を準備する** <a href="#qo4u3dtf6qyx" id="qo4u3dtf6qyx"></a>

ローカル.gitconfigファイルはリモートワークステーションに自動的に転送されないため、デフォルトではリモートGit設定が使われます。

ローカルホストで使用しているのと同じSSH鍵を使って、リモートワークステーションで[1PasswordによるGitコミット署名](https://developer.1password.com/docs/ssh/git-commit-signing)を設定している場合は、設定を変更する必要はありません。

op-ssh-sign署名プログラムは、SSH\_AUTH\_SOCKとSSH\_TTYの両方の環境変数が設定されていることを検出すると、リモートワークステーションの1Passwordソケットではなく、ローカルホストから転送されたソケットを使うように自動的に適応します。

#### &#x20;<a href="#rweeo4k5wfo" id="rweeo4k5wfo"></a>

#### **認証モデル** <a href="#id-72zy43tso2rm" id="id-72zy43tso2rm"></a>

リモートシェルまたはリモートで接続されたIDEから認証が必要なSSHまたはGitリクエストを実行すると、1Passwordは、リモートワークステーションへの接続に使うターミナルまたはIDEのSSH鍵の使用を承認するように求めます。

リクエストを承認すると、アプリ全体がこのキーの使用を許可されます。同じOSユーザーの下でリモートワークステーション上で実行されている全てのプロセスも許可されるため、[セキュリティー上の考慮事項](https://developer.1password.com/docs/ssh/agent/forwarding/#security)として留意する必要があります。

### **トラブルシューティング** <a href="#ctcfe54xoivb" id="ctcfe54xoivb"></a>

1Password SSH Agentでエージェントフォワーディングを使う際に問題が発生する場合は、確認すべき点がいくつかあります。<br>

#### **SSH\_AUTH\_SOCK環境変数が設定されているかどうかを確認する** <a href="#ulq48nrukljt" id="ulq48nrukljt"></a>

「echo $SSH\_AUTH\_SOCK」をターミナルで実行して、サーバー上でこの環境変数が設定されていることを確認します。

<user@example.com>:\~$ echo $SSH\_AUTH\_SOCK

結果の例：

/tmp/ssh-XXXXNpdlnL/agent.151

変数が設定されていない場合、SSHエージェントフォワーディングは機能しません。[1Password SSHエージェントがオンになっていること](https://developer.1password.com/docs/ssh/get-started#step-3-turn-on-the-1password-ssh-agent)、および[認証にエージェントを使うようにSSHクライアントが設定されて](https://developer.1password.com/docs/ssh/get-started#step-4-configure-your-ssh-or-git-client)いることを確認してください。<br>

#### **SSHエージェントが正しいSSHキーにアクセスできるかを確認する** <a href="#ovoo37ho817v" id="ovoo37ho817v"></a>

ターミナルで「ssh-add -l」を実行すると、1Passwordからリモートホストに転送されたSSH鍵のリストが表示されます。

<user@example.com>:\~$ ssh-add -l

結果の例：

256 SHA256:2zmxMpLy5MeIx18pBUkumptKkKinlghygOvV6URe8QI SSH Key from 1Password (ED25519)

\
SSH鍵がリストに表示されない場合は、そのキーが[1PasswordSSHエージェントで使えるかどうか](https://developer.1password.com/docs/ssh/agent/#eligible-keys)、また[SSHエージェントが使うように設定されている保管庫にSaveされている](https://developer.1password.com/docs/ssh/agent/#configuration)かどうかを確認してください。<br>

#### **サーバー上でエージェントフォワーディングが許可されているかどうかを確認する** <a href="#setkycpku6nc" id="setkycpku6nc"></a>

リモートサーバーでエージェントフォワーディングを使うには、サーバーの[sshd\_config](https://man.openbsd.org/sshd_config)

[ファイル](https://man.openbsd.org/sshd_config)でAllowAgentForwardingオプションをYesに設定する必要があります。
