Вопрос или проблема
Я пытаюсь скопировать свои ssh-ключи на свою машину, но каждый раз, когда я выполняю ssh-copy-id archie@localhost
, появляется эта ошибка:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/archie/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
архие@localhost's password:
zsh:1: command not found: sh
В примере указан localhost, но когда я пробую с другой машиной, появляется та же ошибка.
sh
ссылается на /bin/sh
, который, в зависимости от дистрибутива, обычно является символической ссылкой на /bin/bash
или /bin/dash
. Попробуйте выполнить команду sh
в вашем терминале, и если она вернет ошибку, это значит, что /bin/sh
отсутствует. Если у вас есть доступ к root
на системе, вы можете исправить это, выполнив ln -s /bin/bash /bin/sh
.
Ответ или решение
Ошибка "ssh-copy-id: sh command not found": Как решить проблему?
При использовании команды ssh-copy-id
для копирования SSH-ключей на ваш сервер, вы можете столкнуться с ошибкой, которая говорит: zsh:1: command not found: sh
. Эта проблема может возникнуть как на локальной машине, так и при попытке подключения к удалённой машине. Давайте разберёмся с этой ошибкой и предложим решение.
Причины возникновения ошибки
Ошибка "command not found: sh" указывает на то, что система не может найти интерпретатор командной строки sh
. Обычно sh
является символической ссылкой на /bin/bash
или /bin/dash
. Если источник этой ошибки кроется в отсутствии самого файла sh
, это может быть вызвано несколькими факторами:
- Отсутствие интерпретатора: Файл
/bin/sh
отсутствует в вашей системе. - Не корректная символическая ссылка: Если символическая ссылка на
sh
неверно настроена или указывает на несуществующий интерпретатор. - Проблема с окружением: Переменные окружения, связанные с вашей оболочкой, могут быть неправильно настроены.
Проверка наличия /bin/sh
Для начала вам следует проверить, установлен ли интерпретатор sh
. Выполните следующую команду в терминале:
sh
Если вы получаете сообщение об ошибке, это подтверждает, что /bin/sh
отсутствует на вашей системе.
Решение проблемы
Если вы удостоверились, что интерпретатор не установлен, и у вас есть доступ к учетной записи root, вы можете исправить это следующим образом:
-
Убедитесь, что у вас установлен
bash
илиdash
. Вы можете установить его с помощью пакетного менеджера вашей системы. Для примера, в Ubuntu это можно сделать следующим образом:sudo apt-get install bash
-
После этого создайте символическую ссылку на
sh
. Это можно сделать с помощью следующей команды:sudo ln -s /bin/bash /bin/sh
Примечание: Если у вас установлен
dash
, вы можете создать символическую ссылку на него:sudo ln -s /bin/dash /bin/sh
Запуск команды ssh-copy-id снова
После выполнения этих шагов попробуйте снова выполнить команду ssh-copy-id
:
ssh-copy-id archie@localhost
Если всё было сделано правильно, вы больше не должны видеть ошибку "command not found: sh".
Заключение
Ошибка "command not found: sh" может быть вызвана отсутствием интерпретатора командной строки sh
в вашей системе. Убедитесь, что он установлен и правильно настроен. Следуя предложенным шагам, вы сможете устранить эту проблему и продолжить работу с SSH-ключами без лишних затруднений. Если вы продолжите сталкиваться с проблемами, проверьте системные журналы и конфигурации, чтобы получить более детальную информацию о возможных причинах.
Надеюсь, данное руководство поможет вам успешно устранить возникшую проблему!