如何在MacOSX Leopard中激活ssh-agent确认?

我有一台带有MacOSX Leopard(10.6.2)的MacBook,我用它连接到一些服务器(他们的O.S.是Debian Lenny)使用SSH.我使用RSA密钥登录到服务器A,并从那里“反弹”到其他服务器B,C和D.我已经在我的笔记本电脑的.ssh / config中为服务器A激活了代理转发,以便能够连接到A然后从A跳到B,C或D,而不必每次都输入我的密码.它工作正常.

但我读到代理转发有一个安全漏洞:如果黑客在服务器A上获得root访问权限,他将能够劫持代理转发机制并连接到服务器B,C和D而无需任何密码.

显然,一种解决方案是使用ssh-add的-c选项:每次服务器A想要使用我的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,因为当我启动需要RSA密钥的ssh连接时,MacOSX会自动为我执行此操作.因此,解决方案可能是配置MacOSX以使用-c选项启动ssh-add.不幸的是,我只是找不到那个选项.

如果您有任何其他想法可以保护我免受代理人转发劫持,我将非常感激.

谢谢.

代理尝试运行帮助程序以进行提示.在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
翻译自:https://serverfault.com/questions/112920/how-can-i-activate-ssh-agent-confirmation-in-macosx-leopard

转载注明原文:如何在MacOSX Leopard中激活ssh-agent确认?