Contourner la vérification des autorisations du fichier de clé ssh

29

J'ai un volume FAT crypté (pour des raisons de compatibilité) contenant un fichier de clé privée et d'autres données sensibles.

Je veux me connecter à mon serveur via SSH en utilisant ma clé privée, mais bien sûr, comme FAT ne prend pas en charge l'autorisation de fichier, il ignore ma clé en disant que ses autorisations sont trop ouvertes.

Donc actuellement, je le copie ailleurs sur mon disque dur avec des autorisations 0600, je l'utilise puis je l'efface en toute sécurité, mais c'est pénible.

Existe-t-il un moyen de contourner la vérification des autorisations sur cette ligne de commande très ssh / scp?

Edit : Précision: c'était un volume TrueCrypt sur OS X.

Sur la solution: La réponse acceptée ci-dessous a résolu mon problème (en utilisant un fichier de clé SSH situé sur un volume TrueCrypt avec Mac OS X), mais c'est une solution de contournement. Il semble qu'il n'y ait aucun moyen de "vérifier la permission du fichier de clé bypasssh".

par exemple de moi
la source

Réponses:

18

AFAIK, il n'y a aucun moyen de contourner la vérification des autorisations du fichier de clés avec ssh ou ssh-add (et vous ne pouvez pas le tromper avec un canal nommé ou autre). De plus, vous ne voulez pas vraiment tromper ssh, mais simplement pouvoir utiliser vos fichiers de clés.

En effet, le volume TrueCrypt est censé garder vos données privées, donc monter les volumes en lecture universelle (comportement par défaut de TrueCrypt) n'est pas vraiment optimal. Si vous utilisez un volume au format FAT, vous devez vraiment ajuster les options de montage, comme l'a suggéré Dan Carley.

Bien que les options de montage ne soient pas encore correctement prises en charge par TrueCrypt pour OS X (même si vous lancez TC à l'aide de l'interface de ligne de commande et des options de montage de la page de manuel - déjà essayées), OS X prend en charge les options de montage par défaut en fonction du nom du volume .

Vous devez connaître votre ID utilisateur (généralement 501 si vous êtes le premier / seul utilisateur de l'ordinateur). Vous pouvez l'obtenir avec "id -u".

Disons que votre nom de volume est "PRIVATE" (les noms de volume sont en majuscules), et votre UID est 501, tout ce que vous avez à faire est d'ajouter cette ligne à / etc / fstab:

LABEL=PRIVATE none msdos -u=501,-m=700

Vous devez être root pour créer / éditer ce fichier (il n'est pas présent dans l'installation OSX par défaut):

sudo vim /etc/fstab

La prochaine fois que vous monterez le volume, il aura l'autorisation 700 et l'ID propriétaire 501.

Cela fonctionne également avec les clés USB (qui sont généralement formatées en FAT également).

user9437
la source
fonctionne parfaitement
instanceof me
Je n'ai pas pu obtenir un volume au format FAT pour obtenir les bonnes autorisations avec cette méthode. Cependant, sélectionner "Mac OS étendu" et sélectionner l'option à monter sur d'autres systèmes d'exploitation me permet de définir les autorisations avec chmod.
emptyset
Cela a fonctionné à merveille. Lorsque je monte le volume sécurisé, je monte à un point spécifique de mon répertoire personnel. J'ai trouvé que je devais remplacer la valeur de 'none' par le nom explicite du point de montage.
Alec the Geek
1
Cela fonctionne même quand il n'y a pas de /etc/fstabfichier sur OS X plus récent. etc/fstab
Créez
33

L'ajout de la clé de stdin a fonctionné pour moi:

cat /path/to/id_rsa | ssh-add -k -
R_Beagrie
la source
1
pourquoi cela n'a-t-il pas un vote positif? cela fonctionne hors de la boîte sans montage et vous utilisez quand même un agent ssh, n'est-ce pas?
pscheit
4
fonctionne comme un charme - devrait être la réponse acceptée
hdave
1
Cela m'a fait entrer. Utilisation de WSL Ubuntu. Merci!
mydoglixu
7

Pour contourner ce problème, vous pouvez créer une image disque d'un volume ext2 contenant votre clé privée et la monter en tant que périphérique de boucle, puis utiliser votre clé ssh à partir de là.

Créez un fichier vide de 1 Mo:

dd if=/dev/zero of=diskimg bs=1024 count=1024

Formatez-le ext2 (appuyez sur Y quand il dit que ce n'est pas un appareil):

mke2fs diskimg

Montez-le quelque part (en tant que root):

mount -t ext2 -o loop diskimg /my/path/to/diskimg

Vous avez maintenant un petit système de fichiers ext2 sur lequel vous pouvez définir des autorisations. Vous pouvez écrire un script pour le monter et vous assurer que ces autorisations ont le bon UID / GID en fonction du système sur lequel vous vous trouvez (car les UID peuvent ne pas correspondre). Il nécessite également un accès sudo / root pour fonctionner.

Kyle Smith
la source
semble qu'il n'y a pas d'option plus simple
instanceof me
1
c'est tellement faux - mais très cool :)
warren
1
@warren: Je l'ai fait précéder de "fou". :-D
Kyle Smith
2

Qu'en est-il de l'ajout StrictModes noà votre /etc/ssh/sshd_config(et au sshd de rechargement / redémarrage)?

edit: oops, cette option est uniquement côté serveur: /

Benoît
la source
1

Si je me souviens bien, ssh-agentne vérifie pas les autorisations de clé. Cela pourrait donc fonctionner:

[-S "$ SSH_AUTH_SOCK"] || eval $ (agent ssh)
ssh-add chemin / vers / id_rsa
grawity
la source
Pour info, cela ne fonctionne pas. ssh-addvérifie les autorisations des fichiers.
Kyle Smith
0

Pouvez-vous modifier vos options de montage ( umask, uidet gid) en fonction?

Dan Carley
la source
AFAIK Non, c'est un volume TrueCrypt, ma seule option est de le monter en lecture seule et ssh se plaint toujours de 0777
instanceof me