У меня есть 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/ для решения Джошуа Штайна