A atualização do OpenSSH quebra scp

1

Recentemente, atualizei um servidor (executando o RHEL AS 5) do servidor OpenSSH 4 para o servidor OpenSSH 5.2.

Desde a atualização, um cliente não consegue mais escutar arquivos da máquina. Eles usam um cliente ssh do link . Eu posso scp arquivos de e para a máquina usando o openssh sem problemas.

Usamos "Autenticação de chave pública" e eles ainda são capazes de ssh para a máquina, mas não para arquivos scp.

Existe alguma causa óbvia conhecida para tais incompatibilidades? Se não, como posso me aprofundar nesse assunto?

Aqui está um registro do lado do cliente:

user@srv/home/user> /usr/local/bin/scp -v [email protected]:/home/cdr/test .
scp:SshAppCommon/sshappcommon.c:133: Allocating global SshRegex context.
scp:Scp2/scp2.c:499: Received error "SSH_FC_OK"., msg: Globbing successful.
scp:Scp2/scp2.c:564: Starting transfer...
scp:/home/cdr/test
scp:SshFCTransfer/sshfc_transfer.c:3018: File list has 2 files.
scp:SshFCTransfer/sshfc_transfer.c:2567: Not yet connected, or connection down, waiting...
scp:SshFileCopy/sshfilecopy.c:940: Connecting to remote host. (host = xxx.xxx.xxx.51, user = cdr, port = NULL)
scp:Scp2/scp2.c:1679: argv[0] = /usr/local/bin/ssh2
scp:Scp2/scp2.c:1679: argv[1] = -l
scp:Scp2/scp2.c:1679: argv[2] = cdr
scp:Scp2/scp2.c:1679: argv[3] = -v
scp:Scp2/scp2.c:1679: argv[4] = -x
scp:Scp2/scp2.c:1679: argv[5] = -a
scp:Scp2/scp2.c:1679: argv[6] = -o
scp:Scp2/scp2.c:1679: argv[7] = clearallforwardings yes
scp:Scp2/scp2.c:1679: argv[8] = -o
scp:Scp2/scp2.c:1679: argv[9] = passwordprompt %U@%H's password: 
scp:Scp2/scp2.c:1679: argv[10] = -o
scp:Scp2/scp2.c:1679: argv[11] = nodelay yes
scp:Scp2/scp2.c:1679: argv[12] = -o
scp:Scp2/scp2.c:1679: argv[13] = authenticationnotify yes
scp:Scp2/scp2.c:1679: argv[14] = xxx.xxx.xxx.51
scp:Scp2/scp2.c:1679: argv[15] = -s
scp:Scp2/scp2.c:1679: argv[16] = sftp
debug: Connecting to xxx.xxx.xxx.51, port 22... (SOCKS not used)
debug: Ssh2/ssh2.c:2121: Entering event loop.
debug: Ssh2Client/sshclient.c:1403: Creating transport protocol.
debug: SshAuthMethodClient/sshauthmethodc.c:83: Added "publickey" to usable methods.
debug: SshAuthMethodClient/sshauthmethodc.c:83: Added "password" to usable methods.
debug: Ssh2Client/sshclient.c:1444: Creating userauth protocol.
debug: client supports 2 auth methods: 'publickey,password'
debug: Ssh2Common/sshcommon.c:559: local ip = xxx.xxx.xxx.35, local port = 56985
debug: Ssh2Common/sshcommon.c:561: remote ip = xxx.xxx.xxx.51, remote port = 22
debug: SshConnection/sshconn.c:1930: Wrapping...
debug: Ssh2/ssh2.c:899: Opening /dev/tty for queries.
debug: Remote version: SSH-2.0-OpenSSH_5.2
debug: Ssh2Transport/trcommon.c:1306: Remote version has rekey incompatibility bug.
debug: Ssh2Transport/trcommon.c:1308: Remote version is OpenSSH, KEX guesses disabled.
debug: Ssh2Transport/trcommon.c:1647: lang s to c: '', lang c to s: ''
debug: Ssh2Transport/trcommon.c:1712: c_to_s: cipher aes128-cbc, mac hmac-sha1, compression none
debug: Ssh2Transport/trcommon.c:1715: s_to_c: cipher aes128-cbc, mac hmac-sha1, compression none
debug: Remote host key found from database.
debug: Ssh2Common/sshcommon.c:317: Received SSH_CROSS_STARTUP packet from connection protocol.
debug: Ssh2Common/sshcommon.c:367: Received SSH_CROSS_ALGORITHMS packet from connection protocol.
debug: server offers auth methods 'publickey,password,keyboard-interactive'.
debug: Ssh2AuthPubKeyClient/authc-pubkey.c:1535: adding keyfile "/devapp_users/nsdtest/.ssh2/nsdau187" to candidates
debug: Ssh2AuthPubKeyClient/authc-pubkey.c:1535: adding keyfile "/devapp_users/nsdtest/.ssh2/id_dsa_1024_a" to candidates
debug: Ssh2AuthPubKeyClient/authc-pubkey.c:1535: adding keyfile "/devapp_users/nsdtest/.ssh2/id_dsa_1024_b" to candidates
debug: Constructing and sending signature in publickey authentication.
debug: Ssh2AuthPubKeyClient/authc-pubkey.c:772: ssh_client_auth_pubkey_send_signature: reading /devapp_users/nsdtest/.ssh2/nsdau187
debug: Ssh2AuthPubKeyClient/authc-pubkey.c:1751: Public key authentication was successful.
debug: Ssh2Common/sshcommon.c:285: Received SSH_CROSS_AUTHENTICATED packet from connection protocol.
debug: Ssh2/ssh2.c:650: Returning user input stream to original values.
debug: Ssh2Common/sshcommon.c:829: num_channels now 1
scp:SshFCTransfer/sshfc_transfer.c:130: Source file is "raw", and it needs to be parsed.
debug: SshTtyFlags/sshttyflags.c:354: Not a tty. (fd = 0)
scp:SshFCTransfer/sshfc_transfer.c:1319: No connection yet. Waiting...
scp:SshFileXferClient/sshfilexferc.c:981: ssh_file_client_receive_proc: bad VERSION
scp:SshFCTransfer/sshfc_transfer.c:1319: No connection yet. Waiting...
scp:SshFCTransfer/sshfc_transfer.c:1319: No connection yet. Waiting...
scp:SshFCTransfer/sshfc_transfer.c:1319: No connection yet. Waiting...
scp:SshFCTransfer/sshfc_transfer.c:1319: No connection yet. Waiting...
scp:SshFCTransfer/sshfc_transfer.c:1319: No connection yet. Waiting...
[...] same until the user presses Ctrl+C

