私はssh vpn(Debian OSサーバーとクライアントの両方)をセットアップしようとしています。
/ etc/ssh/sshd_config(サーバー)を変更しました:
PermitTunnel yes
PermitRootLogin without-password
しかし、私が接続しようとすると(クライアント):
$ ssh -NTCf -vvvw 0:0 root@server-ip
...
debug1: Authentication succeeded (publickey).
Authenticated to <server-ip> ([<server-ip>]:22).
debug1: Requesting tun unit 0 in mode 1
debug1: sys_tun_open: failed to configure tunnel (mode 1): Operation not permitted
Tunnel device open failed.
Could not request tunnel forwarding.
...
何が悪いのでしょうか?助けてください!
[〜#〜]更新[〜#〜]
Rootとしてsshを実行しようとしましたが、まだエラーがあります(クライアント)。
# ssh -i ~user/.ssh/id_rsa -NTCf -vvvw any root@server-ip
....
debug1: Requesting tun unit 2147483647 in mode 1
debug1: sys_tun_open: tunnel mode 1 fd 5
Tunnel device open failed.
Could not request tunnel forwarding.
debug2: fd 3 setting TCP_NODELAY
...
クライアント構成:
OpenSSH_7.7p1 Debian-2, OpenSSL 1.0.2o 27 Mar 2018
Linux 4.16.0-2-AMD64 #1 SMP Debian 4.16.12-1 (2018-05-27) x86_64
Debian GNU/Linux testing (buster)
ネットワークインターフェイスを作成するには、root(または少なくともNET_CAP_ADMIN
)権限が必要です。エラーメッセージは、クライアントsshコマンドを実行できなかったことをtun0インターフェイスを作成できなかったことを示しています。
21510 open("/dev/net/tun", O_RDWR) = 4
21510 ioctl(4, TUNSETIFF, 0x7fff5f9f1530) = -1 EPERM (Operation not permitted)
21510 close(4) = 0
21510 write(2, "Tunnel device open failed.\r\n", 28) = 28
21510 write(2, "Could not request tunnel forward"..., 38) = 38
最も単純なのは、たとえばSudo
またはsu -c
を使用して(構成および)ルートとして実行し、おそらく-i
を使用して適切なsshキーを提供することです(または、代わりにルートのsshキーを選択することもできます) )。 Debianクライアントでは、これは機能します。
su -c 'ssh -i ~myuser/.ssh/id_rsa -NTCf -w 0:0 root@server-ip'
競合を避けるため、テスト中は-w 0:0
を-w any
に置き換える必要があります。
いずれにしてもルート(またはNET_CAP_ADMIN)を必要とする別の方法は、共通の命名規則(XのtunXとsshパラメータで後で再利用される番号)に従ってインターフェースを事前に作成することですが、このインターフェースへのsshユーザーへのアクセスを許可します。
# ip tuntap add name tun0 type tun user myuser
# ip address add 192.0.2.10/24 dev tun0
# ip link set dev tun0 up
リモートのsshユーザーがrootにならない場合は、リモートサーバーで(rootによって)同じことができます。
Sshコマンド(myuserとして実行、例:ssh -NTCf -w 0:0 remoteuser@server-ip
)は、一致する名前を持つ既存のトンネルインターフェースを使用してトラフィックをトンネルできます。
クライアント側で権限がなく、代わりにサーバーIPへのネットワークアクセスでVMまたはコンテナを実行することが許可されていない場合、おそらく成功することはできません。
注:OPが見つかり、2018-07-02の時点でテストできたように、Debianバスター(テスト)パッケージopenssh-clientおよびopenssh-server 7.7p1-2には バグがtunの使用を妨げています)/tapトンネル 。