1. Home
  2. /
  3. サービス
  4. /
  5. 1passwordのSSHキー管理状態で踏み台を設定する

1passwordのSSHキー管理状態で踏み台を設定する

1passwordのSSHキー管理状態で踏み台を設定する

結論


Host humidai
  HostName humidai.example.com
  User user
  IdentityAgent "~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"
  IdentityFile "~/.ssh/humidai.pub"

Host target-server
  HostName target-server.example.com
  User user
  ProxyCommand ssh humidai -W %h:%p
  IdentityAgent "~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"
  IdentityFile "~/.ssh/target-server.pub"

のConfigでクライアント側の1password管理のキーを使用して踏み台サーバーへの接続を行います。

序文

SSH接続は人類が生きていく上で欠かせない行動のひとつです。普段自宅のリソースへはTailscaleでVPN接続をしそこからSSHへ接続を行っています。

しかし、移動中の接続構成としてはあまり良くありません。電車で時速100kmを超えてくるとときどき詰まりを感じますし、新幹線で時速200kmを超えるとかなり苦痛になってきます。

TailscaleはWiregurdベースの技術でありVPN接続技術のなかではオーバーヘッドが少なく優秀な技術の認識です。

About WireGuard · Tailscale Docs

Learn how Tailscale builds on WireGuard to offer single sign-on (SSO) and other capabilities.

となるとVPNの選定を変えたとしてもこれ以上の改善を期待できそうにないため他の手法でのアクセス方法を検討します。

そこで古典的な踏み台接続に変更をすることにしました。踏み台にしたところで、クラウドに設置している踏み台から自宅リソースへのアクセスはVPNのためむしろ経由が1階層多くなるだけです。

そんな中見つけた物がquicssh-rsです。

GitHub - oowl/quicssh-rs: QUIC proxy that allows to use QUIC to connect to an SSH server without needing to patch the client or the server.

QUIC proxy that allows to use QUIC to connect to an SSH server without needing to patch the client or the server. - oowl/quicssh-rs

QUICでSSH通信をプロキシすることで、パケロスやIPアドレスの変更に強くなります。これで新幹線の中でも快適にSSH接続ができるようになるはずです。

そしてここからが本題ですが、普段SSHキーの管理はすべて1passwordで管理しています。この場合に踏み台サーバーには鍵を配置せずに端末側にだけ1passwordを入れている状態で踏み台接続ができるようになれば理想です。

本記事ではその方法について解説しますが、SSHのconfigを貼れば終わる話なのでそろそろこの記事は終わりです。

解説

基本的には普通の踏み台SSHの書き方と変わりません。

1passwordならではの設定としては、IdentityAgentで1passwordのエージェントを指定します。

IdentityFileでSSH接続する公開鍵を指定します。

公開鍵を指定する理由ですが、1Passwordではどのホストにどのキーを利用するかの情報を持っていません。 そのためデフォルトではすべてのキーを総当たりで利用しようとします。6個以上のキーペアを保存しているとSSH接続をする際の試行回数が最大値を超えてしまいます。

そのため、このHostはこの公開鍵とconfigに設定することで、1Passwordのエージェントがどのキーを利用するかを指定しています。

Advanced use cases | 1Password Developer

Learn more about how to use the SSH agent for specific hosts, avoid authentication limits, and sign Git commits in multiple GitHub accounts.

サーバーへの接続設定が増えるたびにここの記載が必要なため、SSHのConfigを1Passwordが管理するような仕様にしてくれると良いのにな……と日々思います。

サイト内の商品リンクは一部アフィリエイトリンクとなっています

関連記事

Google Cloudの利用料金を毎日Discordに投稿する

Google Cloudの利用料金を毎日Discordに投稿する

最近、LLMサービスはGeminiを中心に利用しています。高い品質が求められる場合はClaude Sonnet 3.7やo3などを使い分けていますが、手軽な要約や翻訳といったタスクでは、Gemini flash 2.0が第一候補です。 YouTubeの字幕翻訳、Webページの翻訳、Discord常駐Botなど、これら全てにGemini flash 2.0を活用しています。 大量に利用しても1日の料金は数円程度とわずかですが、従量課金制のため、毎日の利用料金をDiscordに通知できると安心感が増します。
Cloudflare Tunnelを使って自宅サーバーをポート開放せずに公開する

Cloudflare Tunnelを使って自宅サーバーをポート開放せずに公開する

自宅サーバーを立てていると、外部からアクセスしたい時にポート開放が必要になります。しかし、ポート開放はセキュリティ上のリスクがあるため、できるだけ避けたいものです。そこで、Cloudflare Tunnelを使って自宅サーバーをポート開放せずに公開する方法を紹介します。 今回公開するもの 今回はMinecraftサーバーのDynmapを公開します。 DynmapとはMinecraftサーバーのプラグインでゲームのワールドデータをWebブラウザで閲覧できるようにするものです。ワールドデータを手軽に俯瞰してみることができますのでMinecraftサーバーを運用する方はまず入れることが多いプラグインです。