Добро время суток, подскажите мне как в bash`е работать с ssh? Просто командой ssh ip я думаю мало, что получиться т.к. там необходимо в некоторых случаях давать согласие о принятии ключа. Так-же ввод пароля производится не сразу, а по истечению времени. В общем прошу у вас помощи. Как это реализовать? Накидайте небольшой код или дайте ссылку, в любом случае буду признателен.
Работа с ssh
Добро время суток, подскажите мне как в bash`е работать с ssh?
Можете более детально рассказать о Вашей проблеме?
[quote=.snif]Добро время суток, подскажите мне как в bash`е работать с ssh?
Можете более детально рассказать о Вашей проблеме?[/quote]
ну ниже я в принципе всё описал, могу лишь написать для чего нужен скрипт. Хочу написать скрипт, который будет конектится к серверу и забирать с него некоторую информацию.
Авторизация по ключу не подходит? Чтобы не вводить пароль и т.п.
Вам надо настроет аутентификацию по ключу.
http://www.opennet.ru/base/sec/ssh_pubkey_auth.txt.html
http://www.openbsd.ru/docs/ssh.html
Если в двух словах:
На клиентской машине (на которой будет выполнятся скрипт), генерируете ключ командой
ssh-keygen
Можно сгенерировать ключ с пустой парольной фразой (passphrase)
После этого в каталоге ~/.ssh появятся файл id_rsa.pub
Этот файл надо безопасно передать на сервер.
Там в поместить содержимое этого файла в файл ~/.ssh/authorized_keys
cat id_rsa.pub >> ~/.ssh/authorized_keys
Если на сервере такого каталога и файла нет, надо их создать.
В том то и дело, что мне не по ключу надо, а так. Скрипт должен сам вводить пароль
Это не совсем безопасно, хранить пароли в скриптах. Вариант с ключом несколько надёжнее. Почему вы не хотите использовать его?
В том то и дело, что мне не по ключу надо, а так. Скрипт должен сам вводить пароль
Хотите хранить пароль внутри скрипта в открытом виде?
Ну предупреждение о неизвестном ключе нового хоста, можно погасить ключом (сейчас не помню, пойду курить ман (-f кажется (правда эта опция не сработает, если требуется вводить пароль с стандартного ввода)
Что касается непредсказуемых таймаутов, надо фильтровать вывод ssh клиента, ловить там запросы на ввод пароля, и только потом его подставлять в стандартный ввод.
Может использовать expect ?
Вот, что гугл откапал
#!/usr/bin/expect
spawn ssh 192.168.0.15
expect assword {send thisIsPassword\r}
expect bsd {send \r}
send "mkdir new\r"
send "su\r"
expect assword {send thisIsPassword\r}
send "cd ..\r"
send "mkdir newDir\r"
send "exit\r"
send "exit\r"
expect eof
[quote=.snif]В том то и дело, что мне не по ключу надо, а так. Скрипт должен сам вводить пароль
Хотите хранить пароль внутри скрипта в открытом виде?
Ну предупреждение о неизвестном ключе нового хоста, можно погасить ключом (сейчас не помню, пойду курить ман (-f кажется (правда эта опция не сработает, если требуется вводить пароль с стандартного ввода)
Что касается непредсказуемых таймаутов, надо фильтровать вывод ssh клиента, ловить там запросы на ввод пароля, и только потом его подставлять в стандартный ввод.
Может использовать expect ?
Вот, что гугл откапал
#!/usr/bin/expect[/quote]
spawn ssh 192.168.0.15
expect assword {send thisIsPassword
}
expect bsd {send
}
send "mkdir new
"
send "su
"
expect assword {send thisIsPassword
}
send "cd ..
"
send "mkdir newDir
"
send "exit
"
send "exit
"
expect eof
спасибо, буду пробовать)
Тут однозначно нужно применять expect
Есть ещё обёртка вокруг except - sshpass. Специально для этого.
// Просто командой ssh ip я думаю мало, что получиться т.к. там необходимо в некоторых случаях давать согласие о принятии ключа.
мануальная терапия по ссш говорит об опции
StrictHostKeyCheking no
в /etc/ssh/ssh_config
думаю, эту же опцию можно и в качестве аргумента самой команды подключения заюзать.
Если lkz бэкапов то можно rsync. Он умеет самостоятельно ходить через ssh b хранить пароли в меру секьюрно.