Выполнить ssh с аутентификацией по паролю через командную строку Windows

93

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

ssh <user>@<host> <command>

Есть ли такие команды, как

ssh <user>@<host> -P <password> <command>

введите описание изображения здесь

Не знаю, возможно ли это. Тем не менее, для этого же может быть некоторая работа. Подскажите мне несколько идей, как добиться того же.

Балачандар
источник
2
Намного лучше использовать аутентификацию на основе ключей.
Грег Иноземцев
1
Да, у меня тоже есть требование аутентификации на основе пароля.
Balachandar
12
@GregInozemtsev в этом случае иногда возникает необходимость в быстром и грязном скрипте, чтобы сделать что-то подобное, особенно в тестовой или другой среде, где не требуется чистая безопасность.
TheJosh
Я не понимаю, почему отсутствует этот базовый вариант. Я искал команду -pw superputty (putty) :( Думаю, вместо этого я
перейду

Ответы:

159

Sshpass утилита предназначена для именно это. Сначала установите sshpass, набрав эту команду:

sudo apt-get install sshpass

Затем добавьте команду ssh / scp с помощью

sshpass -p '<password>' <ssh/scp command>

Эту программу проще всего установить при использовании Linux.

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

Аниш Бхатт
источник
8
Также работает с rsync.
TheJosh
15
Потому что в заголовке нет «окон», и он отображается высоко в списке при поиске этого для Linux / Unix / Mac. Итак, ответ на этот вопрос здесь экономит время.
Frobbit
1
Отлично работает в Mac OS X. Я установил sshpass через sudo port install sshpass. Тем не менее, если возникла проблема со входом в систему из-за чего-то еще, sshpass, как правило, не работал без предупреждения (без сообщения об ошибке). Так что отлаживайте команду без sshpassпредварительной записи; затем добавьте sshpass -p blah(и т. д.).
RedRedSuit
5
Вы должны знать, что выполненные команды оболочки сохраняются (например, в '.bash_history') ..
Бенджамин,
5
Аниш - Автор просил windows, вы дали вариант linux.
arka.b
24

Что насчет этого сценария ожидания?

#!/usr/bin/expect -f
spawn ssh root@myhost
expect -exact "root@myhost's password: "
send -- "mypassword\r"
interact
Илларион Ковальчук
источник
В нем говорится, что у меня нет сценария ожидания
Самир Саула
expectобщеизвестно недооценен!
Frerich Raabe
6

Решение Windows

  1. Установить PuTTY
  2. Нажмите Windows-Key + R
  3. Войти putty.exe -ssh [username]@[hostname] -pw [password]
optimiertes
источник
2

Решение PowerShell

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

New-SSHSession -ComputerName 0.0.0.0 -Credential $cred | Out-Null
Invoke-SSHCommand -SessionId 1 -Command "nohup sleep 5 >> abs.log &" | Out-Null
Оуайн Исав
источник