Я хочу подключиться к моему SSH с помощью этой команды:
хост ssh @ myhost ls -l /
но я хочу ввести свой пароль в приведенной выше команде, это возможно? например, наша команда такая:
хост ssh @ myhost mypassword ls -l /
Я хочу подключиться к моему SSH с помощью этой команды:
хост ssh @ myhost ls -l /
но я хочу ввести свой пароль в приведенной выше команде, это возможно? например, наша команда такая:
хост ssh @ myhost mypassword ls -l /
Попробуйте использовать ssh ключи для аутентификации. Смотри man ssh-keygen. Это более безопасный способ.
Использование:
"-o StrictHostKeyChecking=no -o NumberOfPasswordPrompts=0 -o ConnectTimeout=30 -o ServerAliveInterval=15"
отключить интерактивность.
Чтобы использовать 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 будет отвечать за предоставление ключевой фразы для случая, когда вы используете закрытый ключ (и, что важно, закрытый ключ защищен парольной фразой, а ключевая фраза не сохраняется в файле).
Вы также можете использовать немного программного обеспечения под названием sshpass. Он раскрывает ваш пароль для всех в вашей системе, но никаких ключей, никаких ожиданий и относительно прост в установке. Вероятно, вам следует добраться до точки, где у вас есть ключи, но это не всегда возможно.
Вы можете сделать это с помощью ожидаемого
ожидаемо - программируемое общение с интерактивными программами (служебная программа).
но для этого нужно сделать скрипт
#!/usr/bin/expect -f
spawn ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no USERNAME@HOSTNAME
expect "*password*"
send "$PASSWORD\r"
expect eof
Вы должны ожидать установки в вашей системе.
Очевидно, что этот метод оставляет проверки безопасности (иногда необходимые, когда существует опасность изменения идентификации хоста).
Нет, вы не можете этого сделать, так что тогда пароль будет виден любым пользователям вашей системы, так как команда с ее arugmetns видна, например, ps aux.
Если вам нужен хост A для ssh и хост B без участия человека, используйте pubkeys. Поместите открытый ключ хоста A на хост B и наоборот, и тогда они смогут соединяться друг с другом без пароля.