다음과 같은 질문이 있습니다.
홈 네트워크에 전달하려는 네트워크 드라이브가 있습니다 sshfs
. 로컬 네트워크에서는 암호화에 크게 신경 쓸 필요가 없습니다. 예를 들어 비밀번호를 사용할 수 있습니다 arcfour
. 내 SSH 내부 포트는 기술적인 이유로 A
다른 포트를 통해 ssh
외부 네트워크에서 연결할 수 있습니다. 또한 홈 네트워크에 있을 때 외부에서 포트에 연결할 수 없습니다. 이제 외부에 설치하면 당연히 추가 암호화를 사용하게 됩니다.B
A
systemd
나는 네트워크에 있는 경우에만 포트를 사용하고 arcfour
, 그렇지 않으면 다른 암호를 사용하여 포트를 통해 연결하여 이 마운트 상황을 현명하게 처리하는 서비스를 구축하고 싶습니다 . 나는 내 자신의 서비스를 처음 작성하는데 여기에 적용할 올바른 조건을 찾을 수 없습니다.A
X
B
누구든지 이 문제를 해결하도록 도와줄 수 있나요?
답변1
두 가지 작업을 실행하는 것이 좋습니다. 하나는 로그인 시(설치용), 다른 하나는 로그아웃 시(제거용)입니다. 샘플 서비스 파일:
[Unit]
Description=mount with sshfs
[Service]
Type=simple
ExecStart=/path/to/login_script.sh
#This makes the service stay active while logged in and
# makes sure ExecStop is only executed at logout
RemainAfterExit=yes
ExecStop=/path/to/logout_script.sh
[Install]
#opens with first login and ends with last logout - multiple ssh sessions are OK
WantedBy=default.target
로그인 및 로그아웃 스크립트를 작성합니다. SSID를 통해 집에 있는지 확인해 보겠습니다. 귀하에게 적합한 것이 무엇인지 확인하십시오.
#!/bin/bash
#login script
if [[ "$( nmlci | grep 'home_network_name' )" != "" ] ; then
#we're at home
sshfs <mount with home options>
else
#we're out
sshfs <mount with outside options>
fi
로그아웃한 후 제거하고 싶습니다.
#!/bin/bash
#logout script
fusermount -u /path/to/mount/point
서비스를 활성화하려면 example에 입력 ~/.cofig/systemd/user/autosshfs.service
하고 실행하세요 systemctl --user enable autosshfs.service
. 다음에 로그인할 때 실행되어야 합니다.