Иногда на серверах клиента приходится решать задачи применяя при этом не стандартные (порой не самые удачные) подходы. В работе есть ряд серверов, на которых установить SSH ключ не представляется возможным (фактор скорее человеческий, чем технический), однако для работы с такими серверами всё равно требуется автоматизациия. В этом случае серьёзно выручает sshpass — утилита, которая позволяет выполнять команды на удалённом сервере по SSH без ввода пароля вручную.
Работает она вот так:
sshpass -p superpassword ssh root@superserver.com -p2222 supercommand
В примере, на сервере superserver.com выполняется команда supercommand, для выполнения команды происходит авторизация по SSH с паролем superpassword.
[sysadmin@localhost ~]$ sshpass -p superpassword ssh root@superserver.com -p2222 ls -la /root/home/ итого 12 drwxr-xr-x 3 root root 4096 мар 20 18:24 . drw-r-----. 23 root root 4096 май 2 19:35 .. drwxr-xr-x 3 root root 4096 мар 20 18:24 test [sysadmin@localhost ~]$
С помощью sshpass автоматический ввод пароля можно использовать так же и для scp и rsync:
sshpass -p superpassword scp -P2222 ./test.html root@superserver.com:/root/home/
sshpass -p superpassword rsync -avz -e "ssh -p2222" ./test/ root@superserver.com:/root/home/
А ещё я у себя с помощью этой утилиты настроил автоматический вход на серверы по ssh из KeePassX. Выглядит это вот так:
Создана отдельная запись, с логинм, паролем, и командой запуска терминала в котором выполняется запуск sshpass и вход на сервер. Теперь, при нажатии сочетания Ctrl+u я получаю открытую в терминале вкладку с уже авторизованной на сервере консолью.
Такое себе решения для прода с лоином и паролем
но за статью спасибо, рабочие команды)
можно еще использовать ключ -o StrictHostKeyChecking=no у ssh
Да я сам за ключи на самом деле, но что есть, то есть. 🙂 Спасибо за фидбек.