概要
ファイルエクスプローラーのDolphinで、サーバーのファイルを取得したい。
SSHと同じ方法でファイル共有を行う、SFTPというプロトコルを使いたい。
しかし、Dolphinのアドレスバーにsftp://my_hostと設定しても「ホストへの経路がありません」と表示されてしまう
前提
ローカルPC
- Ubuntu 24.04 LTS
- デスクトップ:KDE
-
~/.ssh/configは記載済み
~/.ssh/config
Host my_host
User my_user
Port 22
Hostname my_host.mydns.jp
IdentityFile /home/my_user/.ssh/my_host/id_rsa
サーバーPC
- Raspberry Pi OS Lite
- MyDNSでmy_host.mydns.jpドメインを利用している。
症状
- ファイルエクスプローラーのDolphinのアドレスバーに
sftp://my_hostと設定しても「ホストへの経路がありません」と表示されてしまう -
$ kioclient ls sftp://my_hostでも「ホストへの経路がありません」と表示されてしまう (Dolphinは裏でkioclientを使っているらしい) -
my_host.mydns.jpではなく、サーバのグローバルIPアドレスに書き換えれば接続できる -
$ ssh my_hostは接続できる -
$ sftp my_hostも接続できる -
$ getent my_host.mydns.jpでIPv6のアドレスが表示される
原因
IPv4で接続しているつもりが、IPv6で接続していた
対策
対策を2つ紹介
対策1
この接続だけIPv4を強制したい場合
以下のように~/.ssh/configを修正
~/.ssh/config
Host my_host
ProxyCommand nc -4 my_host.mydns.jp 22
User my_user
IdentityFile /home/my_user/.ssh/my_host/id_rsa
対策2
全てのアプリでIPv4を優先させる場合
以下の行のコメントアウトを外す
/etc/gai.conf
precedence ::ffff:0:0/96 100
最後に
症状から見ると、kioclientの内部キャッシュが原因のように思えて詰まったが、IPv6による原因だった。
検索しても同様の事象が見つからなかったので書いておきます。