netns
여기서는 VPN을 사용 했지만 sshfs
제대로 작동하지 않았습니다. 내가 시도한 것은 다음과 같습니다.
root@ubuntu:/mnt# ip netns exec secured sshfs -d -o sshfs_debug -p PORT USER@HOST: MOUNTPOINT
SSHFS version 2.8
FUSE library version: 2.9.7
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
executing <ssh> <-x> <-a> <-oClearAllForwardings=yes> <-oPort=PORT> <-2> <USER@HOST> <-s> <sftp>
Server version: 3
Extension: [email protected] <1>
Extension: [email protected] <2>
Extension: [email protected] <2>
Extension: [email protected] <1>
Extension: [email protected] <1>
unique: 1, opcode: INIT (26), nodeid: 0, insize: 56, pid: 0
INIT: 7.26
flags=0x001ffffb
max_readahead=0x00020000
INIT: 7.19
flags=0x00000011
max_readahead=0x00020000
max_write=0x00020000
max_background=0
congestion_threshold=0
unique: 1, success, outsize: 40
즉, ls
마운트 지점에 아무것도 나열되지 않습니다.항목이 전혀 없습니다.sshfs
아무것도 인쇄하지 마세요on ls
, 이것도 이상해 보입니다. 무엇이 문제일까요?
답변1
안타깝게도 이는 예상된 동작입니다.
http://man7.org/linux/man-pages/man8/ip-netns.8.html
ip netns exec는 설치 네임스페이스를 생성하고 모든 네트워크별 네임스페이스 구성 파일을 네트워크 네임스페이스 인식 응용 프로그램의 파일 규칙인 /etc의 기존 위치에 바인드 마운트하여 이 구성을 자동으로 처리합니다.
즉 ip netns exec <namespace> <command>
, 를 사용하면 명령이 다른 네트워크 네임스페이스뿐만 아니라 다른 마운트 네임스페이스에서도 실행됩니다. 요청하신 대로 설치가 성공했지만 sshfs
설치 내용을 볼 수 없습니다.
솔루션 1
간단히 네트워크 명령 프롬프트를 열고 거기서 작업을 시작할 수 있습니다.
ip netns exec secured bash
sshfs -d -o sshfs_debug -p PORT USER@HOST: MOUNTPOINT
# ... use MOUNTPOINT
솔루션 2
공유를 생성한 후 마운트 네임스페이스를 다시 입력할 수 있습니다.
ip netns exec secured sshfs -d -o sshfs_debug -p PORT USER@HOST: MOUNTPOINT
ps -ef | grep sshfs
root 1880 1 0 13:15 ? 00:00:00 sshfs -p PORT USER@HOST:. MOUNTPOINT
# Now run a command (ls) in the same mount namespace
nsenter --mount -t 1880 ls
# You can of course run a command prompt there
nsenter --mount -t 1880 bash
해결 방법 3
이는 더 복잡할 수 있으며 아직 이 옵션을 제대로 살펴보지 않았습니다.
위 인용문에 따르면 마운트 네임스페이스는 추가 네트워크 구성에 사용됩니다. 그러나 이론적으로는 chroot
.
입력 네트워크 네임스페이스를 사용 nsenter --net
하고 chroot
a를 사용하여 원하는 네트워크 구성을 설정할 수 있습니다. 그러면 sshfs
기본 설치 네임스페이스 내에서 실행할 수 있습니다.
답변2
말한 바와 같이필립의 대답ip netns exec
이는 별도의 설치 네임스페이스에서 실행되므로 예상되는 동작입니다 . 트릭은 전체 명령이 아닌 ssh
네트워크 통신을 위해 실행하는 것입니다 .ip netns exec
sshfs
즉, 다음을 수행하지 마십시오.
ip netns exec secured sshfs -p PORT USER@HOST: MOUNTPOINT
이 작업을 수행:
sshfs -o ssh_command="ip netns exec secured ssh" -p PORT USER@HOST: MOUNTPOINT
답변3
나는 이 문제를 발견하고 주위에 물었습니다.
실제로 ip netns
는 생성되는 것 같습니다 .임시 설치nfs
해당 네임스페이스 ( 등) 에서 마운트를 수행하고 sshfs
명령이 완료되면 MOUNT 네임스페이스가 사라지고 마운트 지점도 사라집니다.
따라서 일반적인 해결 방법은 해당 nsenter
명령을 사용하여 NET 네임스페이스에서 mount 명령을 실행하는 것입니다.
예를 들어, 마운트 명령이 다음과 같은 경우 다음 sshfs -p PORT USER@HOST: MOUNTPOINT
을 실행합니다.
nsenter --net=/run/netns/ns-secured sshfs -p PORT USER@HOST: MOUNTPOINT
그리고 마운트 지점은 전역(기본) 네임스페이스에 유지됩니다. 또한 다른 유형의 원격 네트워크 FS(예: NFS)에서도 작동합니다.