comando SSH sem solicitar a mensagem para salvar ou cancelar opções de chave ssh

1

Precisa do comando ssh para conectar outra caixa linux de uma caixa linux e buscar uma saída de um determinado comando, mas a conexão deve ser estabelecida forçosamente sem solicitar nenhuma tecla ssh para salvar, cancelar.

Até agora tentei o comando para conectar e buscar a saída, mas recebendo o prompt para salvar a chave ssh pública

value=$(ssh -q -P $passwd $userid@$box "head -1 /users/SB1.txt")
    
por user8554534 23.10.2017 / 23:46

3 respostas

2

Você está tentando desativar a "Verificação de chave do host" e precisa das seguintes opções de SSH:

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

Se adicioná-los ao comando (ao invés do seu arquivo de configuração ssh) então use

-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

após o -q no seu comando de exemplo.

    
por 23.10.2017 / 23:56
2

Prepare (uma vez em seu usuário e caixa do cliente SSH): Crie um par de chaves para autenticação de chave pública

ssh-keygen -N '' -t rsa -f ~/.ssh/id_rsa

Prepare (manualmente / de forma interativa, uma vez por usuário / servidor): configure a autenticação de chave pública e aceite a chave de host sem perguntar (isso pedirá a senha de $userid uma vez):

ssh-copy-id -o "StrictHostKeyChecking = no" $userid@$box

Em seguida, execute seu comando remoto sem qualquer interação:

value=$(ssh -o 'BatchMode = yes' $userid@$box "head -1 /users/SB1.txt")

Seu cliente SSH já conhece a chave de host SSH do servidor, pois ela foi adicionada quando você executou o ssh-copy-id .

    
por 24.10.2017 / 00:42
-1

Você deve definitivamente não mexer com as teclas do host, isso é uma má idéia.

O que você deve fazer é utilizar ssh-keygen (1) (veja 'man ssh-keygen') e criar uma chave pública e privada. Como você não quer um prompt de senha, simplesmente não forneça uma senha. Você encontrará os resultados no diretório .ssh do seu diretório pessoal (~ / .ssh).

Em seguida: adicione o conteúdo de ~ / .ssh / id_rsa.pub ao arquivo ~ / .ssh / authorized_keys no servidor remoto (você provavelmente precisará fazer isso sozinho).

Finalmente: diga ao SSH (sshd) que os usuários podem autorizar com chaves remotas. Esta poderia ser uma configuração padrão, mas eu não tenho certeza sobre cada distribuição Linux lá fora. Procure a opção PubkeyAuthentication e verifique se ela está ativada.

Então, o que vai acontecer aqui: você ainda estará se autorizando com uma autenticação bastante strong (sua chave externa, mantida em ~ / .ssh / id_rsa), mas porque você não forneceu uma senha, nenhuma será solicitada e tornará o procedimento de login "instantâneo".

No entanto, sem sacrificar nenhuma segurança (originada apenas da sua máquina, porque todos que usam essa conta específica podem efetuar logon no servidor remoto, mas isso deve ser óbvio).

Mas mais uma vez: mexer com StrictHostKeyChecking é uma idéia ruim e totalmente desnecessária.

    
por 24.10.2017 / 00:44