Estou encontrando um problema ao tentar conectar-me a um servidor SFTP que requer autenticação de senha de chave pública e .
O servidor de origem é um servidor CentOS 7 totalmente atualizado (a depuração de SFTP mostra OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
). A intenção é um script simples para pegar uma carga de arquivos.
Ao se conectar sem especificar a ordem de autenticações preferida (ou seja, ao usar o padrão publickey,password
), ele fica preso em um loop de fornecer a chave e nunca solicitar a senha:
sftp -v -i uat.key -oBatchMode=no <username>@<host>
...
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: password,publickey
debug1: Next authentication method: publickey
debug1: Trying private key: uat.key
Authenticated with partial success.
debug1: Authentications that can continue: password,publickey
debug1: Trying private key: uat.key
Authenticated with partial success.
debug1: Authentications that can continue: password,publickey
debug1: Trying private key: uat.key
Authenticated with partial success.
...loops forever
Ao inverter os métodos de autenticação, ele solicita a senha 3 vezes antes de prosseguir (com sucesso!), o que obviamente causa problemas com a automação:
sftp -v -i uat.key -oPreferredAuthentications=password,publickey -oBatchMode=no <username>@<host>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: password,publickey
debug1: Next authentication method: password
<username>@<host>'s password:
Authenticated with partial success.
debug1: Authentications that can continue: password,publickey
Permission denied, please try again.
<username>@<host>'s password:
Authenticated with partial success.
debug1: Authentications that can continue: password,publickey
Permission denied, please try again.
<username>@<host>'s password:
Authenticated with partial success.
debug1: Authentications that can continue: password,publickey
debug1: Next authentication method: publickey
debug1: Trying private key: uat.key
debug1: Authentication succeeded (publickey).
Authenticated to <username>@<host> ([<ip>]:22).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: pledge: network
debug1: Sending environment.
debug1: Sending env LANG = en_GB.UTF-8
debug1: Sending subsystem: sftp
Connected to <username>@<host>.
sftp> exit
Minha escavação me levou a este artigo da IBM de 2012, que abrange o segundo problema, no entanto, não consegui encontrar uma solução alternativa para o meu loop de autenticação parcial no primeiro comando.
Alguém mais experiente com o OpenSSH pode esclarecer esse problema?
Tags sftp public-key