Предположим, что &&
— логический оператор. , а не означает «также запустить эту команду», это означает «выполнить эту команду, если другая успешно выполнена».
Это означает, что если команда rm
завершится ошибкой (, что произойдет, если какой-либо из трех каталогов не существует ), то mkdir
не будет выполнена. Это не похоже на поведение, которое вы хотите; если каталоги не существуют, вероятно, их можно создать.
Используйте;
Для разделения команд используется точка с запятой ;
. Команды выполняются последовательно, ожидая каждой, прежде чем перейти к следующей, но их успех или неудача не влияют друг на друга.
Экранирование внутренних кавычек
Кавычки внутри других кавычек должны быть экранированы, иначе вы создадите дополнительную конечную точку и начальную точку.Ваша команда:
ssh -n $username@$masterHostname "ssh -t -t $username@$line "rm -rf Input Output Partition && mkdir -p EC2_WORKSPACE/$project Input Output Partition""
Становится:
ssh -n $username@$masterHostname "ssh -t -t $username@$line \"rm -rf Input Output Partition && mkdir -p EC2_WORKSPACE/$project Input OutputPartition\""
Ваша текущая команда из-за отсутствия экранированных кавычек должна выполняться:
ssh -n $username@$masterHostname "ssh -t -t $username@$line "rm -rf Input Output Partition
если получится:
mkdir -p EC2_WORKSPACE/$project Input Output Partition"" # runs on your local machine
Вы заметите, что подсветка синтаксиса показывает здесь всю команду красным цветом, что означает, что вся команда представляет собой строку, передаваемую в ssh. Проверьте свою локальную машину; у вас могут быть каталогиInput
Output
и Partition
, где вы запускали это.
Вы спросили: " Можно ли отключить аутентификацию по паролю для каждой -учетной записи, если с учетной записью связан открытый ключ? "
К сожалению, sshd_config
не имеет такой возможности. Может быть, вы могли бы отправить отчет об ошибке списка желаний с просьбой о функции (, но сначала проверьте, была ли «ошибка» отправлена до ). Не ждите положительного -или быстрого -ответа.
В то же время вы можете объявить -дату отключения где-то в будущем (как минимум через месяц ), когда аутентификация по паролю будет отключена, и что пользователям нужно будет установить открытый ключ до этого..
Поместите такое же сообщение и в /etc/motd
, чтобы они получали напоминания каждый раз, когда они входят в систему. Предоставьте как минимум ссылку на веб-страницу с инструкциями по )созданию пары открытого/закрытого ключа на различных распространенных платформах., и b )различные способы установки открытого ключа в ~/.ssh/authorized_kets
на вашем сервере Mac Mini.
Если вы хотите по-настоящему злобно поворчать по этому поводу, вы можете настроить задание cron для истечения срока действия паролей каждого не -системного пользователя, у которого нет ~/.ssh/authorized_keys
файла, заставляя их менять свои пароль каждый раз, когда они входят в систему. Не рекомендуется в чем-либо, даже напоминающем профессиональную среду, но, возможно, допустимо на короткое время на домашнем сервере, где пользователи являются слабой семьей/друзьями.