LinuxForum.Fans
Тема

Работа с ssh

Автор: u_snif 12 сообщений 10006 просмотров
#588

Добро время суток, подскажите мне как в bash`е работать с ssh? Просто командой ssh ip я думаю мало, что получиться т.к. там необходимо в некоторых случаях давать согласие о принятии ключа. Так-же ввод пароля производится не сразу, а по истечению времени. В общем прошу у вас помощи. Как это реализовать? Накидайте небольшой код или дайте ссылку, в любом случае буду признателен.

#686
.snif написал:
Добро время суток, подскажите мне как в bash`е работать с ssh?

Можете более детально рассказать о Вашей проблеме?

#708
Hvzh написал:
[quote=.snif]Добро время суток, подскажите мне как в bash`е работать с ssh?

Можете более детально рассказать о Вашей проблеме?[/quote]
ну ниже я в принципе всё описал, могу лишь написать для чего нужен скрипт. Хочу написать скрипт, который будет конектится к серверу и забирать с него некоторую информацию.

#715

Авторизация по ключу не подходит? Чтобы не вводить пароль и т.п.

#717

Вам надо настроет аутентификацию по ключу.
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
Если на сервере такого каталога и файла нет, надо их создать.

#723

В том то и дело, что мне не по ключу надо, а так. Скрипт должен сам вводить пароль

#729

Это не совсем безопасно, хранить пароли в скриптах. Вариант с ключом несколько надёжнее. Почему вы не хотите использовать его?

#732
.snif написал:
В том то и дело, что мне не по ключу надо, а так. Скрипт должен сам вводить пароль

Хотите хранить пароль внутри скрипта в открытом виде?
Ну предупреждение о неизвестном ключе нового хоста, можно погасить ключом (сейчас не помню, пойду курить ман (-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
#750
nesk написал:
[quote=.snif]В том то и дело, что мне не по ключу надо, а так. Скрипт должен сам вводить пароль

Хотите хранить пароль внутри скрипта в открытом виде?
Ну предупреждение о неизвестном ключе нового хоста, можно погасить ключом (сейчас не помню, пойду курить ман (-f кажется (правда эта опция не сработает, если требуется вводить пароль с стандартного ввода)
Что касается непредсказуемых таймаутов, надо фильтровать вывод ssh клиента, ловить там запросы на ввод пароля, и только потом его подставлять в стандартный ввод.

Может использовать expect ?
Вот, что гугл откапал

#!/usr/bin/expect
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
[/quote]
спасибо, буду пробовать)
#1307

Тут однозначно нужно применять expect

#1308

Есть ещё обёртка вокруг except - sshpass. Специально для этого.

// Просто командой ssh ip я думаю мало, что получиться т.к. там необходимо в некоторых случаях давать согласие о принятии ключа.
мануальная терапия по ссш говорит об опции
StrictHostKeyCheking no
в /etc/ssh/ssh_config

думаю, эту же опцию можно и в качестве аргумента самой команды подключения заюзать.

#1375

Если lkz бэкапов то можно rsync. Он умеет самостоятельно ходить через ssh b хранить пароли в меру секьюрно.

Войдите или зарегистрируйтесь, чтобы ответить.