3 ポイント 投稿者 GN⁺ 2023-09-06 | 1件のコメント | WhatsAppで共有
  • SSHFS は SFTP を使ってリモートファイルシステムをマウントでき、多くの SSH サーバーでは SFTP アクセスがデフォルトでサポート・有効化されているため、サーバー側での作業なしに利用可能
  • deadbeefsociety/sshfs の保守フォークは、SSHFS がもはや放置状態ではなくなったためアーカイブ済みであり、利用対象は libfuse/sshfs
  • SSHFS は主要な Linux ディストリビューションに含まれており、複数のシステムで長年にわたる本番利用実績があるが、現在は定期的に活動しているコントリビューターがおらず、既知の問題は bugtracker にある
  • 現在のメンテナーは pull request の取り込みと定期リリースを続けているが、影響の大きい問題 への対応以外に開発へ割ける余力はなく、pull request を伴わないバグ報告や致命的ではない問題は応答を受けられない可能性が高い
  • 基本的な実行形式は sshfs [user@]hostname:[directory] mountpoint で、一般ユーザーとしての実行が推奨され、mountpoint はそのユーザーが所有している必要がある
    • ユーザー名を省略するとローカルのユーザー名を使用
    • ディレクトリを省略するとリモートのホームディレクトリをマウント
    • パスワードが必要な場合は、sshfs が実行する ssh がパスワード入力を要求
  • -oport=PORT を含む各種 ssh オプションを指定でき、マウント解除には Linux では fusermount -u mountpoint、BSD と macOS では umount mountpoint を使用
  • ビルドには libfuse 3.1.0 以上、または libfuse3 互換インターフェース、開発ヘッダー付きの Glib、Meson 0.38 以上、Ninja が必要で、テスト実行には py.test Python モジュールが必要

