Estou tentando conectar a um host usando paramiko. Consigo conectar com sucesso ao host por meio do winscp usando a chave privada, mas o script falha com o erro abaixo
raise SSHException("não é um arquivo de chave privada {} válido".format(tag)) paramiko.ssh_exception.SSHException: não é um arquivo de chave privada OPENSSH válido
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname.com', username='user', key_filename='private.ppk')
stdin, stdout, stderr = ssh.exec_command('ls')
print(stdout.readlines())
ssh.close()
Any suggestion would be appretiated,
Paramiko está em python e provavelmente quer uma codificação de arquivo PEM para a chave. Winscp e Putty usam ppk, que é tipicamente usado em sistemas SSH baseados em Microsoft. Putty vem com uma ferramenta para converter o ppk para OpenSSH chamada PuttyGen.
Abra o PuttyGen
Selecione Carregar e escolha o arquivo PPK que deseja converter
Menu Conversão > Exportar Chave OpenSSH
Responda Sim para "Você quer salvar esta chave sem uma senha?". Isso armazenará a chave sem criptografia, portanto tenha muito cuidado com ela e não a copie para locais inseguros.
digite seu novo nome de arquivo e um sufixo .pem.
Agora você tem uma chave codificada PEM que funcionará com OpenSSH e paramiko.