Назад | Перейти на главную страницу

Как я могу активировать подтверждение ssh-agent в MacOSX Leopard?

У меня есть MacBook с MacOSX Leopard (10.6.2), и я использую его для подключения к некоторым серверам (их ОС - Debian Lenny) по SSH. Я использую ключи RSA для входа на сервер А, и оттуда я "перебрасываюсь" на другие серверы B, C и D. У меня есть переадресация активированного агента в ноутбуке .ssh/config для сервера А чтобы иметь возможность подключиться к А а затем "отскочить" от А к B, C или D без необходимости каждый раз вводить свой пароль. Работает нормально.

Но я читал, что пересылка агентов имеет один недостаток безопасности: если хакер root доступ на сервере А, он сможет перехватить механизм переадресации агента и подключиться к серверам B, C и D без пароля.

По-видимому, одно из решений - использовать ssh-addс -c вариант: предполагается, что каждый раз, когда сервер запрашивает подтверждение А хочет использовать мой ключ RSA. Но почему-то не получается:

miniquark@mylaptop:~$ ssh-add -c
Enter passphrase for /Users/miniquark/.ssh/id_rsa: 
Identity added: /Users/miniquark/.ssh/id_rsa (/Users/miniquark/.ssh/id_rsa)
The user has to confirm each use of the key
miniquark@mylaptop:~$ ssh serverA
Agent admitted failure to sign using the key.
miniquark@serverA's password: 

Обычно запускать не нужно ssh-add вручную, поскольку MacOSX делает это за меня автоматически, когда я запускаю соединение ssh, для которого требуется ключ RSA. Так что, возможно, решением было бы настроить MacOSX для запуска ssh-add с -c вариант. К сожалению, я просто не могу найти такой вариант.

Если у вас есть другая идея, которая могла бы защитить меня от переадресации агента, я был бы очень признателен.

Спасибо.

Агент пытается запустить вспомогательную программу для запроса. В OS X этого нет по умолчанию, поэтому вам необходимо предоставить его (в / usr / libexec / ssh-askpass). Сейчас я использую такой:

#! /bin/sh  

#  
# An SSH_ASKPASS command for MacOS X  
#  
# Based on script by Joseph Mocker, Sun Microsystems


TITLE=${MACOS_ASKPASS_TITLE:-"SSH Agent"}  

DIALOG="display dialog \"$@\" buttons {\"Deny\", \"Allow\"} default button 2"
DIALOG="$DIALOG with title \"$TITLE\" with icon caution"  

result=`osascript -e 'tell application "Terminal"' -e "$DIALOG" -e 'end tell'`  

if [ "$result" = "button returned:Allow" ]; then
    exit 0 
else  
    exit 1  
fi

Прочтите эту страницу http://jcs.org/notaweblog/2011/04/19/making_openssh_on_mac_os_x_more_secure/ для решения Джошуа Штайна