Zotero の同期設定、Obsidian の同期プラグイン、Nextcloud や Synology の NAS などの設定画面で、「WebDAV」という言葉と一緒にアドレス・ユーザー名・パスワードの入力を求められることがあります。この記事では、WebDAV とは何か、どう使うのか、SFTP とはどう違うのかを、なるべくやさしく説明します。
WebDAV とは
ひとことで言えば、WebDAV は Web サーバーをネットワークドライブや共有フォルダーのように使えるようにする仕組みです。
Web ページを開くときに使う HTTP は、もともとファイルを取ってくる、置く、消すことしかできず、フォルダーの中身を一覧したり、フォルダーを作ったり、名前を変えたりはできません。WebDAV はこれらを HTTP に足したものです。ファイルに「ロック」をかけて、二人が同じファイルを同時に編集し、後から保存したほうが先の変更を消してしまう、といったことも防げます。公開された標準で、1999 年に最初の版が出て、現在は 2007 年の版(RFC 4918)が使われています。
中身は HTTP そのものなので、実用上の利点があります。
- アドレスは
https://で始まる普通の URL で、Web サイトと同じ道(443 番ポート)を通ります。会社のファイアウォールやプロキシもたいてい通れるので、別のポートを開ける必要がありません。 - HTTP のリクエストを送れるソフトなら何でもクライアントになれるので、多くのアプリが WebDAV での同期を備えています。
どこで見かけるか
- Nextcloud:アドレスは
https://サーバー/remote.php/dav/files/ユーザー名/です。二要素認証を有効にしている場合はアプリパスワードを使います。 - NAS:Synology は「WebDAV Server」パッケージを入れると、既定で HTTP は 5005 番、HTTPS は 5006 番を使います。QNAP はコントロールパネルのネットワークとファイルサービスの設定で有効にします。
- クラウドストレージ:InfiniCLOUD や Fastmail Files などが対応しています。Joplin の動作確認済みサービスの一覧も参考になります。
- WebDAV で同期するアプリ:Zotero の添付ファイルの同期(文献データ自体は Zotero のサーバーを通ります)、Obsidian の Remotely Save プラグイン、Joplin、KeePass 2.x(標準機能で、URL からデータベースを開いたり同期したりできます)。
ドライブとしてつなぐ
WebDAV はパソコンに直接つなぐこともできます。USB メモリのように、ファイルマネージャーでファイルをドラッグしてやり取りできます。以下では https://dav.example.com/docs/ をあなたのアドレスとします。
macOS:Finder で「移動」>「サーバへ接続」(⌘K)を選び、「サーバアドレス」欄にアドレスを入力して「接続」を押し、ユーザー名とパスワードを入れます。つながるとサイドバーの「場所」に表示され、横の「取り出す」ボタンで切断できます。
Windows:エクスプローラーの左側で PC を選び、上部の「…」ボタンからネットワーク ドライブを割り当てるメニューを選んで(Windows 10 では「コンピューター」タブにあります)、「フォルダー」欄にアドレスをそのまま入力します。Microsoft は 2023 年 11 月に、この Windows 標準の WebDAV クライアントを非推奨としました。今も使えますが、制限がいくつもあります。
- 既定では
https://のアドレスにしかパスワードを送らないので、http://しかないサーバーにはたいていつながりません。 - 1 ファイルの上限は既定で約 50 MB です。
- ファイルが千個前後より多いフォルダーは、一覧が欠けることがあります。
- まったくつながらないときは、まず WebClient サービスが動いているか確認します。
こうした制限にかかるときは、rclone などのツールでマウントするほうが早いです(Windows では WinFsp が必要です)。
Linux:GNOME のファイルマネージャーで、サイドバーの他の場所を開き、下部のサーバーへ接続する欄に davs://dav.example.com/docs/ を入力して接続します(https は davs、http は dav に置き換えます)。
使うときの注意
- HTTPS を使う:WebDAV のログインでよく使われる Basic 認証は、ユーザー名とパスワードを Base64 で書き換えただけで、暗号化ではありません。
http://では、経路上のどのマシンからでもパスワードが読めてしまいます。 - アプリパスワードがあれば使う:そのアプリ専用なので、漏れてもそれだけを無効にでき、アカウントのパスワードを変える必要がありません。
- 小さなファイルが大量にあると遅い:ファイル一つごとに最低一回の往復が必要で、数千個もあると時間の大半は待ち時間です。リクエスト数に制限のあるサービスでは制限にもかかります。できればまとめて圧縮してから送りましょう。
WebDAV と SFTP の違い
SFTP もファイルをやり取りするためのものですが、SSH の上で動きます。SSH でログインできるサーバーなら、たいてい SFTP でファイルを管理できます。比べると次のとおりです。
| WebDAV | SFTP | |
|---|---|---|
| 通る道 | HTTP か HTTPS(Web ページと同じ) | SSH 接続 |
| 既定のポート | 443(HTTPS)。NAS は独自のポートが多い | 22 |
| 暗号化 | HTTPS なら暗号化、HTTP では暗号化なし | 常に暗号化 |
| ファイアウォール・プロキシ | たいてい通れる | 22 番はふさがれていることが多く、HTTP プロキシも通常は通れない |
| サーバー側 | クラウドストレージ、NAS、専用のプログラム | SSH でログインできるマシンならたいていある |
| 権限・シンボリックリンク | 基本のプロトコルにはない | ある |
| レジューム | ダウンロードはできる。アップロードには標準の方法がない | 上り下りとも再開できる |
| 主な用途 | クラウドストレージ、NAS の共有、アプリの同期 | サーバー上のファイル管理、デプロイ、運用 |
まとめると、クラウドストレージや NAS、WebDAV にしか対応していないアプリが相手のとき、あるいはネットワークが Web の通信しか通さないときは WebDAV、ファイルのあるマシンに SSH でログインできるなら SFTP です。端末一つしかなく SFTP も使えない場合は、ZMODEM(rz/sz)という手もあります。
社内や自宅の NAS に外からつなぐ
よくあるのは、NAS が自宅や社内のネットワークにあって(nas.internal:5005)インターネットには公開しておらず、同じネットワークの別のマシン(踏み台サーバー)には SSH で入れる、という状況です。SSH のローカルポート転送で、NAS の WebDAV を手元のパソコンにつなげます。
ssh -N -L 8080:nas.internal:5005 alice@jump.example.com
この接続を開いている間は、手元の http://127.0.0.1:8080/ が NAS の WebDAV になります。ドライブとしてつなぐのも、アプリに入力するのも、いつもどおりです。
SSH で暗号化されるのは手元から踏み台までで、踏み台から NAS までは社内ネットワークの平文の HTTP のままです。また、Windows 標準のクライアントはこの http:// のアドレスにもパスワードを送らないので、Windows では rclone を使うほうが手軽です。
ShellRS では
ShellRS は無料でオープンソースの SSH クライアントです。WebDAV には対応していませんが、上の二つの場面で役に立ちます。
- SFTP でファイルを管理する:SSH でログインできるサーバーなら、ShellRS でそのホストの SFTP タブを開きます。二つのペインに手元とサーバーのファイルが並び、ドラッグでアップロード・ダウンロードでき、中断した転送は再開できます。
- ポート転送をルールとして保存する:上の
ssh -Lを毎回打たずに済みます。タイトルバーのポート転送アイコンを押し、一覧の上の「+」で新規作成して、種類は Local のカードを選び、「Via host」に踏み台のホストを選んで、待ち受けを127.0.0.1:8080、転送先をnas.internal:5005にします。「Create」はルールを保存するだけなので、行の末尾のボタンで開始します。「Start when ShellRS opens」にチェックを入れておけば、アプリと一緒に開始します。ルールごとに専用の SSH 接続を使うので、ターミナルのタブを閉じても影響はなく、切断されると自動で再接続します。
転送を開始したあとも、WebDAV には Finder やエクスプローラー、rclone でアクセスします。
詳しくは ShellRS のユーザーマニュアルの「Port forwarding」と「SFTP」の節を参照してください。ShellRS はダウンロードページから入手できます。