sudo não consegue acessar a chave privada

sudo não consegue acessar a chave privada

Eu tenho um par de chaves pública-privada ~/.sshusado para conexão SSH com o GitHub.

Para testar se configurei o SSH com o GitHub corretamente, usei o , que funciona bem.ssh -T [email protected]

Além disso, se eu executar o comando acima como superusuário, tudo funcionará bem.

su
ssh -T [email protected]

No entanto, quando uso o sudo, o comando não funciona. Suspeito que não seja possível acessar o par de chaves armazenado quando ~/.sshexecutado comsudo

O comando abaixo falha.

sudo ssh -T [email protected]

Você pode replicar facilmente o problema com qualquer distribuição Ubuntu eessePágina de ajuda do GitHub.

Editar:

Entendo que posso passar a chave privada da sshseguinte maneira:

ssh -i <path-to-private-key> -T [email protected]

Só estou me perguntando por que o uso torna a chave privada inacessível.sudo ssh -T [email protected]

Responder1

Hipótese: há um agente de autenticação em execução para seu usuário regular e o agente possui a chave.

sshgerado a partir de um shell não elevado herda a variável de ambiente crucial SSH_AUTH_SOCKque informa a localização do soquete para se comunicar com o agente. sshé capaz de usar o agente, é assim que você normalmente usa um agente.

sunão desativa a variável. sshafter sué capaz de localizar o soquete graças à variável. Normalmente o soquete não pode ser acessado por outros usuários além do proprietário, mas agora sshé executado como root e o root pode acessar (quase) qualquer arquivo, independentemente de suas permissões.

sudo fazremover a definição da variável (por padrão; consulteesseeque). sshin sudo ssh …não consegue localizar o soquete. É como se o agente não estivesse lá. sshtenta encontrar a chave privada correta em alguns locais padrão em ~/.ssh, mas agora ele verifica no diretório inicial da raiz, não no diretório inicial do usuário normal, onde está a chave privada correta.

Responder2

Você pode passar o caminho para o seu arquivo de identidade com a opção -i para ssh.

ssh user@host -i /path/to/keyfile

informação relacionada