Wie kann ich die Bestätigung des SSH-Agenten in MacOSX Leopard aktivieren?

7

Ich habe ein MacBook mit MacOSX Leopard (10.6.2) und verwende es, um über SSH eine Verbindung zu einigen Servern (deren Betriebssystem Debian Lenny ist) herzustellen. Ich benutze RSA - Schlüssel zum Login auf Server A und von dort I "bounce" auf andere Server B , C und D . Ich habe die Agentenweiterleitung in meinem Laptop .ssh/configfür Server A aktiviert , um eine Verbindung zu A herstellen und dann von A nach B , C oder D "springen" zu können , ohne jedes Mal mein Kennwort eingeben zu müssen. Es funktioniert gut.

Ich habe jedoch gelesen, dass die Agentenweiterleitung eine Sicherheitslücke aufweist: Wenn ein Hacker rootZugriff auf Server A erhält, kann er den Agentenweiterleitungsmechanismus entführen und ohne Kennwort eine Verbindung zu den Servern B , C und D herstellen .

Offenbar ist eine Lösung zu verwenden , ssh-add‚s -cOption: es soll mich für die Bestätigung Server jedes Mal fragen , A will meinen RSA - Schlüssel verwenden. Aber aus irgendeinem Grund scheitert es:

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: 

Normalerweise muss ich nicht ssh-addmanuell starten , da MacOSX dies automatisch für mich erledigt, wenn ich eine SSH-Verbindung starte, für die ein RSA-Schlüssel erforderlich ist. Vielleicht besteht die Lösung darin, MacOSX so zu konfigurieren, dass es ssh-addmit der -cOption gestartet wird . Leider kann ich diese Option einfach nicht finden.

Wenn Sie eine andere Idee haben, die mich vor der Entführung von Agentenweiterleitungen schützen würde, wäre ich Ihnen sehr dankbar.

Vielen Dank.

MiniQuark
quelle
Warum nicht einfach eine Sitzung für jeden Zielcomputer öffnen? Auf diese Weise können Sie jede Verbindung auf einer eigenen Registerkarte "Terminal" haben und das Sicherheitsproblem insgesamt vermeiden.
John Gardeniers
1
Ich verstehe Ihren Standpunkt, aber das Problem ist, dass ich einige Befehle auf Server A ausführen muss, die eine Verbindung zu den Servern B, C und D herstellen (Sicherungen, Protokollvergleiche ...). Außerdem befinden sich die Server B, C und D nicht im Internet: Ich muss Server A durchlaufen, um sie zu erreichen (aus Sicherheitsgründen).
MiniQuark
Wenn Maschine A verwurzelt ist, würde ich nicht sagen, dass der "Besucher", der Ihren SSH-Agenten missbraucht, das größte Problem ist. (Auch s / highjack / hijack / g)
user1686
Ja, wenn A verwurzelt ist, sind die Dinge ziemlich schlecht. Vielleicht haben Sie Recht, und es ist etwas übertrieben, die Bestätigung der Agentenweiterleitung auf meinem MacBook zu konfigurieren. Aber wenn es so einfach ist, ein oder zwei Zeilen in eine versteckte Konfigurationsdatei einzufügen, wird es wahrscheinlich nicht schaden. Ich hatte nur gehofft, dass jemand wusste, wie man es unter MacOSX funktioniert (wissend, dass es in Debian Lenny gut funktioniert). Wie auch immer, danke für den Einblick und den Rechtschreibhinweis. ;-)
MiniQuark

Antworten:

4

Der Agent versucht, ein Hilfsprogramm zur Aufforderung auszuführen. Unter OS X ist dies standardmäßig nicht vorhanden, daher müssen Sie eine angeben (unter / usr / libexec / ssh-askpass). Ich verwende derzeit eine ähnliche:

#! /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
Jeremy M.
quelle