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.
...
질문이 있으신가요? 도와주세요!
고쳐 쓰다
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)
답변1
네트워크 인터페이스를 생성하려면 루트(또는 최소한 CAP_NET_ADMIN
) 권한이 필요합니다. 오류 메시지는 클라이언트 ssh를 실행할 때 다음 strace 발췌에서 알 수 있듯이 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
가장 간단한 것은 이를 루트로 실행하는 것입니다. 예를 들어 (구성 및) 올바른 SSH 키를 사용 sudo
하거나 제공할 수도 있습니다 (또는 루트의 SSH 키를 선택할 수도 있음). Debian 클라이언트에서는 다음과 같이 작동합니다.su -c
-i
su -c 'ssh -i ~myuser/.ssh/id_rsa -NTCf -w 0:0 root@server-ip'
-w 0:0
충돌을 방지 하려면 테스트할 때 교체해야 합니다 -w any
.
여전히 루트(또는 )가 필요한 또 다른 접근 방식 CAP_NET_ADMIN
은 일반적인 명명 규칙(tunX, 여기서
# ip tuntap add name tun0 mode tun user myuser
# ip address add 192.0.2.10/24 dev tun0
# ip link set dev tun0 up
원격 SSH 사용자가 루트가 아닌 경우 루트를 통해 원격 서버에서 동일한 작업을 수행할 수 있습니다.
그런 다음 ssh 명령(예: myuser로 실행)은 ssh -NTCf -w 0:0 remoteuser@server-ip
이름이 일치하는 기존 터널 인터페이스를 사용하여 트래픽을 터널링할 수 있습니다.
클라이언트에 대한 권한이 없고 서버 IP에 대한 네트워크 액세스를 통해 가상 머신이나 컨테이너를 실행할 수 없는 경우 성공하지 못할 수 있습니다.
참고: 이 Q&A 당시 OP는 Debian Buster(현재 테스트됨)에서 openssh-client 및 openssh-server 버전 1:7.7p1-2 패키지에 다음이 있음을 발견했습니다.tun/tap 터널 사용을 방지하는 버그. 이것데비안에서 수정됨(Debian) 버전 1:7.7p1-3부터 사용 가능합니다.