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á solicitando a senha. Alguém por favor pode me ajudar a resolver isso
Respostas:
Certa vez, escrevi um
expect
script para efetuar login em um servidor ssh (como o seu caso) e meu script era algo como isto:Acho que talvez
interact
esteja faltando no seu script.fonte
cd
els
e ler o conteúdo do arquivo também. É possível fazer depois de interagir? Por favor respondals
comando após o login. Por exemplo, após o envio da senha, faça umexpect
com o texto do prompt de comando (para garantir que você esteja logado) e, em seguidasend "ls\r"
. Tudo isso acontece antesinteract
.file_list
após a saída para o acesso do comando local imediatoVocê está fazendo o caminho errado. O que você deseja fazer é gerar um par de chaves ssh sem senha e, desde que o servidor suporte a autenticação de chave RSA, você poderá entrar sem precisar digitar uma senha para todos. Esse é um risco de segurança se sua chave privada for armazenada em algum lugar em que possa ser roubada.
Siga esses passos:
mkdir -p ~/.ssh
cd ~/.ssh
ssh-keygen -type dsa -i mysshkeys
Agora haverá dois arquivos no seu
~/.ssh
diretório,mysshkey.pub
emysshkey
.mysshkey.pub
é sua chave pública, essa é 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 fazer o SSH:
mkdir -p ~/.ssh
mysshkey.pub
em~/.ssh/authorized_keys
~/.ssh/authorized_keys
échmod
'd para600
Agora, para colocá-lo em ação na sua máquina local, execute o seguinte comando:
E você estará logado sem ser solicitada uma senha.
Esse é um método muito preferível de gerenciar logins automatizados, pois você não codifica sua senha em vários locais que precisam ser atualizados se você a alterar.
fonte
Nas distribuições baseadas no Debian, o
sshpass
pacote 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:Em seguida, chame o comando SSH a partir de um script como este:
Isso fornece mais flexibilidade, como se você estiver usando um código de idioma diferente ou precise alterar a senha, do que as soluções usando
expect
.fonte
Primeiro instale o sshPass
sudo apt-get install sshpass
Em seguida, crie um alias no arquivo .bashrc como
Agora recarregue seu arquivo .bashrc alterado
source ~/.bashrc
Você está pronto agora.
Agora você pode executar o ssh usando o alias criado acima
sshLogin
no terminal.fonte
você pode usar isso:
fonte
Tudo o que você precisa para criar uma chave de hash e salvá-la no seu PC
Apenas digite
então entre
faça o login normalmente usando
Agora você não precisa de uma senha
fonte
ssh-copy-id
comando incrivelmente útil , que ninguém mais mencionou. Estou votando por isso.Login sem senha do SSH usando o SSH Keygen em 5 etapas fáceis :
Configuração do ambiente:![insira a descrição da imagem aqui](https://i.stack.imgur.com/94if6.jpg)
Etapa 1: Chaves SSH-Kegen de autenticação ativadas - (192.168.0.12)
Primeiro efetue login no servidor 192.168.0.12 com um usuário e gere um par de chaves públicas usando o seguinte comando.
Etapa 2: Criar diretório .ssh em - 192.168.0.11
Use o SSH do servidor 192.168.0.12 para conectar o servidor 192.168.0.11 para criar o diretório .ssh nele, usando o seguinte comando.
Etapa 3: Carregar chaves públicas geradas para - 192.168.0.11
Use SSH do servidor 192.168.0.12 e faça upload da nova chave pública gerada (id_rsa.pub) no servidor 192.168.0.11 no
.ssh
diretório do usuário como um nome de arquivo autorizado_chave.Etapa 4: Definir permissões em - 192.168.0.11
Devido às diferentes versões do SSH nos servidores, precisamos definir permissões no
.ssh
diretório e noauthorized_keys
arquivo.Etapa 5: Efetue login de 192.168.0.12 a 192.168.0.11 Servidor sem senha
A partir de agora, podemos fazer login em 192.168.0.11 como usuário sheena do servidor 192.168.0.12 como usuário tecmint sem senha.
fonte
chmod 700 id_rsa
no diretório .ssh no servidor local (cliente, ou seja, 192.168.0.12 no seu exemplo): resolvido o problemaComo já descrito em outras respostas, eu também uso,
sshpass
mas eu o combino com oread
comando para armazenar minha senha em uma variável de ambiente temporária. Dessa forma, minha senha nunca é escrita em nenhum lugar de forma clara. Aqui está o comando de uma linha que eu uso:Depois disso, é necessário digitar sua senha (nada aparece na tela) e pressionar Enter para abrir a conexão.
fonte
Eu fiz isso recentemente, isso pode ajudá-lo:
se isso não funcionar, você precisará gerar chaves na outra máquina com a qual deseja se conectar
ele gerará chaves privadas e públicas e solicitará um local; deixe em branco; ele salvará as chaves na pasta .ssh; por padrão, solicitará a senha; você também pode deixá-lo vazio na pasta .ssh e altere o nome da chave pública para 'allowed_keys'
isso adicionará o usuário à lista agora vá para o diretório inicial e dê permissão e reinicie os serviços sshd
agora você terá que mover a chave privada para o sistema naquele local de onde você executará o comando ssh, para conectar-se a
se mesmo isso não funcionar, entre no / etc / ssh open sshd_config com o editor vim, verifique se o pubkeyAuthenticatoin está sim ou não, se não o alterar, se não mudar para sim, reinicie os serviços sshd e tente, definitivamente funcionará .
fonte
O primeiro argumento é o nome do host e o segundo é a senha.
Execução: ./script.expect
fonte