Eu tenho um script zsh com o qual fiz login em um host remoto para copiar algumas pastas. O sistema sempre me pede para fornecer a senha do host local que desejo ignorar, caso contrário, terei que inserir a senha várias vezes.
Segui o seguinte tutorial: https://www.thegeekstuff.com/2008/06/perform-ssh-and-scp-without-entering-password-on-openssh/
Funcionou uma vez, mas depois não funcionou. Segui os seguintes passos (e os segui várias vezes novamente), mas agora não funciona mais.
[local-host]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jsmith/.ssh/id_rsa):<Hit enter>
Enter passphrase (empty for no passphrase): <Enter your passphrase here>
Enter same passphrase again:<Enter your passphrase again>
Your identification has been saved in /home/jsmith/.ssh/id_rsa.
Your public key has been saved in /home/jsmith/.ssh/id_rsa.pub.
The key fingerprint is:
31:3a:5d:dc:bc:81:81:71:be:31:2b:11:b8:e8:39:a0 jsmith@local-host
Em seguida, copiei o conteúdo da chave pública do host local e colei /home/jsmith/.ssh/authorized_keys
no host remoto e executei:
[remote-host]$ chmod 755 ~/.ssh
[remote-host]$ chmod 644 ~/.ssh/authorized_keys
Mas então, se eu tentasse logar novamente,
[local-host]$ ssh jsmith remote-host
Mas em vez de ter a seguinte mensagem:
Enter passphrase for key '/home/jsmith/.ssh/id_rsa': <Enter your passphrase here>
Last login: Sat Jun 07 2008 23:03:04 -0700 from 192.168.1.102
No mail.
Eu entendi isso:
jsmith remote-host's password:
O que estou fazendo de errado?
EDITAR
Muito obrigado pela resposta e pelos comentários que tentarei abordar ponto por ponto:
- em relação ao
-l
, eu realmente não usei, mas em vez disso useissh jsmith@remote-host
- Eu executo o seguinte com a seguinte saída
[local-host]$ eval $(ssh-agent -s)
Agent pid 96546
[local-host]$ env | grep SSH
SSH_AUTH_SOCK=/var/folders/jq/yyp9q2fs1z5780k9l1_2ph4r0000gn/T//ssh-9ew9mjQCJWFK/agent.96545
SSH_AGENT_PID=96546
EDITAR 2
Então eu tentei o seguinte
[local-host]$ ssh-add .ssh/id_rsa
Enter passphrase for .ssh/id_rsa:
Bad passphrase, try again for .ssh/id_rsa:
EDITAR3
Ok, então toda a árvore de permissões na máquina remota e na máquina local é a seguinte:
/var/services/homes/user01/.ssh/
as permissões de cada branch são as seguintes (com ls -ld <directory>
e ls -la <file>
comando (de baixo para cima):
Para a máquina remota:
drwxr-xr-x 1 user01 users 0 Oct 3 16:44 .ssh
drwxrwxrwx+ 1 user01 users 90 Oct
lrwxrwxrwx 1 root root 14 Oct 4 09:07 homes -> /volume1/homes
drwxr-xr-x 2 root root 4096 Oct 4 09:07 services
drwxr-xr-x 15 root root 4096 Oct 4 09:07 var
Para a máquina local:
drwx------ 7 user02 staff 224B Oct 4 09:27 .ssh/
drwxr-xr-x+ 152 user02 staff 4.8K Oct 4 09:27 user02/
drwxr-xr-x 6 root admin 192B Jan 1 2020 /Users/
Você tem uma ideia do que devo fazer a seguir?
Muito obrigado antecipadamente
Você precisa executar o agente ssh local. E no "Tentei logar novamente" você esqueceu o
-l
(ou, alternativamente,jsmith@remote-host
).Há uma boa chance de você ter iniciado o agente e feito o
ssh-add
papel também, mas em uma sessão diferente. O que eu faço é invocareval $(ssh-agent -s)
a partir da inicialização do meu gerenciador de janelas, dessa forma qualquer shell saberá sobre o agente ...