Ignorar verificação de permissão de arquivo de chave ssh

29

Eu tenho um volume FAT criptografado (para compatibilidade) que contém um arquivo de chave privada e outros dados confidenciais.

Quero conectar-me ao meu servidor através do SSH usando minha chave privada, mas é claro, como o FAT não suporta permissão de arquivo, ele ignora minha chave dizendo que suas permissões são muito abertas.

Atualmente, estou copiando-o em outro lugar do meu disco rígido com permissões 0600, usando-o e depois apagando-o com segurança, mas é uma dor.

Existe uma maneira de ignorar a verificação de permissão nessa linha de comando muito ssh / scp?

Edit : Precision: era um volume TrueCrypt no OS X.

Sobre a solução: A resposta aceita abaixo resolveu meu problema (usando um arquivo de chave SSH localizado em um volume TrueCrypt no Mac OS X), mas é uma solução alternativa. Parece que não há como "ignorar a verificação de permissão de arquivo-chave".

exemplo de mim
fonte

Respostas:

18

AFAIK, não há como ignorar a verificação de permissão do arquivo de chaves com ssh ou ssh-add (e você não pode enganá-lo com pipe nomeado ou algo assim). Além disso, você realmente não quer enganar o ssh, mas apenas para poder usar seus arquivos-chave.

De fato, o volume TrueCrypt deve manter seus dados privados, portanto, montar os volumes como legíveis pelo mundo (comportamento padrão do TrueCrypt) não é realmente ideal. Se você estiver usando um volume formatado em FAT, deverá ajustar as opções de montagem, como sugeriu Dan Carley.

Embora as opções de montagem ainda não sejam suportadas corretamente pelo TrueCrypt para OS X (mesmo se você iniciar o TC usando a interface da linha de comandos e as opções de montagem da página de manual - já experimentadas), o OS X suporta os padrões das opções de montagem com base no nome do volume .

Você precisa saber sua identificação de usuário (geralmente 501, se você é o primeiro / único usuário do computador). Você pode obtê-lo com "id -u".

Digamos que o nome do volume seja "PRIVADO" (os nomes dos volumes estão em maiúsculas) e seu uid é 501, tudo o que você precisa fazer é adicionar esta linha ao / etc / fstab:

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

Você precisa ser root para criar / editar este arquivo (ele não está presente na instalação padrão do OSX):

sudo vim /etc/fstab

Da próxima vez que você montar o volume, ele terá permissão 700 e ID do proprietário 501.

Isso também funciona com unidades USB (que geralmente também são formatadas em FAT).

user9437
fonte
funciona perfeitamente
instanceof me
Não consegui obter um volume formatado em FAT para obter as permissões corretas com esse método. No entanto, selecionar "Mac OS Extended" e selecionar a opção de montagem em outros sistemas operacionais permite definir as permissões com o chmod.
precisa saber é
Isso funcionou maravilhosamente. Quando monto o volume seguro, monto em um ponto específico no meu diretório pessoal. Eu descobri que tinha que substituir o valor de 'none' pelo nome explícito do ponto de montagem.
Alec a Geek
1
Isso funciona mesmo quando não há /etc/fstabarquivos no OS X mais recente. Basta criar um novo etc/fstabarquivo com os
itens
33

Adicionar a chave do stdin funcionou para mim:

cat /path/to/id_rsa | ssh-add -k -
R_Beagrie
fonte
1
por que isso não tem um voto positivo? funciona de imediato sem montagem e você está usando um agente ssh de qualquer maneira, não é?
Pscheit
4
funciona como um encanto - deve enviar um e a resposta aceita
hdave
1
Isso me chamou a atenção. Usando o WSL Ubuntu. Obrigado!
mydoglixu 6/06
7

Como uma solução alternativa maluca, você pode criar uma imagem de disco de um volume ext2 contendo sua chave privada e montá-la como um dispositivo de loop, e depois usar sua chave ssh.

Crie um arquivo vazio de 1 MB:

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

Formate ext2 (pressione Y quando indicar que não é um dispositivo):

mke2fs diskimg

Monte-o em algum lugar (como root):

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

Agora você tem um pequeno sistema de arquivos ext2 no qual pode definir permissões. Você pode escrever um script para montá-lo e garantir que essas permissões tenham o UID / GID correto, com base em qualquer sistema em que você esteja (pois os UIDs podem não corresponder). Também requer acesso ao sudo / root para funcionar.

Kyle Smith
fonte
Parece que não há nenhuma opção mais simples
instanceof me
1
que é tão errado - mas muito cool :)
Warren
1
@warren: Eu fiz o prefácio com 'crazy'. :-D
Kyle Smith
2

Que tal adicionar StrictModes noao seu /etc/ssh/sshd_config(e recarregar / reiniciar sshd)?

edit: oops, esta opção é apenas do lado do servidor: /

Benoît
fonte
1

Se bem me lembro, ssh-agentnão verifica as permissões de chave. Portanto, isso pode funcionar:

[-S "$ SSH_AUTH_SOCK"] || eval $ (ssh-agent)
caminho ssh-add / para / id_rsa
gravidade
fonte
Para sua informação, isso não funciona. ssh-addverifica as permissões de arquivo.
Kyle Smith #
0

Você pode modificar as opções de montagem ( umask, uide gid) para se adequar?

Dan Carley
fonte
AFAIK Não, é um volume TrueCrypt, minha única opção é para montá-lo como somente leitura e ssh ainda reclama que é 0777
instanceof me