FileZillaのSFTP接続を1Passwordの鍵認証にする
SSH鍵をディスクから消して1Passwordへ預けると、ターミナルのsshは通るのにFileZillaだけ接続できないことがあります。最初にssh -T myhostとssh-add -lを確認し、公開鍵ファイルとAgent上の鍵のSHA256が一致することを確かめます。
鍵を試しすぎて失敗する
Too many authentication failuresは、1Password Agentが提示する複数の鍵をFileZillaが順番に試し、正しい鍵へ到達する前にサーバーの試行上限を超えることで発生します。
ターミナルのSSHではIdentityFileとIdentitiesOnlyで絞れますが、FileZilla側で同じ制御が効かない場合は、Agentが出す鍵自体を作業中だけ1本にします。
[[ssh-keys]]
item = "対象サーバー用SSHキーの1Password項目名"
vault = "保管庫名"
itemは.pubのファイル名ではなく1Password内の項目名です。通常設定をdefault.tomlへ保存し、接続先ごとのプロファイルをprofiles/へ置きます。
切り替えと復元をスクリプトにする
作業前に対象プロファイルをagent.tomlへコピーし、ssh -Gから実ホスト名とユーザーを取得してfilezilla "sftp://user@host"を起動します。作業終了後は必ずdefault.tomlへ戻します。手動コピーでは復元を忘れるため、1つのスクリプトにまとめます。
FileZillaのKey file欄へ公開鍵を指定したり、サイトマネージャーへパスワードを保存したりしません。SFTP URL末尾の/はサーバーのルートを開く場合があるため付けません。ホストエイリアスの解決はssh -Gへ任せ、FileZillaには実ホストを渡します。
FileZillaのためだけに秘密鍵をディスクへ戻すのではなく、Agentの提示範囲を一時的に絞るのが安全な運用です。
今回は以上です。