Как активировать подтверждение ssh-agent в MacOSX Leopard?
У меня есть MacBook с MacOSX Leopard (10.6.2), и я использую его для подключения к некоторым серверам (их ОС - Debian Lenny) с использованием SSH. Я использую ключи RSA для входа на сервер A, и оттуда я "подпрыгиваю" на другие серверы B, C и D. Я активировал переадресацию агентов на моем ноутбуке .ssh/config
для сервера A, чтобы иметь возможность подключиться к A и затем "отскочить" от A до B, C или D без необходимости каждый раз вводить мой пароль. Работает нормально.
Но я читал, что переадресация агента имеет один недостаток безопасности: если хакер получает root
Получив доступ к серверу A, он сможет перехватить механизм переадресации агента и подключиться к серверам B, C и D без какого-либо пароля.
По-видимому, одним из решений является использование ssh-add
"s -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
вариант. К сожалению, я просто не могу найти этот вариант.
Если у вас есть какая-либо другая идея, которая защитит меня от перехвата агентов, я был бы очень благодарен.
Спасибо.
2 ответа
Агент пытается запустить вспомогательную программу для запроса. В 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/ для решения Джошуа Стейна