user@srv/home/user> debug: SshConnection/sshconn.c:405: EOF from channel stream
debug: Ssh2ChannelSession/sshchsession.c:1721: received exit status : 0
debug: Ssh2Common/sshcommon.c:803: num_channels now 0
debug: Got session close with exit_status=0
debug: destroying client struct...
debug: Ssh2Client/sshclient.c:1478: Destroying client.
debug: SshConfig/sshconfig.c:555: Freeing pki. (host_pki != NULL, user_pki = NULL)
debug: SshConnection/sshconn.c:1982: Destroying SshConn object.
debug: Ssh2Client/sshclient.c:1540: Destroying client completed.
debug: SshAuthMethodClient/sshauthmethodc.c:88: Destroying authentication method array.
debug: SshAppCommon/sshappcommon.c:146: Freeing global SshRegex context.
debug: SshConfig/sshconfig.c:555: Freeing pki. (host_pki = NULL, user_pki = NULL)

E aqui estão as entradas do log do servidor

Jun 3 07:22:36 localhost sshd[19898]: Accepted publickey for cdr from xxx.xxx.xx.x port 53119 ssh2
Jun 3 07:22:36 localhost sshd[19900]: subsystem request for sftp
Jun 3 07:22:58 localhost snmpd[8500]: netsnmp_assert index == tmp failed if-mib/data_access/interface.c:467 _access_interface_entry_save_name()
Jun 3 07:23:58 localhost last message repeated 4 times