1件のコメント

 
GN⁺ 2023-09-06
Hacker News のコメント
  • ユーザー空間で動くものが欲しく、Emacsで問題ないなら、TRAMP “Transparent Remote (file) Access, Multiple Protocol” がある: https://www.gnu.org/software/tramp/
    MacBook Pro からサーバー上のファイルにアクセスするときによく使っている

    • TRAMP でいちばん良い点は、リモートシステム上のディレクトリに cd したあと、現在の作業ディレクトリからローカルマシンや別のリモートへファイルを cp でき、逆にローカルから現在のリモート作業ディレクトリへもコピーできること
      TRAMP を使う前は、リモートへ SSH 接続し、cdls でコピー先を探し、SSH セッションを切ってから scprsync でファイルを移動し、たいていまた SSH で入り直す必要があった
    • 参考までに、Emacs の機能のかなり多く、もしかすると大半または全部が Tramp と透過的に動作する。diredeshellmagit も含まれる
  • 興味深い。ずっと sshfs は OpenSSH の一部だと思っていたけれど、毎日新しいことを学ぶものだ
    Slackware で使っている sshfs も放置状態に見える: https://github.com/libfuse/sshfs
    リンク先の引用を見ると、このプロジェクトがその「次の担い手」になるのか気になる

    If you would like to take over this project, you are welcome to do so. Please fork it and develop the fork for a while. Once there has been 6 months of reasonable activity, please contact Nikolaus@rath.org and I'll be happy to give you ownership of this repository or replace with a pointer to the fork.
    Bluetooth で起きたことのように、RHEL の再編のせいで放置されたのかも気になる

    • OpenSSH のメンテナーが引き受けるのに向いていそう。自分もこれは Linux の中核的な SSH インフラだと思っていた
  • 参考までに、Mac で何年も macFUSE + sshfs を使っていたが、今は優れた Mountain Duck というツールだけをインストールして使っている。Finder とマウントポイントから SFTP エンドポイントにアクセスできる
    とても良いソフトウェアで、自分には必需品

    • 最近ふたたび rsync.net の顧客になったのだが、ドキュメントをざっと見ていて、Mac 連携の推奨オプションとしてまだ Fuse/sshfs が載っていることに少し驚いた: https://www.rsync.net/resources/howto/mac_sshfs.html
      数か月前にはこのために ExpanDrive/StrongSync を試し、Mountain Duck は今回初めて知った。Cyberduck は気に入っている。これから使ってみるつもりだが、うまく動いているなら他の人のためにそのページを更新してくれるとありがたい。それ以外は満足している顧客だ
    • 記録として残しておくと、macOS には今 https://www.fuse-t.org/ がある。カーネル拡張なしで動作し、バックグラウンドでローカルの NFS サーバーを立ち上げて macOS がそこへ接続する方式
      sshfs の実装も https://github.com/macos-fuse-t/fuse-t/wiki#sample-filesyste... に載っている
    • 自分も Mountain Duck を主に使っている。ただし VSCode では、Microsoft の Remote SSH 拡張が VM や他のリモートマシン上のリポジトリ作業にとても役立つ
      macOS で Libfuse/SSHFS は数年前からかなり扱いづらくなっていて、それで自分も Mountain Duck に移った
  • sshfs がもうメンテナンスされていないとは残念だ。学校でリモート計算サーバーに Vim プラグインを全部インストールしなくても、自分の大量の Vim プラグインでコードを編集するために sshfs を使っていた
    思ったよりシステムがとても滑らかに動いて驚いた

  • SFTP は良いのに過小評価されているプロトコルだと思う。ファイルツリーを片方からもう片方へ複製するより、双方向にミラーリングするほうが理にかなう場合がある
    SSHFS のコードをフォークして調べたあと、関連資料と個人的な考えを https://hackmd.io/@q/sftp-over-ws にまとめて維持している

    • SFTP は FTP より大きく改善されているが、サーバー側にはまだ実現されていない潜在能力が多く、より良いクライアントを作るだけでは解決しない
      OpenSSH と GNU lsh のサーバーはいずれも古いプロトコルバージョンしか提供していない。おそらく v2 だろう。この古さは意図的な選択だ: https://marc.info/?l=openssh-unix-dev&m=168488976013498&w=2
  • 技術の組み合わせは少し違うが、しばらく WireGuard 上の NFS をかなり満足して使っている

    • TCP チャネルがリセットされたとき、NFS は再接続をより優雅に処理するので、これは大きな利点
      ファイルシステム機能もより多く実装されているため、df のレポートがリモートファイルシステムの使用量を正確に反映する
      さらに NFSv4 は “delegations” を提供し、期限付きリースの形でファイルの完全な制御権をクライアントに与えられる。最新の NFS クライアントには、リース期間を暗黙に延長する “polite delegations” もある
      SSHFS は最小限の設定で「素早く雑に」マウントするにはとても便利
    • 自分は逆方向に進んだ。VPN インフラは非常に安定しているが、ストレージ方式へ移行した
      ごく単純な DVFS ストレージユーティリティでファイルを同期してからは、振り返ることがなかった。あちこちに複数のコピーを置くのが好きだ
    • 数年前に sshfs から NFSv4 + WireGuard に切り替えたが、とてもよく動いている
  • 今は sshfs の機能が必要なときは、主に rclone mount を使っている。性能、安定性、キャッシュオプションがより良い

    • ただし rclone はファイル全体を転送しないと、ファイルの途中に書き込めない。それが最大の問題
      sshfs にも同じ制限がある可能性はある
  • 残念ながら、このフォークはあまり活発には見えない。最後のコミットは3月で、PRやIssueの動きもほとんどない
    これに期待はしない

    • 安定したプロジェクトなら、どの程度の活動量を期待するものなのか?
    • 「活発さ」とは、JavaScript 的な定義では、うまく動いているものに手を入れて壊すことだ
  • Nautilus、つまり Ubuntu のファイルエクスプローラーは SFTP フォルダーのマウントに対応している。内部的には gvfs を使っているようだ
    SFTP はファイル転送に SSH 接続を使うので、SSHFS と比べて UI 上の違いは見なかった

    • Nautilus の GUI で SFTP エンドポイントを閲覧できるのは分かるが、同時にターミナルで使えるファイルシステムの マウントポイント も作ってくれるのか?
      よく覚えていない
  • Mac OS X で macFUSE/osxfuse と一緒に rclone や sshfs を使ったことがある人はいる?

    • Macfuse で自分の全サーバーをローカルフォルダーのように接続して使っている。問題なく動く
      サーバーごとに小さなスクリプトがある。例えば mount_fooserver.sh:
      umount -f ~/mounts/fooserver
      sshfs -o kill_on_unmount,reconnect,allow_other,defer_permissions,direct_io username@server:/ ~/mounts/fooserver -ovolname=foo
    • M1 で macFUSE と sshfs を使ってオフィスの Linux マシンのドライブをマウントしている。おおむね問題ないが、特有のぎこちなさはある
      設定手順はかなり冒険のようで、何度かこれで合っているのかと思ったが、押し切ったらうまく動いた
    • 上の自分のトップレベルコメントを見ればよい。答えは「Mountain Duck」だ
    • Monterey、M1 で sshfs は動作するが、やや遅めだ