Shell Script para efetuar login em um servidor ssh

25

Eu tentei escrever um script de shell que pode fazer login automático em um servidor ssh usando a senha mencionada no script. Eu escrevi o seguinte código:

set timeout 30
/usr/bin/ssh -p 8484 [email protected]
expect 
{
   "[email protected]'s password" 
   {
      send "password\r" 
   }
}

Este código não está funcionando corretamente, ainda está pedindo a senha. Alguém pode me ajudar a resolver isso?

    
por pradeepchhetri 07.02.2012 / 07:17

9 respostas

31

Uma vez eu escrevi um script expect para fazer login em um servidor ssh (como seu caso) e meu script era algo assim:

#!/usr/bin/expect

spawn ssh [email protected]
expect "password"
send "MyPassword\r"
interact

Acho que talvez o interact esteja faltando no seu script.

    
por 07.02.2012 / 10:43
29

Você está indo pelo caminho errado. O que você quer fazer é gerar um par de chaves ssh-passwordless e depois (desde que o servidor suporta a autenticação de chave RSA) pode entrar em sem ter que digitar uma senha para todos. Este é um risco de segurança se sua chave privada for armazenada em algum lugar que possa ser roubada.

Siga estas etapas:

  1. mkdir -p ~/.ssh
  2. cd ~/.ssh
  3. ssh-keygen -type dsa -i mysshkeys
  4. Pressione Retornar quando for solicitada uma frase secreta
  5. Pressione Retornar pela segunda vez para confirmar.

Há agora serão dois arquivos em seu diretório ~/.ssh , mysshkey.pub e mysshkey . mysshkey.pub é sua chave pública, esta é segura para colocar em servidores remotos. mysshkey é a chave sem senha privada, é não seguro para colocar em servidores remotos (ou em algum lugar alguém poderia obter uma cópia).

No servidor em que você deseja usar o SSH:

  1. Login no servidor remoto
  2. mkdir -p ~/.ssh
  3. Copie e cole o conteúdo de mysshkey.pub em ~/.ssh/authorized_keys
  4. Verifique se ~/.ssh/authorized_keys é chmod 'd para 600

Agora, para colocá-lo em ação na sua máquina local, execute o seguinte comando:

ssh -i ~/.ssh/mysshkey <remote_server_ip>

E você estará logado sem ser solicitado por uma senha.

Este é um método muito preferível de gerenciar logins automatizados que você não acabam por embutir sua senha vários lugares que precisam ser atualizados, se você nunca mudá-lo.

    
por 07.02.2012 / 08:38
15

Em distribuições baseadas no Debian, o pacote sshpass fornece uma maneira mais fácil de fazer o que você deseja. O pacote está disponível para muitas outras distribuições populares. Você precisa configurá-lo primeiro:

echo 'YourPassword' > passwordFile.txt
chmod 600 passwordFile.txt

Em seguida, invoque o comando SSH em um script como este:

sshpass -f /path/to/passwordFile.txt /usr/bin/ssh -p 8484 [email protected]

Isso oferece mais flexibilidade, como se você estivesse usando uma localidade diferente ou precisasse alterar a senha, do que soluções usando expect .

    
por 28.12.2012 / 03:02
5

Primeiro instale o sshPass sudo apt-get install sshpass

Em seguida, crie um alias no arquivo .bashrc como

alias sshLogin='sshpass -p <your ssh password> ssh username@remote_host'

Agora recarregue seu arquivo .bashrc alterado por source ~/.bashrc

Você está pronto agora.

Agora você pode executar o ssh usando o alias sshLogin no terminal criado acima.

    
por 28.11.2016 / 09:42
4

você pode usar isto:

sshpass -p 'yourpassword'  ssh user@ip
    
por 23.11.2016 / 13:08
1

Login SSH sem senha usando o SSH Keygen em 5 etapas fáceis :

Configuração do ambiente:

Etapa1:ChavesSSH-Kegendeautenticaçãoativadas-(192.168.0.12)
Primeiroentrenoservidor192.168.0.12comumusuárioegereumpardechavespúblicasusandooseguintecomando.

Etapa2:Crieodiretório.sshem-192.168.0.11
UseoSSHdoservidor192.168.0.12paraconectaroservidor192.168.0.11paracriarodiretório.ssh,usandooseguintecomando.

Etapa3:EnvieChavesPúblicasGeradaspara-192.168.0.11
UseoSSHdoservidor192.168.0.12ecarregueanovachavepúblicagerada(id_rsa.pub)noservidor192.168.0.11nodiretório.sshdousuáriocomoumnomedearquivoauthorized_keys.

Etapa4:Definirpermissõesem-192.168.0.11
DevidoadiferentesversõesdeSSHnosservidores,precisamosdefinirpermissõesnodiretório.sshenoarquivoauthorized_keys.

Etapa5:Entrede192.168.0.12até192.168.0.11Servidorsemsenha
Apartirdeagorapodemoslogarem192.168.0.11comousuáriosheenadoservidor192.168.0.12comousuáriotecmintsemsenha.

    
por 15.09.2017 / 02:47
1

Como já foi descrito em outras respostas, também uso sshpass , mas o combino com o comando read para armazenar minha senha em uma variável de ambiente temporária. Dessa forma, minha senha nunca é escrita em lugar algum em claro. Aqui está o comando de uma linha que eu uso:

read -s PASS; sshpass -p $PASS ssh <user>@<host adress>

Depois disso, você tem que digitar sua senha (nada aparece na tela) e, em seguida, pressionar Enter abrirá a conexão.

    
por 31.05.2018 / 21:48
1

Tudo o que você precisa para criar uma chave com hash e salvá-la no seu PC

Basta digitar

ssh-keygen -t rsa -b 4096 # just press Enter till the end

digite

ssh-copy-id <user>@<server>

faça login normalmente usando

ssh <user>@<server>

Agora você não precisa de uma senha

Note: Saving your password in a plain text is dangerous

This method is creating a hashed value of your password using RSA with public key of length 4096 which is very secure.

    
por 17.06.2018 / 00:24
0

Eu fiz isso recentemente, isso pode ajudar você:

sshpass -p 'password' username@ipaddress

se isso não funcionar, você terá que gerar chaves na outra máquina com a qual deseja se conectar

ssh-keygen

ele irá gerar chaves privadas e públicas e pedir-lhe um local, deixe em vazio ele salvará as chaves na pasta .ssh por padrão ele te pedirá a senha, você também pode deixá-la vazia vá na pasta .ssh e mude o nome da chave pública para 'authorized_keys'

cd .ssh/
mv id_rsa.pub authorized_keys
useradd -d /home/username username

isso adicionará o usuário à lista agora vá para o diretório home e dê permissão e reinicie os serviços do sshd

chmod 700 /home/username/.ssh
chmod 644 /home/username/.ssh/authorized_keys
chown root:root /home/dozee
sudo service sshd restart

agora você terá que mover a chave privada para o sistema naquele local de onde você está indo para executar o comando ssh, então você pode se conectar com

sshpass -p 'password' ssh -i id_rsa username@ip

se mesmo isso não funcionar, vá em / etc / ssh abra sshd_config com o editor vim verifique se o pubkeyAuthenticatoin está ativado para sim ou não, se não alterá-lo para sim, reinicie os serviços do sshd e tente, definitivamente funcionará.

    
por 30.05.2018 / 20:37