1

Я хочу подключиться к моему SSH с помощью этой команды:

хост ssh @ myhost ls -l /

но я хочу ввести свой пароль в приведенной выше команде, это возможно? например, наша команда такая:

хост ssh @ myhost mypassword ls -l /

5 ответов5

3

Попробуйте использовать ssh ключи для аутентификации. Смотри man ssh-keygen. Это более безопасный способ.

Использование:

"-o StrictHostKeyChecking=no -o NumberOfPasswordPrompts=0 -o ConnectTimeout=30 -o ServerAliveInterval=15" 

отключить интерактивность.

3

Чтобы использовать SSH без паролей, вам необходимо настроить ключи для использования в вашей системе и целевой системе.

[yoursystem] $ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/youruser/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/youruser/.ssh/id_rsa.
Your public key has been saved in /home/youruser/.ssh/id_rsa.pub.
The key fingerprint is:
f0:7e:55:93:06:b6:c5:6f:68:67:d5:04:7f:2f:ef:df youruser@yoursystem

Затем перенесите файл id_rsa.pub в целевую систему.

В вашей целевой системе добавьте открытый ключ в список авторизованных ключей:

cat id_rsa.pub >> ~/.ssh/authorized_keys

Выйти.

Если вы оставили пустую ключевую фразу на своем ключе, теперь вы можете запустить команду без запроса пароля (ваши ключи: личный ключ id_rsa в вашей системе и открытый ключ id_rsa.pub будут отвечать за аутентификацию).

Если вы создали парольную фразу для своего закрытого ключа (рекомендуется), вам нужно запустить ssh-agent чтобы сохранить парольные фразы в памяти для вас:

[yoursystem] $ eval `ssh-agent`
Agent pid 1231
[yoursystem] $ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/youruser/.ssh/id_rsa: 
Identity added: /home/youruser/.ssh/id_rsa (/home/youruser/.ssh/id_rsa)

Тогда ssh-agent будет отвечать за предоставление ключевой фразы для случая, когда вы используете закрытый ключ (и, что важно, закрытый ключ защищен парольной фразой, а ключевая фраза не сохраняется в файле).

0

Вы также можете использовать немного программного обеспечения под названием sshpass. Он раскрывает ваш пароль для всех в вашей системе, но никаких ключей, никаких ожиданий и относительно прост в установке. Вероятно, вам следует добраться до точки, где у вас есть ключи, но это не всегда возможно.

0

Вы можете сделать это с помощью ожидаемого
ожидаемо - программируемое общение с интерактивными программами (служебная программа).
но для этого нужно сделать скрипт

#!/usr/bin/expect -f
spawn ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no USERNAME@HOSTNAME
expect "*password*"
send "$PASSWORD\r"
expect eof

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

0

Нет, вы не можете этого сделать, так что тогда пароль будет виден любым пользователям вашей системы, так как команда с ее arugmetns видна, например, ps aux.

Если вам нужен хост A для ssh и хост B без участия человека, используйте pubkeys. Поместите открытый ключ хоста A на хост B и наоборот, и тогда они смогут соединяться друг с другом без пароля.

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