質問: 初心者です、よろしくお願い致します。 環境: Win10 Pro WSLにリモート接続(Ubuntu18.04) Pycharm Professional(2018.1) Django2.1.3 Python 3.6.7 DjangoGirlsチュートリアルに従って上記環境でリモートでブログアプリを作成しています。 その中で(チュートリアルには無いですが)リモートディレクトリ内のSQLiteの内容をPycharmのデータベースツールで確認したいと思い、Databaseツールウィンドウから「+ → Data Source → Sqlite(xerial) 」と選択し、「Data Source and Drivers」画面の 「SSH/SSL」タブを選択、下記入力しましたが接続出来ませんでした。 Proxy host : localhost/home/USER/djangogirls/db.sqlite3 Port : 22 Proxy user : WSLログイン時のユーザー名 Proxy password : WSLログイン時のパスワード その他: ・Proxy hostは「127.0.0.1」にしたり「:8000」を追加したりしてみましたが同様でした。 ・DBをローカルにコピーしてそのパスでアクセスすると問題無く接続出来ました。 ちょっとした所の様な気がしますが、自分に知識なく他のアイデアが出てこない為、 お詳しい方、ご教示頂ければ幸いです。 よろしくお願い致します。
回答: PyCharm の Database tool window で使える "SSH tunnel" は、 **SSH の Port forwarding 機能を使ってリモートホストとの TCP パケットを中継させる** ことで、直接は到達できないデータベースサーバと TCP コネクションを確立することのできる機能かと存じます。そのため、 TCP ソケットで通信する MariaDB や PostgreSQL には利用できますが、 **直接 File I/O で操作を行う SQLite データベースでは利用できません** 。 どうしても SSH 経由で当該ファイルを開きたいのであれば、おやりになっているように都度ローカルにコピーしてくるか、 sshfs を使ってマウントしてやるしかないのではないでしょうか。 ただ幸いに今回は WSL を御使いとの事なので、 **WSL 環境と Windows とで DrvFs を経由して直接同じファイルの読み書きができます** から、それを使うと良さそうです。具体的には、次のようにすれば対象の SQLite データベースファイルにアクセスできるかと思われます。 1. WSL 上では `/mnt/c` 以下に C ドライブがマウントされているので、その下のどこか (例えば `/mnt/c/Users/your-name/Desktop/djangogirls/`) で作業を行う 2. PyCharm からは SSH tunnel を使わず、直接 Windows のパスを使って (例えば `C:\Users\your-name\Desktop\djangogirls/db.sqlite3`) データベースファイルを開く