[{"data":1,"prerenderedAt":417},["ShallowReactive",2],{"content-/kusanagi-sftp-1password-connection-test":3,"all-pages-for-dir":398,"related-/kusanagi-sftp-1password-connection-test":399,"og-image-/kusanagi-sftp-1password-connection-test":416},{"id":4,"title":5,"body":6,"category":378,"concepts":379,"description":380,"extension":381,"meta":382,"navigation":383,"ogImage":379,"path":384,"project_name":379,"published":385,"publishedAt":386,"seo":387,"stem":388,"tags":389,"todo":396,"unpublished":385,"updatedAt":386,"__hash__":397},"pages/2026-07/2026-07-23/kusanagi-sftp-1password-connection-test.md","KUSANAGI SFTPへ1Password経由で接続した記録",{"type":7,"value":8,"toc":362},"minimark",[9,13,17,21,24,27,30,33,38,41,58,64,68,71,111,122,126,129,137,140,143,147,150,189,192,196,200,207,214,218,221,248,255,259,262,268,271,274,330,334,337,340,343,346,349,358],[10,11,5],"h1",{"id":12},"kusanagi-sftpへ1password経由で接続した記録",[14,15,16],"h2",{"id":16},"結論",[18,19,20],"p",{},"初回接続では、1Password CLIからパスワードを一時的に取得し、PythonのSFTPライブラリへ渡す「接続用ヘルパー」方式を使った。",[18,22,23],{},"その後、1Passwordで専用のEd25519鍵を作り、公開鍵だけをサーバーへ追加した。\nWindows標準のOpenSSHを使う対話ターミナルでは、パスワードを入力せずに接続できることまで確認した。",[18,25,26],{},"ただし、Codexのバックグラウンド実行では、1Passwordによる署名承認を待つ処理がタイムアウトした。\nサーバーは公開鍵を受理しているため、鍵やサーバー設定の問題ではなく、実行環境から1Passwordの承認を完了できるかどうかが残る課題である。",[18,28,29],{},"FileZillaのパスワード接続設定と、サーバーのパスワード認証設定は変更していない。\nしたがって、今回の公開鍵追加によってFileZillaが使いにくくなることはない。",[14,31,32],{"id":32},"初回接続の確認",[34,35,37],"h3",{"id":36},"_1-sshポートへの到達性を確認","1. SSHポートへの到達性を確認",[18,39,40],{},"最初に、接続先の22番ポートへ到達できることを確認した。\n公開記事では接続先を伏せるため、以下ではプレースホルダーを使う。",[42,43,48],"pre",{"className":44,"code":45,"language":46,"meta":47,"style":47},"language-powershell shiki shiki-themes vitesse-light vitesse-light","Test-NetConnection -ComputerName \u003CSERVER_HOST> -Port 22\n","powershell","",[49,50,51],"code",{"__ignoreMap":47},[52,53,56],"span",{"class":54,"line":55},"line",1,[52,57,45],{},[18,59,60,63],{},[49,61,62],{},"TcpTestSucceeded: True","を確認してから、認証方法の調査へ進んだ。",[34,65,67],{"id":66},"_2-公開鍵認証だけを試す","2. 公開鍵認証だけを試す",[18,69,70],{},"パスワードを使う前に、すでに利用できる公開鍵がないかを調べた。",[42,72,74],{"className":44,"code":73,"language":46,"meta":47,"style":47},"& \"C:\\Windows\\System32\\OpenSSH\\ssh.exe\" `\n  -o PreferredAuthentications=publickey `\n  -o PasswordAuthentication=no `\n  -o BatchMode=yes `\n  -o ConnectTimeout=10 `\n  \u003CSSH_USER>@\u003CSERVER_HOST> \"echo OK\"\n",[49,75,76,81,87,93,99,105],{"__ignoreMap":47},[52,77,78],{"class":54,"line":55},[52,79,80],{},"& \"C:\\Windows\\System32\\OpenSSH\\ssh.exe\" `\n",[52,82,84],{"class":54,"line":83},2,[52,85,86],{},"  -o PreferredAuthentications=publickey `\n",[52,88,90],{"class":54,"line":89},3,[52,91,92],{},"  -o PasswordAuthentication=no `\n",[52,94,96],{"class":54,"line":95},4,[52,97,98],{},"  -o BatchMode=yes `\n",[52,100,102],{"class":54,"line":101},5,[52,103,104],{},"  -o ConnectTimeout=10 `\n",[52,106,108],{"class":54,"line":107},6,[52,109,110],{},"  \u003CSSH_USER>@\u003CSERVER_HOST> \"echo OK\"\n",[18,112,113,114,117,118,121],{},"この時点では",[49,115,116],{},"Permission denied","となった。\nこれは、後で作成する1Passwordの公開鍵が、まだサーバーの",[49,119,120],{},"authorized_keys","に登録されていなかったためである。",[34,123,125],{"id":124},"_3-1passwordのパスワードで接続","3. 1Passwordのパスワードで接続",[18,127,128],{},"パスワードはチャットやスクリプトへ直接書かなかった。\n1Password CLIで一時取得し、環境変数を経由してPythonのParamikoへ渡した。",[42,130,135],{"className":131,"code":133,"language":134,"meta":47},[132],"language-text","1Password\n  ↓ 一時取得\nプロセスの環境変数\n  ↓\nParamikoによるSFTP接続\n","text",[49,136,133],{"__ignoreMap":47},[18,138,139],{},"この方式では、パスワードは画面、チャットログ、接続用ファイルに表示されない。\n一方で、接続処理のメモリ内には一時的に平文で存在する。",[18,141,142],{},"接続後は、サーバー上のホームディレクトリを読み取れることまで確認した。\n検証に使った一時環境とスクリプトは、作業後に削除した。",[14,144,146],{"id":145},"_1password-ssh-agentを使う公開鍵認証の追加","1Password SSH Agentを使う公開鍵認証の追加",[18,148,149],{},"パスワードを取り出さずに接続できるよう、次の設定を追加した。",[151,152,153,157,160,167,170,186],"ol",{},[154,155,156],"li",{},"1Passwordで接続専用のEd25519鍵を作成した。",[154,158,159],{},"1Password SSH Agentを有効にした。",[154,161,162,163,166],{},"既存の",[49,164,165],{},"~/.ssh/authorized_keys","を日時付きの名前でバックアップした。",[154,168,169],{},"既存の公開鍵を残したまま、新しい公開鍵を1行だけ追記した。",[154,171,172,175,176,179,180,175,182,185],{},[49,173,174],{},"~/.ssh","を",[49,177,178],{},"0700","、",[49,181,120],{},[49,183,184],{},"0600","に設定した。",[154,187,188],{},"書き込み後に、新しい公開鍵が存在することを再確認した。",[18,190,191],{},"秘密鍵は1Passwordの外へ出していない。\nサーバーへ登録したのは、公開しても秘密鍵を復元できない公開鍵だけである。",[14,193,195],{"id":194},"接続テストで判明したwindows上の違い","接続テストで判明したWindows上の違い",[34,197,199],{"id":198},"git-bash付属のsshでは鍵が見えなかった","Git Bash付属のsshでは鍵が見えなかった",[18,201,202,203,206],{},"Git Bash付属の",[49,204,205],{},"/usr/bin/ssh","を使ったテストでは、1Passwordに保存した鍵が候補に現れず、公開鍵認証に失敗した。",[18,208,209,210,213],{},"1Password SSH Agentは、Windowsの名前付きパイプを通じて鍵の署名機能を提供する。\nGit Bash付属のsshは、初期状態ではUnix形式の",[49,211,212],{},"SSH_AUTH_SOCK","を探すため、このWindows側の経路を利用できなかった。",[34,215,217],{"id":216},"windows標準opensshでは成功した","Windows標準OpenSSHでは成功した",[18,219,220],{},"Claude Codeの対話ターミナルから、Windows標準のOpenSSHを明示して再試行した。",[42,222,224],{"className":44,"code":223,"language":46,"meta":47,"style":47},"& \"C:\\Windows\\System32\\OpenSSH\\ssh.exe\" `\n  -o PreferredAuthentications=publickey `\n  -o PasswordAuthentication=no `\n  -o KbdInteractiveAuthentication=no `\n  \u003CSSH_USER>@\u003CSERVER_HOST> \"echo KEY_AUTH_OK\"\n",[49,225,226,230,234,238,243],{"__ignoreMap":47},[52,227,228],{"class":54,"line":55},[52,229,80],{},[52,231,232],{"class":54,"line":83},[52,233,86],{},[52,235,236],{"class":54,"line":89},[52,237,92],{},[52,239,240],{"class":54,"line":95},[52,241,242],{},"  -o KbdInteractiveAuthentication=no `\n",[52,244,245],{"class":54,"line":101},[52,246,247],{},"  \u003CSSH_USER>@\u003CSERVER_HOST> \"echo KEY_AUTH_OK\"\n",[18,249,250,251,254],{},"1Password SSH Agentが専用鍵を提示し、サーバーが受理した。\n最終的に",[49,252,253],{},"KEY_AUTH_OK","が返り、この対話ターミナルではパスワードなしで接続できることを確認した。",[14,256,258],{"id":257},"codexのバックグラウンド実行で残った課題","Codexのバックグラウンド実行で残った課題",[18,260,261],{},"Codexから同じWindows標準OpenSSHを使った詳細ログでは、サーバーが新しい公開鍵を受理するところまで進んだ。\nその後、1Passwordに署名を依頼する段階で通信がタイムアウトした。",[42,263,266],{"className":264,"code":265,"language":134,"meta":47},[132],"公開鍵の提示\n  ↓\nサーバーが公開鍵を受理\n  ↓\n1Passwordへ署名を依頼\n  ↓\nCodexのバックグラウンド実行では承認待ちがタイムアウト\n",[49,267,265],{"__ignoreMap":47},[18,269,270],{},"この結果は、Claude Codeの成功と矛盾しない。\nサーバーと鍵の設定は正しいが、1Passwordの承認画面を扱えるかどうかが、対話ターミナルとバックグラウンド実行で異なるためである。",[18,272,273],{},"現時点の検証結果は次のとおり。",[275,276,277,293],"table",{},[278,279,280],"thead",{},[281,282,283,287,290],"tr",{},[284,285,286],"th",{},"実行環境",[284,288,289],{},"結果",[284,291,292],{},"状態",[294,295,296,308,319],"tbody",{},[281,297,298,302,305],{},[299,300,301],"td",{},"Windows標準OpenSSHを使う対話ターミナル",[299,303,304],{},"成功",[299,306,307],{},"公開鍵認証を利用可能",[281,309,310,313,316],{},[299,311,312],{},"Git Bash付属のssh",[299,314,315],{},"失敗",[299,317,318],{},"1Password SSH AgentのWindows側経路を認識しない",[281,320,321,324,327],{},[299,322,323],{},"Codexのバックグラウンド実行",[299,325,326],{},"署名段階でタイムアウト",[299,328,329],{},"1Passwordの承認方法を追加確認する必要がある",[14,331,333],{"id":332},"filezillaへの影響","FileZillaへの影響",[18,335,336],{},"今回行ったのは、サーバーへ新しい公開鍵を追加する作業である。\nパスワード認証を無効にする作業ではない。",[18,338,339],{},"そのため、FileZillaは従来どおりパスワードで接続できる。\n将来、FileZillaも公開鍵認証へ移行することはできるが、今回の作業とは分けて判断できる。",[14,341,342],{"id":342},"今後の運用",[18,344,345],{},"対話ターミナルから接続するときは、Windows標準OpenSSHと1Password SSH Agentによる公開鍵認証を優先する。",[18,347,348],{},"Codexのバックグラウンド実行では、署名承認を安定して完了できる方法が確認できるまで、1Passwordのパスワードを一時利用する接続用ヘルパーを代替手段として残す。\nこの場合も、パスワードを画面、チャット、ファイルへ出さない。",[18,350,351,352,357],{},"設定の意味と画面ごとの選び方は、",[353,354,356],"a",{"href":355},"/1password-ssh-agent-coding-agent-setup","1Password SSH AgentでコーディングエージェントのSSH接続を安全にする","に整理した。",[359,360,361],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":47,"searchDepth":83,"depth":83,"links":363},[364,365,370,371,375,376,377],{"id":16,"depth":83,"text":16},{"id":32,"depth":83,"text":32,"children":366},[367,368,369],{"id":36,"depth":89,"text":37},{"id":66,"depth":89,"text":67},{"id":124,"depth":89,"text":125},{"id":145,"depth":83,"text":146},{"id":194,"depth":83,"text":195,"children":372},[373,374],{"id":198,"depth":89,"text":199},{"id":216,"depth":89,"text":217},{"id":257,"depth":83,"text":258},{"id":332,"depth":83,"text":333},{"id":342,"depth":83,"text":342},"dev",null,"1Passwordのパスワードを使った初回接続から、1Password SSH Agentによる公開鍵認証の設定と検証までを、認証情報を伏せて整理した作業記録。","md",{},true,"/kusanagi-sftp-1password-connection-test",false,"2026-07-23T00:00:00.000Z",{"title":5,"description":380},"2026-07/2026-07-23/kusanagi-sftp-1password-connection-test",[390,391,392,393,394,395],"1Password","SFTP","SSH","接続テスト","Claude Code","Codex","memo","VP95_lqD711WArEkmhGzKV3z7Cll57ztUvsfT2OERrg",[],[400,401,405,409,412],{"title":356,"path":355,"publishedAt":386},{"title":402,"path":403,"publishedAt":404},"Instagram連携型サイトの実装をAIに任せ、Meta連携は自分の手で進めた記録","/instagram-store-site-review-workflow","2026-07-21T00:00:00.000Z",{"title":406,"path":407,"publishedAt":408},"1Password EnvironmentsのMCP連携がWindowsで解禁 — Claude Code / Codexへの設定手順と実機検証","/1password-mcp-windows-claude-codex","2026-07-18T00:00:00.000Z",{"title":410,"path":411,"publishedAt":408},"ブログの更新日表示とClaude Code利用コストの月次チャート化、サイト運用と計測の小ネタ集","/site-ops-small-improvements",{"title":413,"path":414,"publishedAt":415},"OpenAIがClaude Codeで自社モデルを動かす手順を自ら公開した。逆方向は規約違反なのに","/gpt-56-sol-claude-code-harness","2026-07-14T00:00:00.000Z","https://log.eurekapu.com/og/blog/kusanagi-sftp-1password-connection-test.png?v=2026-07-23T00%3A00%3A00.000Z&title=KUSANAGI%20SFTP%E3%81%B81Password%E7%B5%8C%E7%94%B1%E3%81%A7%E6%8E%A5%E7%B6%9A%E3%81%97%E3%81%9F%E8%A8%98%E9%8C%B2&author=Kei%20Komatsu&sig=f11b3f3844a2fe3b",1784786430351]