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

21

Eu tenho um volume FAT criptografado (para compatibilidade) contendo um arquivo de chave privada e outros dados confidenciais.

Eu quero me conectar 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 a minha chave dizendo que suas permissões são muito abertas.

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

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

Editar : Precisão: era um volume TrueCrypt no OS X.

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

    
por instanceof me 05.11.2009 / 15:47

6 respostas

14

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 o named pipe ou algo parecido). Além disso, você não quer enganar o ssh, mas apenas usar seus arquivos de chaves.

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

Embora as opções de montagem ainda não sejam corretamente suportadas pelo TrueCrypt for OS X (mesmo se você iniciar o TC usando a interface da linha de comandos e as opções de montagem da página man - já tentadas), o OS X suporta padrões de opções de montagem baseados em o nome do volume.

Você precisa saber o seu ID de usuário (geralmente 501 se você for o primeiro / único usuário do computador). Você pode obtê-lo com "id -u".

Digamos que o nome do volume seja "PRIVATE" (os nomes dos volumes estão em maiúsculas), e o seu uid é 501, tudo que você precisa fazer é adicionar essa 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

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

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

    
por 06.11.2009 / 18:40
16

Adicionando a chave do stdin funcionou para mim:

cat /path/to/id_rsa | ssh-add -k -
    
por 14.11.2017 / 11:25
7

Como uma solução maluca, você poderia fazer uma imagem de disco de um volume ext2 contendo sua chave privada e montá-la como um dispositivo de loop, então use sua chave ssh de lá.

Crie um arquivo vazio de 1 MB:

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

Formate-o ext2 (pressione S quando ele disser que não é um dispositivo):

mke2fs diskimg

Monte 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 certificar-se de que essas permissões tenham o UID / GID correto com base em qualquer sistema em que você esteja (já que os UIDs podem não coincidir). Também requer acesso sudo / root ao trabalho.

    
por 05.11.2009 / 16:14
2

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

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

    
por 10.11.2009 / 13:21
1

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

[ -S "$SSH_AUTH_SOCK" ] || eval $(ssh-agent)
ssh-add path/to/id_rsa
    
por 05.11.2009 / 16:32
0

Você pode modificar suas opções de montagem ( umask , uid e gid ) para se adequarem?

    
por 05.11.2009 / 15:52