我有一台装有 MacOSX Leopard (10.6.2) 的 MacBook,我用它通过 SSH 连接到一些服务器(它们的操作系统是 Debian Lenny)。我使用 RSA 密钥登录服务器A,然后我从那里“跳转到”其他服务器乙,C和德。我已在笔记本电脑上.ssh/config
为服务器激活代理转发A为了能够连接到A然后从A到乙,C或者德无需每次都输入密码。它工作正常。
但我读到代理转发有一个安全漏洞:如果黑客获得了root
服务器的访问权限A,他将能够劫持代理转发机制并连接到服务器乙,C和德无需任何密码。
显然,一个解决方案是使用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 配置为ssh-add
使用该-c
选项启动。不幸的是,我找不到该选项。
如果您有任何其他想法可以保护我免受代理转发劫持,我将不胜感激。
谢谢。
答案1
代理尝试运行辅助程序来提示。在 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
答案2
阅读此页http://jcs.org/notaweblog/2011/04/19/making_openssh_on_mac_os_x_more_secure/Joshua Stein 的解决方案