неинтерактивные сеансы SSH
Если вам не нужно иметь интерактивную сессию на удаленном сервере, вы можете выполнить ssh в среде без tty, например, как часть Выполнить Скрипт действий Automator.
вам нужно создать программу, которая при вызове выводит пароль на стандартный выход, например, следующий скрипт bash, который вам нужно сделать исполняемым с помощью chmod +x pwd.sh:
#!/usr/bin/env bash
echo "password"
затем установите the SSH_ASKPASS переменная окружения путь к этой программе, а затем запустите ssh в действии Automator, как это:
export SSH_ASKPASS=/Users/danielbeck/pwd.sh
ssh user@hostname ls
когда нет tty, а SSH_ASKPASS и DISPLAY (для X11, установлено по умолчанию), SSH выполняет программу, указанную SSH_ASKPASS и использует его вывод в качестве пароля. Это предназначено, чтобы использоваться в графических средах, так,чтобы окно могло выскочить запрос пароля. В этом случае мы просто пропустили окно, вернувшись пароль от нашей программы. Вы можете использовать security читать из брелка вместо этого, как это:
#!/usr/bin/env bash
security find-generic-password -l password-item-label -g 2>&1 1>/dev/null | cut -d'"' -f2
ls (на ssh командная строка) - команда выполняется, когда ssh вошел в систему, и его вывод печатается в Automator. Можно, конечно, перенаправить его в файл журнала программы запуска.
интерактивные сеансы SSH с помощью sshpass
я скачал, скомпилировал и установил sshpass и это работать отлично. Вот что я сделал:
- получить инструменты разработчика Apple
- скачать и открыть
sshpass-1.05.tar.gz
- открыть оболочку в директорию
sshpass-1.05
- Run
./configure
- Run
make
- Run
make install (вам может понадобиться sudo за это)
теперь программа установлена в /usr/local/bin/sshpass. Выполните с помощью следующей строки:
sshpass -pYourPassword ssh username@hostname
вы можете прочитать пароль от security непосредственно перед этим, и использовать его следующим образом:
SSHPASSWORD=$( security find-generic-password -l password-item-label -g 2>&1 1>/dev/null | cut -d'"' -f2 )
sshpass -p"$SSHPASSWORD" ssh username@hostname
оберните это в функцию оболочки, и вы можете просто ввести, например,ssh-yourhostname для подключения, имея его получить и ввести пароль автоматически.