sshpass

Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2026
Перейти к:навигация, поиск


sshpass — утилита для неинтерактивной передачи пароля SSH. Позволяет автоматизировать подключение к серверам, где используется аутентификация по паролю, а не по ключу.

Принцип работы

SSH читает пароль напрямую с терминала (/dev/tty), а не из stdin. sshpass создаёт выделенный псевдо-TTY и «подсовывает» пароль, заставляя SSH думать, что его вводит живой пользователь.

Установка

ОС Команда
macOS (Homebrew) brew install hudochenkov/sshpass/sshpass
Ubuntu / Debian apt install sshpass
CentOS / RHEL yum install sshpass
Alpine apk add sshpass

Способы передачи пароля

Флаг Источник Пример
-p Пароль в команде sshpass -p 'mypass' ssh user@host
-f Первая строка файла sshpass -f /tmp/secret ssh user@host
-d Файловый дескриптор sshpass -d 3 ssh user@host 3< /tmp/secret
-e Переменная окружения SSHPASS export SSHPASS='mypass' && sshpass -e ssh user@host
(без флага) Стандартный ввод sshpass ssh user@host < /tmp/secret

Дополнительные опции

Опция Описание
-P prompt Указать строку-приглашение для пароля (по умолчанию ищет assword:)
-v Подробный вывод в stderr (для отладки)

Примеры

Базовая команда

sshpass -p 'password' ssh -o StrictHostKeyChecking=no root@192.168.1.1 "uptime"

Через переменную окружения (безопаснее)

export SSHPASS='password'
sshpass -e ssh -o StrictHostKeyChecking=no root@192.168.1.1

Из файла

echo 'password' > ~/.ssh/.pass && chmod 600 ~/.ssh/.pass
sshpass -f ~/.ssh/.pass ssh root@192.168.1.1

Копирование файла (scp)

sshpass -e scp -o StrictHostKeyChecking=no file.txt root@192.168.1.1:/tmp/

Интеграция с opencode

С sshpass можно подключаться к удалённым серверам через opencode-ops:

  1. Установить sshpass
  2. Создать запись в ~/.ssh/config:
Host my-server
    HostName 185.73.124.210
    User root
    Port 22
    StrictHostKeyChecking no
  1. Использовать sshpass через SSH_ASKPASS или обёртку

Безопасность

Рекомендации
Метод Уровень риска Комментарий
-p Высокий Пароль виден в ps aux и истории shell
-e Средний Пароль в переменной окружения — виден дочерним процессам
-f Низкий Пароль в файле — достаточно выставить chmod 600
SSH-ключи Нулевой Рекомендуемый способ для production

Минусы sshpass

  • Пароль может быть перехвачен через /proc

|* Не работает с passphrase для ключей (нужен ssh-agent)

  • Не все SSH-серверы поддерживают keyboard-interactive режим
  • Для production всегда предпочтительнее ключи ed25519

Ссылки

×
Реклама
ИКС