Как смонтировать удаленную папку на сервере Mac Pro при загрузке без входа пользователя в систему? - PullRequest
2 голосов
/ 06 ноября 2019

Мне нужно смонтировать удаленную папку при загрузке без входа пользователя в систему.

Я могу смонтировать папку через терминал при входе в систему на сервере, но папка не монтируется при запуске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)

...