ssh configuration sem ser perguntado por senha

1

O objetivo, aqui, é poder escrever apenas ssh 10.0.200.9.switch -l customer do meu laptop e estar logado sem ser solicitado a senha.

  • O switch está localizado dentro da LAN local, o que significa Laptop --> bastion.example.com --> 10.0.200.9 .
  • O comutador não suporta chaves ssh, apenas senha.
  • Meu laptop e o servidor bastion estão executando o OpenSSH 7.2p2.
  • Estou usando o sshpass 1.05 ao tentar ignorar o prompt de senha. Estou aberto para outras soluções, se existir alguma.

Isso é semi-trabalho:

/home/user/.ssh/config configuration 1

Host bastion
    hostname bastion.example.com
    port 2222
    user root
    identityfile /home/user/.ssh/id_rsa

Match host *.switch user customer
    ProxyCommand ssh bastion -W $(echo %h | grep -Po '^[0-9.]+[0-9]+' ):%p

Trabalhando, mas pede senha

user@laptop:~/.ssh$ ssh 10.0.200.9.switch -l customer
[email protected]'s password: 

Type 'help' or '?' to get help.
Switch# 

Trabalhando e não pede senha, mas tem mais tempo para escrever no console

user@laptop:~/.ssh$ export SSHPASS=secretPassWord
user@laptop:~/.ssh$ sshpass -e ssh 10.0.200.9.switch -l customer

Type 'help' or '?' to get help.
Switch

Isso não está funcionando:

/home/user/.ssh/config configuration 2

Host bastion
    hostname bastion.example.com
    port 2222
    user root
    identityfile /home/user/.ssh/id_rsa

Match host *.switch user customer
    ProxyCommand sshpass -e ssh bastion -W $(echo %h | grep -Po '^[0-9.]+[0-9]+' ):%p

Alterações em .ssh/config file não têm efeito

user@laptop:~/.ssh$ export SSHPASS=secretPassWord
user@laptop:~/.ssh$ ssh 10.0.200.9.switch -l customer
[email protected]'s password: 
    
por Niklas Hagman 08.08.2016 / 14:15

2 respostas

1

Eu acho que na sua configuração o sshpass no ProxyCommand tenta dar a senha para a conexão SSH indo para bastion , não para a que vai finalmente para o switch. Colocar o sshpass fora o ssh ProxyCommand externo parece funcionar:

laptop$ export SSHPASS=sshhhh    
laptop$ sshpass -e ssh -o'Proxycommand ssh customer@bastion -W final.target.switch:22' blah@blah

Como sshpass coloca o cliente SSH em um tty separado para enganá-lo e aceitar a senha de si mesmo, parece que sshpass deve ser executado antes do cliente SSH. Portanto, ter ssh run sshpass de ssh/config provavelmente não funcionará.

Mas deve ser possível fazer um script para executar sshpass e ssh com as opções necessárias. Isso funciona para mim, com a configuração necessária definida em ~/.ssh/config , como você tinha:

#/bin/bash
if [ -z "$1" ] ; then echo "usage: $0 <args...>" ; exit 1 ; fi
sshpass -e ssh "$@"

Você também pode definir o usuário para efetuar login em .ssh/config , por isso pode ser capaz de fazer sem -l . Além disso, parece que sshpass não lida bem com ssh perguntando sobre chaves de host desconhecidas, portanto, pode ser necessário configurar known_hosts (ou usar StrictHostKeyChecking no ).

    
por 08.08.2016 / 14:40
0

Outra maneira seria usar o plink nas ferramentas de massa. veja: link Além do fato de que você pode fazer um "plink -pw ..." você pode usar a opção "-m" para scripts remotos.

    
por 08.08.2016 / 14:38