SSH ... задавал вопрос...

Тема в разделе "Raspberry Pi", создана пользователем Igor68, 20 июн 2017.

  1. Igor68

    Igor68 Гуру

    Доброго времени суток!
    Сщбственно вопрос:
    Каким образом построить скрипт BASH, что бы он заходил на другое устройство используя SSH соединение и выполнял там команды. Вроде гичего заумного, но ввод пароля это соединение требует именно с клавиатуры... в TELNET вопросов не возникало.
     
  2. mcureenab

    mcureenab Гуру

    Можно сертификаты установить.
     
  3. rkit

    rkit Гуру

    Ключ для пароля есть, читайте ман
     
  4. Igor68

    Igor68 Гуру

    Вот найдено рабочее решение (пример, который при входе выполняет команды ls и df)
    Код (Bash):

    #!/bin/bash
    #

    user="www-data"
    ip="192.168.0.234"

    export DISPLAY=:0; export SSH_ASKPASS=./askpass.sh;
    #export DISPLAY=:0; export SSH_ASKPASS="www-data";
    setsid ssh -o StrictHostKeyChecking=no -T $user@$ip << EOF 2>&1
    ls
    df
    EOF
     
    тут пользователь user и ip всё понятно, но вот password выполняется файлом askpass.sh который только и делает echo:
    Код (Bash):

    #!/bin/bash

    echo "www-data"
     
    Таким образом скрипт по соединению SSH регистрируется на другой машине выполняет ls и df и отключается от неё
    вот весь отчёт:
    Код (Text):

    ./test1_ssh.shcoding/BASH$
    Linux debian2 2.6.32-5-686 #1 SMP Tue May 13 16:33:32 UTC 2014 i686

    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.

    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    !
    catserver
    clearlog.php
    coding
    cool
    Desktop
    Downloads
    err_stat_fur.html
    img
    index.html
    phpinfo.php
    ramdisk
    readlog.php
    start
    transport
    uno_dat.php
    Файловая система  1K-блоков  Исп  Доступно  Исп% смонтирована на
    /dev/sda1  149950740  12774816 129558800  9% /
    tmpfs  517204  0  517204  0% /lib/init/rw
    udev  511892  2180  509712  1% /dev
    tmpfs  517204  0  517204  0% /dev/shm
     
    Хотелось бы посерьёзнее, но без сертификатов.

    и не во всех Линуксах работает setsid... к примеру в MOXA UC-7112-LX-Plus. Но в Debian и Raspbian всё работает железно.
     
    arkadyf нравится это.
  5. Igor68

    Igor68 Гуру

    Какой именно ман прочесть?
     
  6. rkit

    rkit Гуру

    man ssh
     
    Igor68 нравится это.
  7. Igor68

    Igor68 Гуру

    Зря Вы так ругаетесь! на эту тему читаю непрерывно... и интересует что-то более практичное, чем тот пример, что я выложил выше... вполне рабочий пример. (посмотрите пост #4)
     
  8. mcureenab

    mcureenab Гуру

    Не припоминаю, чтобы ssh имел такой ключик.
    Но есть, например, утилита sshpass. Вероятно, она подойдет.
     
  9. Igor68

    Igor68 Гуру

    Простите... но я не понял про какой ключик.

    Вот только что испытал с малины к совсем не знакомой (малине) машине.
    Код (Text):

    igor@raspberrypi:~/bash/test_ssh $ ./test1_ssh.sh
    Warning: Permanently added '192.168.0.234' (RSA) to the list of known hosts.
    Linux debian2 2.6.32-5-686 #1 SMP Tue May 13 16:33:32 UTC 2014 i686

    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.

    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    !
    catserver
    clearlog.php
    coding
    cool  
    Desktop  
    Downloads  
    err_stat_fur.html  
    img  
    index.html  
    phpinfo.php  
    ramdisk  
    readlog.php  
    start  
    transport  
    uno_dat.php  
    Файловая система  1K-блоков  Исп  Доступно  Исп% смонтирована на  
    /dev/sda1  149950740  13267644 129065972  10% /  
    tmpfs  517204  0  517204  0% /lib/init/rw  
    udev  511892  2180  509712  1% /dev  
    tmpfs  517204  0  517204  0% /dev/shm
     
    Как видите регистрация и
    Warning: Permanently added '192.168.0.234' (RSA) to the list of known hosts.
    Linux debian2 2.6.32-5-686 #1 SMP Tue May 13 16:33:32 UTC 2014 i686
    Вполне успешны

    setsid - собственно "организовал" сеанс с ssh... и использовал ввод пароля не с клавиатуры.
     
  10. Igor68

    Igor68 Гуру

    Вот ещё одно испытание... сервер на работе (с Debian) в локальной сети проверяет малину. Он с ней не знаком совсем. Файлы в директории .ssh заранее удалены:
    Код (Text):

    www-data@debian2:~/coding/test_ssh$ ./test1_ssh.sh
    Warning: Permanently added '192.168.0.129' (RSA) to the list of known hosts.

    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.

    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    bash
    coding
    Desktop
    Documents
    Downloads
    mount
    Music
    Pictures
    Public
    ramdisk
    Templates
    transport
    Videos
    Filesystem  1K-blocks  Used Available Use% Mounted on
    /dev/root  30298204 4632460  24375176  16% /
    devtmpfs  469532  0  469532  0% /dev
    tmpfs  473864  0  473864  0% /dev/shm
    tmpfs  473864  6704  467160  2% /run
    tmpfs  5120  4  5116  1% /run/lock
    tmpfs  473864  0  473864  0% /sys/fs/cgroup
    /dev/mmcblk0p1  63503  20755  42748  33% /boot
    /dev/ram1  3963  30  3729  1% /mnt/ramdisk
    tmpfs  94776  0  94776  0% /run/user/1000
    tmpfs  94776  0  94776  0% /run/user/1001
     
    ...получает данные от малины. Следует заметить, что на малине сейчас не установлен Apache, а соответственно в скрипте изменены user и pasword. Зачем это? Это механизм автоконтроля и автоконфигурации кластера из пяти малин. Остаётся только установить пользователей с одним именем на каждую из малин... и написать пакет скриптов. А TELNET теперь и не понадобится. Пока криво конечно... НО!
     
    arkadyf нравится это.
  11. AlexU

    AlexU Гуру

    Лучше всё-таки сделать авторизацию по ключу. Меньше проблем в настройке. И дыр в безопасности не будет -- первое: пароль можно перехватить, второе: доверять кому попало не следует (это про параметр -oStrictHostKeyChecking=no). Хотя, если руками прописать ключ хоста в known_hosts, то этот параметр не понадобиться.
     
    arkadyf и Igor68 нравится это.
  12. Igor68

    Igor68 Гуру

    Вполне возможно так и будет... хоть и не решил пока.
    На все малины залит один образ с уже установленными элементами... и установлен один пользователь. Скрипт произведёт настройку... возможно, что в директорию .ssh он же и разместит требуемые ключи. Хотя если всё в локальной сети... хотелось бы гибкость, когда идентичные скрипты на устройствах будут контролировать работоспособность соседних устройств. Это часть начальной задачи. Поиск и идентификация по IP в локальной сети уже практически проработана... и для автоконфигурации надо только проработать правила. Вот SSH и тебуется... да и пользователь ведь не ROOT, а обычный с обычным доступом только к своим рессурсам.
     
  13. AlexU

    AlexU Гуру

    В целях безопасности root'у по ssh доступ давать не рекомендуется. Для решения административных задач заводится пользователь аналогичный обычным, которому разрешается выполнение команд через sudo или повышение привилегий через su. Остальным пользователям sudo и su запрещается. И если решитесь на ключи, то генерируйте ключи с длиной 4 кбит (большей длины наверно будет уже лишним, но и более устойчивым к взлому), т.к. при использовании ключей менее 2 кбит ssh соединение может быть взломано в момент авторизации (про пароли уж молчу).
     
    Igor68 и arkadyf нравится это.
  14. mcureenab

    mcureenab Гуру

    Это кому что надо. Если к Малинкам Пи есть физический доступ, как бы бдеть на счёт прав рута и взлома пароля нет смысла. Будет достаточно того, что к терминалу устройства нет свободного доступа у случайных пользователей.
     
    Igor68 нравится это.
  15. Igor68

    Igor68 Гуру

    Кстати про взлом паролей... пользуюсь fail2ban (спокойно ставится по #aptitude install fail2ban). Первые три попытки авторизации можно друг за другом, а остальные повторить можно, но довольно не скоро.