Como usar o sshpass para login ssh não interativo

Como usar o sshpass para login ssh não interativo
O usuário do Linux pode usar autenticação baseada em senha ou sem senha para fazer login no servidor remoto usando SSH. A autenticação sem senha é mais segura, mas a maneira mais fácil e popular de autenticação é a autenticação baseada em senha. O usuário precisa fornecer a senha sempre que necessário para autenticar e o SSH também exige para acessar um script de shell manualmente.

O sshpass O utilitário é usado para implementar autenticação automatizada baseada em senha. Ele executa o SSH em TTY dedicado (TeleTyPewriter) para confirmar que a senha é fornecida por um usuário interativo do teclado para autenticação não interativa. Como sshpass pode ser usado para autenticação mostrou neste tutorial.

Pré -requisitos

Antes de iniciar as etapas deste tutorial, as etapas a seguir serão necessárias para concluir.

Ative o serviço SSH no Ubuntu se não estiver ativado antes.

Gere os pares de chaves ssh para executar os comandos no servidor remoto. Execute o seguinte comando para criar a chave pública e a chave privada. A chave privada será armazenada no servidor remoto e as chaves públicas serão armazenadas no cliente com segurança.

$ ssh -keygen -t rsa

Execute o seguinte comando para abrir o sshd_config Arquivo usando o Nano Editor para adicionar algumas configurações necessárias.

$ sudo nano/etc/ssh/sshd_config

Adicione as seguintes linhas no arquivo para ativar o login root e a autenticação baseada em senha.

PasswordAuthentication Sim
Permitrootlogina sim

Execute o seguinte comando para reiniciar o serviço SSH.

$ sudo serviço ssh reinicialização

Sintaxe

A sintaxe deste comando é dada abaixo. Ele suporta diferentes opções que foram descritas mais tarde.

$ sshpass [-f filename | -d número | -p senha | -e] [options] Argumentos de comando

Diferentes opções do comando sshpass

O propósito de diferente sshpass As opções foram descritas aqui. sshpass lê a senha da entrada padrão se nenhuma opção for fornecida.

Opção Propósito
-Senha P É usado para fornecer a senha na linha de comando.
-f nome do arquivo É usado para dar a fonte alternativa da senha.
-D Número É usado para fornecer o descritor de arquivo herdado por Sshpass.
-e É usado para retirar a senha da variável de ambiente "sshpass".

Instale o sshpass

Sshpass não está instalado no Ubuntu por padrão. Execute o seguinte comando para instalar o sshpass no Ubuntu.

$ sudo apt-get install sshpass

A saída a seguir aparecerá se o sshpass for instalado corretamente.

Conecte -se com o servidor fornecendo uma senha

A maneira de se conectar com a máquina remota usando o SSHPass com -p é mostrada nesta parte do tutorial. Aqui, o nome de usuário é 'fahmida' e a senha é '12345' da máquina sever. O endereço IP da máquina do servidor é 10.0.2.15. O nome de usuário da máquina cliente é 'simmin'. Execute o seguinte comando para se conectar com o servidor, fornecendo a senha.

$ sshpass -p '12345' ssh [email protected]

A saída a seguir aparecerá se a conexão for estabelecida corretamente com a máquina do servidor. A saída mostra que o nome de usuário é alterado para 'Fahmida' de 'Yesmin' no prompt de comando depois de estabelecer a conexão. Agora, se o usuário executar algum comando, ele será executado na máquina do servidor.

Conecte -se com o servidor sem fornecer uma senha

Não é seguro fornecer a senha na linha de comando. Este problema pode ser resolvido de duas maneiras. Uma maneira é salvar a senha na variável de ambiente usando o exportar comando e outra maneira é salvar a senha em um arquivo.

Execute o seguinte comando para salvar a senha na variável de ambiente SSHPASS usando o comando de exportação.

$ export sshpass = "12345"

Agora, você pode executar o comando sshpass com a opção -e para fazer a conexão com a máquina do servidor sem fornecer uma senha na linha de comando. Execute o seguinte comando para se conectar com o servidor sem dar a senha.

$ sshpass -e ssh [email protected]

A saída a seguir aparecerá se a conexão for estabelecida corretamente com a máquina do servidor. A saída mostra que o nome de usuário é alterado para 'Fahmida' de 'Yesmin' no prompt de comando depois de estabelecer a conexão como o comando anterior.

A maneira de se conectar com o servidor usando sshpass salvando a senha em um arquivo foi mostrado nesta parte do tutorial. Execute o seguinte comando para criar o sshfile Arquive e armazene a senha para se conectar com a máquina do servidor.

$ echo '12345'> sshfile

Execute o seguinte comando para definir os bits de permissão para o sshfile arquivo que tornará o arquivo seguro.

$ chmod 0400 sshfile

Agora, execute o seguinte comando para se conectar com o servidor sem fornecer a senha na linha de comando. Aqui, a opção -f foi usada com sshpass comando para ler a senha do arquivo.

$ sshpass -f sshfile ssh [email protected]

A saída a seguir aparecerá se a conexão for estabelecida corretamente com a máquina do servidor. A saída mostra que o nome de usuário é alterado para 'Fahmida' de 'Yesmin' no prompt de comando depois de estabelecer a conexão como o comando anterior.

Usando o comando sshpass no script

O comando sshpass é usado para fazer a conexão com o servidor do terminal na parte anterior deste tutorial. Mas você pode executar qualquer comando na máquina do servidor sem fazer login no servidor escrevendo um script de bash com comando sshpass. Crie um arquivo bash chamado ssh.sh na máquina cliente com o seguinte conteúdo. O script executará o 'PWD' comando na máquina do servidor e armazene a saída em uma variável. O valor da variável será impresso posteriormente.

ssh.sh
#!/BIN/BASH
valor = $ (sshpass -f sshfile ssh [email protected] 'PWD')
eco $ valor

Execute o seguinte comando do terminal.

$ Bash SSH.sh

A saída a seguir aparecerá se o PWD O comando é executado corretamente na máquina do servidor. O nome de usuário da máquina do servidor é 'Fahmida'. Portanto, a saída mostra que '/home/fahmida/' é a saída do PWD comando.

Conclusão

Os usos do comando sshpass para login não interativo foram mostrados neste tutorial por duas contas de usuário diferentes da localhost. Você pode realizar a mesma tarefa para o host remoto seguindo as etapas mostradas neste tutorial.