インストールと更新

必要なもの

  • macOS 13以降を搭載したApple SiliconまたはIntel Mac。
  • 使用中のmacOSに対応したXcode 15以降。
  • リモート間コピーを使う場合は、MacのOpenSSH 9以降(ssh -V で確認)。
  • SSHの公開鍵認証で接続できるSFTPサーバーと、その接続情報。

make はアプリを作成する前にテストを実行します。XCTestを利用するため、Xcode本体をインストールしておいてください。Command Line Toolsだけの環境では、テストをビルドできない場合があります。

SFTPでの接続・転送にはmacOS標準のSSHとSFTPを使います。Finderとのフォルダ転送でrsyncを選ぶ場合は、Macと接続先の両方でrsyncを利用でき、接続先でSSH経由のコマンド実行が許可されている必要があります。SFTP専用の接続先では、SFTPの転送方法を選んでください。

アプリを作成する

  1. Xcodeをインストールし、一度起動してライセンスへの同意や追加コンポーネントのインストールを済ませます。
  2. ターミナルで次の3行をまとめてコピーして実行します。ソースコードの取得、取得したディレクトリへの移動、アプリの作成とインストールまでを続けて行います。
git clone https://github.com/sekika/opensftp.git
cd opensftp
make

テストに成功すると、アプリのビルドとインストールが続けて実行されます。完了すると、次の場所にアプリが作成されます。

~/Applications/OpenSFTP.app

~ は自分のホームフォルダです。保存先は Applications(複数形)で、フォルダがなければ自動で作成します。管理者用の /Applications ではなく、自分のホームフォルダ内にインストールします。

Finderから OpenSFTP.app を開くか、次のコマンドで起動します。

open "$HOME/Applications/OpenSFTP.app"

ビルドでエラーが出た場合は、困ったときはを確認してください。テストが失敗した場合は、その時点で make が停止し、アプリの作成・更新は行いません。

アプリ作成後、ソースコードが不要であれば、取得したリポジトリのフォルダを削除してもかまいません。インストール済みのアプリは引き続き使用できます。更新する際は、ソースコードを再度取得してください。

更新する

OpenSFTP にバージョン番号はありません。GitHub の最新のソースコードが常に最新版です。

GitHubのリポジトリ全体の履歴には、ドキュメントの修正も含まれます。プログラムの更新を確認する際は、Sourcesディレクトリの変更履歴を確認してください。

Git で取得したソースからビルドした場合は、「OpenSFTP → OpenSFTP について」でコミット ID と日時を確認できます。ビルド元に Git の履歴がない場合は、「コミット情報はありません」と表示されます。

アプリを終了し、ソースコードを更新してから、同じディレクトリで再度 make を実行します。既存の ~/Applications/OpenSFTP.app が更新されます。保存した表示設定や接続先の入力値は引き継がれます。

通常は使用中のMac向けのアプリを作成します。Apple SiliconとIntelの両方に対応するアプリを作りたい場合は、次を実行します。

UNIVERSAL=1 make

接続の準備

SSHの接続設定を用意する

接続先のサーバー名、ユーザー名、ポート番号、利用する鍵などを確認し、~/.ssh/config に設定します。公開鍵をサーバーへ登録する必要がある場合は、接続先の管理者の案内に従ってください。

設定例です。各値は実際の接続先に置き換えます。

Host example
    HostName sftp.example.com
    User yourname
    IdentityFile ~/.ssh/id_ed25519
    # 標準以外のポートを使う場合
    # Port 2222
    # 踏み台サーバーを使う場合
    # ProxyJump bastion

この例の example が、アプリで選択・入力する接続先の名前です。接続先の設定や鍵がすでに用意されている場合は、それをそのまま使えます。

ターミナルで接続を確認する

アプリを使う前に、同じMacのターミナルから接続してください。

sftp example

初回にホスト鍵の確認が出たら、接続先の鍵が正しいことを確認して登録します。接続できたら bye で終了します。

鍵にパスフレーズがある場合は、ssh-agentやmacOSのKeychain連携で、アプリからも利用できる状態にしておきます。既存の鍵をssh-agentへ追加する例は次のとおりです。

ssh-add ~/.ssh/id_ed25519

続いて、対話入力なしで接続できることを確認します。

sftp -oBatchMode=yes -oStrictHostKeyChecking=yes example

OpenSFTPには、パスワード・鍵のパスフレーズ・確認コードを入力する画面がありません。接続のたびにこれらの入力が必要な認証方法は利用できません。初回のホスト鍵確認もアプリでは行わず、未登録の鍵や一致しない鍵では接続を中止します。

認証には既存のOpenSSH設定、ssh-agent、Keychain連携を使います。OpenSFTPがパスワード・秘密鍵本文・パスフレーズを保存することはありません。

接続先の候補について

アプリの接続先候補には、~/.ssh/config に直接書かれた具体的な Host 名が表示されます。設定を変更したら、接続先欄の候補メニュー、または「接続 → 接続先候補を更新」で読み直します。

ワイルドカードを含む Host、否定パターン、Match 条件からは候補を作りません。Include 先のファイルに書かれた名前も、候補一覧には出ません。その場合は名前を直接入力してください。Include、ProxyJump、ポート、鍵などの接続設定自体は、OpenSSHの設定に従います。

接続する

  1. アプリを起動します。
  2. 最上部の接続先欄で候補を選ぶか、接続先の名前を入力します。
  3. 「接続する」を押すか、接続先欄でReturnを押します。
  4. 接続できると、サーバー側のホームフォルダが表示されます。

接続先には、SSH設定の名前、ホスト名、user@host、user@[IPv6] を入力できます。URL、host:path、ポート番号付きの文字列、オプション、空白を含む値は入力できません。ポート番号などは ~/.ssh/config に指定してください。

接続先欄の入力値は保存されます。次回起動時は名前だけが復元され、接続はしません。「接続する」またはReturnで接続を開始してください。

接続先を切り替えるときも、欄の値を変更して「接続する」を押します。実行中の処理がある間は、接続先を変更できません。

アンインストールと設定の初期化

アプリを終了し、Finderで ~/Applications/OpenSFTP.app をごみ箱へ移動すると、アプリを削除できます。ソースコードが不要であれば、取得したリポジトリのフォルダも別途削除できます。

表示設定や保存した接続先なども初期化したい場合は、アプリを終了してから、ターミナルで次を実行します。

defaults delete local.opensftp.desktop

この操作はOpenSFTPの保存設定を削除します。~/.ssh/config、SSHの鍵、known_hosts、転送したファイルは削除しません。