
Estou logado em um servidor Linux (Debian stretch) como root. Quando executo o cliente ssh como root, parece que o cliente ssh insiste em usar /root/.ssh/
como local de todos os arquivos de configuração e chave do ssh, em vez de ~/.ssh
:
$ id
uid=0(root) gid=0(root) groups=0(root)
$ export HOME=/srv/scratch/user
$ cd ~/.ssh
$ pwd
/srv/scratch/user/.ssh
$ ssh -vvv [email protected]
OpenSSH_7.4p1 Debian-10+deb9u7, OpenSSL 1.0.2t 10 Sep 2019
debug1: Reading configuration data /root/.ssh/config
debug1: /root/.ssh/config line 3: Applying options for example.com
debug1: Reading configuration data /etc/ssh/ssh_config
... more lines that never mention /srv/scratch/user/.ssh ...
Por que o cliente ssh não está usando o .ssh
diretório /srv/scratch/user
?
Responder1
export HOME=/srv/scratch/user
ssh
não usa a HOME
variável de ambiente para localizar o diretório inicial do usuário. Ele chamagetpwuid()
e usa o diretório inicial retornado dele. getpwuid()
retorna as informações do usuário de /etc/passwd
ou onde quer que seu sistema específico armazene informações do usuário.
Você pode fazer com que o ssh leia um arquivo de configuração diferente usando o-F
opção:
-Fconfigfile
Especifica um arquivo de configuração alternativo por usuário. Se um arquivo de configuração for fornecido na linha de comando, o arquivo de configuração de todo o sistema (/etc/ssh/ssh_config) será ignorado. O padrão para o arquivo de configuração por usuário é ~/.ssh/config.
Você pode especificar chaves ssh usando-i
:
-euIdentity_file
Seleciona um arquivo do qual a identidade (chave privada) para autenticação de chave pública é lida. O padrão é ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 e ~/.ssh/id_rsa. Os arquivos de identidade também podem ser especificados por host no arquivo de configuração. É possível ter múltiplas opções -i (e múltiplas identidades especificadas nos arquivos de configuração). Se nenhum certificado tiver sido especificado explicitamente pela diretiva CertificateFile, o ssh também tentará carregar as informações do certificado do nome do arquivo obtido anexando -cert.pub aos nomes dos arquivos de identidade.
Observe que se você executar um comando usando "~" para especificar um nome de arquivo, como este:
ssh -F ~/some/config/file ...
então o "~" será interpretado pelo seu shell, não pelo ssh.