2

Кто-нибудь может сказать мне, как я могу создать сценарий оболочки для SSH, где мне не нужно вводить пароль вручную?

Я научился ожидать команды и пробовал несколько примеров, но это не сработало. Может кто-нибудь мне помочь?

Пожалуйста, ответьте мне как можно скорее.

7 ответов7

8

Вы можете использовать ssh-keygen и ssh-copy-id для создания ключа rsa и добавления своего ключа в качестве разрешенного хоста для удаленного компьютера.

Создайте ключ ssh:
$ ssh-keygen -t rsa

Скопируйте его на удаленный компьютер в качестве разрешенного хоста:
$ ssh-copy-id user@<IP/hostname>
Например
$ ssh-copy-id username@12.345.67.890

6

Вы можете использовать агент ssh для предоставления пароля только один раз за весь сеанс или использовать аутентификацию по ключу без пароля.

Лично я настоятельно рекомендую вам не использовать такие скрипты, где вы либо указываете пароли в командной строке, либо храните их в текстовом файле. Если ваша система будет взломана, вы обязательно пожалеете об этом. Помните, что первое, на что обращают внимание плохие люди, это ваша .bash_history .

2

Пожалуйста, не используйте пароль вообще, а вместо этого используйте асимметричный ключ (например, RSA). Это обеспечивает гораздо лучшую безопасность и устраняет все хлопоты, связанные с поддержанием паролей ...

2

Если по какой-либо причине вам нужно полагаться только на ожидаемое, попробуйте что-то вроде (все в одну строку):

expect -c "spawn ssh <username>@a<address> <ssh commands/options> ; expect assword ; send $PASSWORD\n ; interact"

1

Не помещайте свой пароль в скрипт оболочки. Сценарии оболочки не место, где можно поставить свой пароль. Поместить ваш пароль в сценарий оболочки нежелательно. Не рекомендуется вводить пароль в скрипт оболочки.

Если приведенный выше совет не ясен, повторите его еще несколько десятков раз, пока он не появится.

С SSH лучше всего использовать ssh-keygen для создания пары открытый / закрытый ключ. Затем на удаленном компьютере в ~/.ssh (или там, где ваш SSH был настроен для поиска его конфигурации) отредактируйте файл authorized_keys и вставьте свой ключ PUBLIC . После этого файл будет выглядеть примерно так:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQ...elided for security...fdVEkAPINVd0=rsa-key-20100920

Когда это произойдет, вам не понадобится пароль для входа.


отредактировано, чтобы добавить

Вам необходимо поместить файл ключа PRIVATE в локальный ~/.ssh и убедиться, что только вы можете его прочитать.


далее отредактировано, чтобы добавить

В этом ответе упоминается ssh-copy-id которая заменяет все ручное редактирование, которое я упоминал. Приятно прикоснуться к этому. Используйте это вместо этого.

1

Для этого используется ssh-key:s, а базовый сценарий его добавления выглядит следующим образом:

ssh-keygen 
scp .ssh/id_rsa.pub user@server:.
ssh user@server "cat id_rsa.pub >> .ssh/authorized_keys"
ssh user@server "rm ~/id_rsa.pub"
0

Вам необходимо создать пару секретный / открытый ключ.

Затем запишите свой открытый ключ на удаленный хост, который вы собираетесь использовать в ssh, в этот файл:

 /home/user/.ssh/authorized_keys2

Есть много учебников о том, как это сделать. Просто GOOGLE для: "SSH без пароля author_keys2".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .