Мне нужно смонтировать удаленную папку при загрузке без входа пользователя в систему.
Я могу смонтировать папку через терминал при входе в систему на сервере, но папка не монтируется при запускеtriggered.
Доступ к удаленной папке осуществляется через SFTP с использованием ключа SSH.
При входе в систему в качестве пользователя это команда, которую я использую в терминале для подключения тома:
sshfs -o allow_other,IdentityFile=/Users/username/.ssh/id_rsa remoteuser@remoteserver: /Users/username/localpath -p 22 -o workaround=nodelay -ovolname='remoteuser@remoteserver' -C /tmp/sshfs-tmp.err
После запуска том смонтирован и может использоваться.
Я также могу успешно запустить sftp -i /Users/username/.ssh/id_rsa remoteuser@remoteserver
С помощью этой проверенной команды:Я использовал скрипт Майкла Рамси , чтобы запустить его через launchd
Скрипт находится в /Users/username/.scripts/mount_sftp.sh
Затем я создал этот файл plist: /Library/LaunchDaemons/com.testing.mountSftp.plist
<!DOCTYPE plist PUBLIC "~//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:</string>
</dict>
<key>Label</key>
<string>com.testing.mountSftp</string>
<key>RunAtLoad</key>
<true/>
<key>LaunchOnlyOnce</key>
<true/>
<key>UserName</key>
<string>username</string>
<key>Program</key>
<string>/Users/username/.scripts/mount_sftp.sh</string>
<key>StandardOutPath</key>
<string>/Users/username/sftpmountjob.log</string>
<key>StandardErrorPath</key>
<string>/Users/username/sftpmountjob.log</string>
<key>KeepAlive</key>
<false/>
<key>Debug</key>
<true/>
</dict>
</plist>
После перезапуска сервера это проявляется в /tmp/sshfs-tmp.err
:
$ cat /tmp/sshfs-tmp.err
remote host has disconnected
I, как будто на удаленном сервере отсутствует некоторый пользовательский контекст, когда скрипт запускается при загрузке и отклоняет соединение.
Что я могу изменить в своем скрипте или на удаленном компьютере? сервер, позволяющий устанавливать это соединение при запуске launchd?
(полное раскрытие информации: я ни в коем случае не являюсь экспертом Mac / Linux)