ssh
ignora $HOME
, obtém o diretório home do banco de dados do usuário com base no real uid (usando o campo pw_dir
da estrutura retornada por getpwuid()
).
Dado que ssh
poderia gravar arquivos lá como known_hosts
, é bom que isso não aconteça em /home/me/.ssh
, pois você acabaria com um arquivo de propriedade da raiz.
Você sempre pode usar sudo ssh -i ~/.ssh/id_rsa ...
ou usar um agente de autenticação e passar o caminho do soquete para esse agente de autenticação para a raiz:
sudo --preserve-env=SSH_AUTH_SOCK ssh ...
ou
sudo SSH_AUTH_SOCK="$SSH_AUTH_SOCK" ssh ...
Além disso, tem certeza de que precisa executar ssh
como root? É ser capaz de criar túneis ou vincular portas locais em portas TCP abaixo de 1024? Se for apenas para logar como root
no host remoto, fazer ssh root@host
deve ser suficiente.
¹ você pode realmente restaurar o uid real para o original, preservando o uid eficaz de 0:
sudo perl -e '$<=getpwnam($ENV{SUDO_USER}); exec@ARGV' ssh ...