неинтерактивные сеансы 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
для подключения, имея его получить и ввести пароль автоматически.