• This repository has been archived on 23/Nov/2017
  • Stars
    star
    104
  • Rank 330,604 (Top 7 %)
  • Language
    Shell
  • License
    GNU General Publi...
  • Created about 13 years ago
  • Updated about 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Mac OS X equivalent for the ssh-askpass CLI that doesn't exist

ssh-askpass (for Mac OS X)

Note: this project has been deprecated in favor of the brew package: https://github.com/theseal/ssh-askpass

brew tap theseal/ssh-askpass
brew install ssh-askpass

Author: Mark Carver
Created: 2011-09-14
Licensed under GPL 3.0

Based off script from author: Joseph Mocker, Sun Microsystems http://blogs.oracle.com/mock/entry/and_now_chicken_of_the

If you've gotten this error:

    remote: ssh_askpass: exec(/usr/libexec/ssh-askpass): No such file or directory

Then you probably need this script. Mac OS X does not prompt for a password outside of Terminal when connecting via SSH (for security reasons). This script grants any application the ability to prompt the user for a password via an AppleScript dialog.


Usage

  1. You can install this script using the INSTALL file included with the download (easiest/automatic)
    1. Open Terminal /Applications/Utilities/Terminal.app
    2. Type sudo`` (with the space at the end)
    3. Drag the INSTALL file onto Terminal and press return
    4. Enter your password
  1. You can install this script manually:
    1. Copy the source code located below
    2. Open Terminal /Applications/Utilities/Terminal.app
    3. Type sudo vi /usr/libexec/ssh-askpass
    4. Enter your password
    5. Type i to go into edit mode
    6. Press ⌘v to paste the code
    7. Press esc to go out of edit mode
    8. Type : then w and press return to write the file
    9. Type : then x and press return to exit vi
    10. Type sudo chmod +rx /usr/libexec/ssh-askpass to make the script executable
    11. Test the script! Type /usr/libexec/ssh-askpass

NOTE: You must run as root or precede the commands with sudo when using INSTALL or vi. The directory /usr/libexec is owned by root.


Notes

If you plan on manually installing this script, please note that you will have to set the following variable for SSH to recognize where the script is located:

export SSH_ASKPASS="/path/to/ssh-askpass"


Source

#!/bin/bash
# Script: ssh-askpass
# Author: Mark Carver
# Created: 2011-09-14
# Licensed under GPL 3.0

# A ssh-askpass command for Mac OS X
# Based from author: Joseph Mocker, Sun Microsystems
# http://blogs.oracle.com/mock/entry/and_now_chicken_of_the

# To use this script:
#   Install this script running INSTALL as root
#
# If you plan on manually installing this script, please note that you will have
# to set the following variable for SSH to recognize where the script is located:
#   export SSH_ASKPASS="/path/to/ssh-askpass"

TITLE="${SSH_ASKPASS_TITLE:-SSH}";
TEXT="$(whoami)'s password:";
IFS=$(printf "\n");
CODE=("on GetCurrentApp()");
CODE=(${CODE[*]} "tell application \"System Events\" to get short name of first process whose frontmost is true");
CODE=(${CODE[*]} "end GetCurrentApp");
CODE=(${CODE[*]} "tell application GetCurrentApp()");
CODE=(${CODE[*]} "activate");
CODE=(${CODE[*]} "display dialog \"${@:-$TEXT}\" default answer \"\" with title \"${TITLE}\" with icon caution with hidden answer");
CODE=(${CODE[*]} "text returned of result");
CODE=(${CODE[*]} "end tell");
SCRIPT="/usr/bin/osascript"
for LINE in ${CODE[*]}; do
    SCRIPT="${SCRIPT} -e $(printf "%q" "${LINE}")";
done;
eval "${SCRIPT}";