Editar: "Subsistema sftp interno-sftp" já está habilitado no arquivo conf, e eu posso enviar arquivos do servidor sem problemas.

Editar: Tentar sem as chaves especificando um nome de usuário / senha também não funciona. Revertendo para a versão mais antiga funciona, e é isso que estamos fazendo agora.

Por acaso, suspeitamos dessa linha

debug: SshTtyFlags/sshttyflags.c:354: Not a tty. (fd = 0)

pode significar que o shell está enviando algo que está aparecendo no console do ssh mas atrapalhando o scp, mas nada parece ser enviado no ssh (e o .bashrc parece limpo) e não consigo visualizar o tráfego scp decriptografado para ver se algo está sendo enviado erroneamente.

    
por Pat 03.06.2009 / 17:26

5 respostas

1

O que "incapaz de arquivos scp" significa mais? Qual é a mensagem de erro que eles recebem?

Verifique seus logs (/ var / log / syslog, / var / log / messages, /var/log/daemon.log) para ver se o servidor SSH está lançando algum erro. Eles devem ser bem descritivos. Com os logs e o erro do cliente, poderemos diminuir o problema.

Editar

Os registros que você postou indicam o problema mais provável:

scp:Scp2/scp2.c:1679: argv[16] = sftp
...
scp:SshFileXferClient/sshfilexferc.c:981: ssh_file_client_receive_proc: bad VERSION

Parece que essa coisa está tentando usar o protocolo sftp em vez de scp diretamente. O OpenSSH, por padrão, desativa o subsistema sftp. Eu não sei quando essa mudança foi feita, mas parece provável. Adicione isto ao seu sshd_config e veja se ele muda as coisas:

Subsystem sftp internal-sftp

    
por 03.06.2009 / 17:59
0

Existem muitos problemas em potencial. Primeiro, você examinou os logs em seu servidor para ver se há alguma pista? É possível que a atualização tenha alterado uma configuração que o cliente não pode usar ou não está configurada para usar. Por exemplo, o seu servidor agora requer o SSH2, mas o cliente está usando apenas o SSH1?

Arquivos de log provavelmente fornecerão o caminho para a resposta. Se o cliente SCP puder fazer qualquer registro, isso pode ser útil também.

    
por 03.06.2009 / 17:32
0

Esta minha tem algo a ver com a vulnerabilidade chave openssh que foi corrigida. Todas as chaves vulneráveis foram listadas na lista negra e devem ser recriadas. Basta verificar para ver se eles podem excluir as impressões digitais armazenadas em cache do seu servidor. Feito isso, o cliente deve mostrar a nova impressão digital ao usuário e perguntar se ele aceita. Eles acham que o SSH pode funcionar, é que o aplicativo poderia ter perguntado ao usuário se ele aceitou a nova chave ou o contato inicial foi feito após a atualização.

    
por 03.06.2009 / 17:40
0

Como afirmado anteriormente, existem muitas possibilidades. Eu começaria com esta linha embora:

scp:SshFileXferClient/sshfilexferc.c:981: ssh_file_client_receive_proc: bad VERSION
scp:SshFCTransfer/sshfc_transfer.c:1319: No connection yet. Waiting...

À primeira vista, parece que o cliente não gosta do que vê e elimina a conexão de maneira impura.

Já tentou voltar a versão anterior do sshd e ver o que acontece? O que acontece quando o cliente tenta fazer ssh sem usar chaves?

    
por 03.06.2009 / 20:14
0

Eu tive o mesmo problema ao usar o log dibug do cliente SSH mostrando ... FileTransferWin / filetransferwin.c: 217: Erro recebido SSH_FC_OK, mensagem de erro Não há arquivos para transferir.

Após horas de longos experimentos, eu entendo que o SSH não gosta de trocar pastas de arquivos com caracteres especiais usados em seu nome, ou seja, "Arquivos para (transferir)" Depois de mudar o nome da pasta para "Arquivos_para_Transfer", funcionou bem. / p>     
por 22.01.2013 / 03:39

Tags