sshd: не пускать меня в удаленную папку при программном соединении - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь использовать виртуальную машину Parallels в качестве сервера сборки. Я настроил sshd и настроил его так, чтобы я мог подключаться с использованием безопасных ключей. Я могу успешно подключиться, используя пакет node-ssh. Parallels прекрасно смонтировал мою локальную папку Desktop на моей Ma c, поэтому в моем сценарии я пытаюсь получить к ней доступ следующим образом:

await ssh.execCommand('cd /home/parallels/Desktop');

Однако, без какой-либо причины, текущая рабочая каталог никогда не меняется.

let result = await ssh.execCommand('pwd');
console.log(result.stdout); // outputs: /home/parallels

Я также проверил result.code и result.stderr, и нет ничего, что указывало бы на то, что что-то пошло не так - программный интерфейс c API не позволяет мне перемещаться в эту папку. Тем не менее, я могу получить к нему доступ просто с помощью виртуальной машины или обычного ssh на моей Ma c.

1 Ответ

0 голосов
/ 08 февраля 2020

Выполненные команды на сервере s sh (в общем случае) являются отдельными вызовами оболочки пользователя, что означает, что текущие рабочие каталоги (среди прочего) не сохраняются.

Лучше всего будет добавьте любые команды к вашему cd <path> &&, чтобы сначала перейти в правильный каталог. Единственный другой вариант - использовать вместо этого сеанс интерактивной оболочки, но его гораздо сложнее использовать программно, так как он предназначен для использования человеком.

...