Usando o SSH no comando Linux

1

Eu quero me conectar ao meu ssh com este comando:

ssh host@myhost ls -l /

mas eu quero digitar minha senha no comando acima, isso é possível? por exemplo nosso comando é assim:

ssh host@myhost mypassword ls -l /

    
por studiohack 03.10.2011 / 11:30

5 respostas

3

Para usar o SSH sem senhas, você precisará configurar as chaves para usar em seu sistema e no sistema de destino.

[yoursystem] $ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/youruser/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/youruser/.ssh/id_rsa.
Your public key has been saved in /home/youruser/.ssh/id_rsa.pub.
The key fingerprint is:
f0:7e:55:93:06:b6:c5:6f:68:67:d5:04:7f:2f:ef:df youruser@yoursystem

Em seguida, transfira o arquivo id_rsa.pub para o sistema de destino.

Em seu sistema de destino, adicione a chave pública à lista de chaves autorizadas:

cat id_rsa.pub >> ~/.ssh/authorized_keys

Logout.

Se você deixou a senha em sua chave vazia, agora você pode executar o comando sem precisar ser solicitado por uma senha (suas chaves: chave privada id_rsa no seu sistema e a chave pública id_rsa.pub será responsável por a autenticação).

Se você criou uma frase secreta para sua chave privada (recomendado), será necessário executar o ssh-agent para manter as senhas na memória para você:

[yoursystem] $ eval 'ssh-agent'
Agent pid 1231
[yoursystem] $ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/youruser/.ssh/id_rsa: 
Identity added: /home/youruser/.ssh/id_rsa (/home/youruser/.ssh/id_rsa)

Em seguida, o agente ssh será responsável por fornecer a frase secreta para quando você estiver usando a chave privada (e, mais importante, a chave privada é protegida por uma frase secreta e a frase secreta não é armazenada em um arquivo).

    
por 03.10.2011 / 12:19
3

Tente usar as chaves ssh para autenticação. Veja man ssh-keygen. Essa é uma maneira mais segura.

Uso:

"-o StrictHostKeyChecking=no -o NumberOfPasswordPrompts=0 -o ConnectTimeout=30 -o ServerAliveInterval=15" 

para desativar a interatividade.

    
por 03.10.2011 / 11:40
0

Não, você não pode fazer isso, então que a senha seria visível por qualquer usuário em seu sistema, como o comando com suas arugmetns são visíveis por um ps aux por exemplo.

Se você precisar do host A para ssh para hospedar B sem intervenção humana, use os pubkeys. Coloque a chave pública do host A no host B e vice-versa e eles podem se conectar uns aos outros sem uma senha.

    
por 03.10.2011 / 11:48
0

Você pode fazer isso usando o expect espera - diálogo programado com programas interativos (programa utilitário).
mas você precisa fazer script para isso

#!/usr/bin/expect -f
spawn ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no USERNAME@HOSTNAME
expect "*password*"
send "$PASSWORD\r"
expect eof

Você precisa ter a expectativa instalada em seu sistema.
Obviamente, esse método deixa verificações de segurança (às vezes necessárias, quando há perigo de alterar a identidade do host.)

    
por 08.10.2011 / 22:58
0

Você também pode usar um pouco de software chamado sshpass . Ele expõe sua senha para qualquer pessoa no seu sistema, mas sem chaves, sem expectativa, e relativamente simples de configurar. Você provavelmente deve chegar ao ponto em que tem chaves, mas isso nem sempre é possível.

    
por 22.03.2012 / 23:28