【令和最新版】sshcontrolは使わないで!最近のGPGによるSSH認証のベストプラクティス
- Published on: 2025/2/9 - Archived snapshot date: Sat, 19 Apr 2025 20:42:21 +0900 - Category: Technology - Tags: GnuPG ## はじめに GnuPGユーザーがGPG鍵をSSH認証にも使おうとしたら、今…
Published:
- Published on: 2025/2/9
- Archived snapshot date: Sat, 19 Apr 2025 20:42:21 +0900
- Category: Technology
- Tags: GnuPG
## はじめに
GnuPGユーザーがGPG鍵をSSH認証にも使おうとしたら、今までは、`sshcontrol` を`gpg-agent`に渡すという、記事やブログの内容がほとんどだと思いますし、ChatGPTやLLMを使ったボットなどもこの内容を案内していますが、いつ からか、この`sshcontrol`を使う方法は非推奨になっていました。
```
const hello = "world!";
```
> This file is deprecated in favor of the "Use-for-ssh" attribute in the key files.
> (§ sshcontrol <https://www.gnupg.org/documentation/manuals/gnupg/Agent-Configuration.html> )
ここでは、それらの変更に対応した新しい?方法を示します。日本語でこれが解説されてあるのはGentoo LinuxのGnuPGのwikiぐらいでしょうか。
## 前提
すでにsshcontrolがあっても無くてもかまいません。
- GnuPG がインストールされている
- すでに秘密鍵や公開鍵をGPGが読みこんでいる
- GPG でSSH 接続したい先に同じ公開鍵がある
## 準備
SSH接続したいGPG鍵のKeygripを確認してください
### 方法1 gpg コマンドを使う
#### 鍵のIDや副鍵なども全て見る場合
```
gpg --list-secret-keys --keyid-format long --with-keygrip
```
鍵のIDは見なくても良い場合
```
gpg -k --with-keygrip
```
いずれにせよ、 --with-keygrip は必要ですね。
### 方法2 gpg-connect-agent を使う
```
gpg-connect-agent 'keyinfo --list' /bye
```
## セットアップ
### ssh認証にgpg-agentが関われるようにする
シェルの設定を行います。この手順自体はsshcontrol を使われていた方なら設定をしなくても良いはずです。
### gpg-agentにSSH接続に使って良い鍵を教える
```
gpg-connect-agent 'keyattr
```
#### 設定できたか確認する
```
gpg-connect-agent 'keyattr <登録したKEYGRIP> Use-for-ssh: ' /bye
```
と入力して、
```
D true
```
と出たらセットアップ終了です。
## 接続してみる
例えばGitHubにすでに今回登録したSSHの公開鍵を登録して、接続できるようにしている場合は
```
ssh -T git@github.com
```
で接続できます。
これで終了です!お疲れさまでした。
## sshcontrol から移行するには
sshcontrol には、鍵のKeygripが書かれているはずなので、それを一行ずつ上の手順を実行すれば良いはずです。
スクリプトを組んでもいいでしょう。
## トラブルシューティング
```
ssh -T git@github.com
```
に接続して、公開鍵の認証が出来ない場合は、シェルの設定の内容をもう一度確認したり、シェルからインタープリタ的に設定した後、シェルを閉じないでそのまま接続を行ってください。
また、以下のようなリセットコマンドもあります。
```
gpg-connect-agent reloadagent /bye
```
```
gpg-connect-agent updatestartuptty /bye
```
どちらも OK と帰ってきたらリセット完了です。
## おわりに
お読みいただきありがとうございました。近日中に、GPGにゼロから入門し、さらにSSH鍵など、様々な応用までカバーするための記事を公開する予定です。
## 参考
##
<https://security.stackexchange.com/questions/276688/now-that-sshcontrol-has-been-deprecated-how-to-use-gpg-key-for-ssh-authentica>