Original Article: PuTTY for win32 storing configuration into file
Author: jakub.kotrla.net

PuTTY para win32 armazenar configuração em arquivo

Informação

Recentemente, vários Antivirus SW sinalizaram binários neste site como malware. Isso é falso positivo. Eu compilo binários eu mesmo - primeiro baixe o código fonte do site do PuTTY, substitua a sessão de armazenamento de código e compile usando o Visual Studio. O PC utilizado está limpo.

A razão talvez sejam regras mais estritas e heurísticas de AV por causa de http://www.securityweek.com/attackers-use-trojanized-version-putty-steal-ssh-credentials . Eu compilei o mesmo código de plink.exe no modo Release e Debug - os resultados de AV são muito diferentes devido a combinação heurística fraca da versão Release.

Então eu decidi oferecer binários compilados em modo de debug - espero que isso sirva para o seu AV possivelmente cauteloso demais. O modo debug resulta em executáveis maiores - que é ok hoje em dia - apenas para explicar a diferença para o putty original.

Compreendo perfeitamente se você não confia em mim - sinta-se livre para compilar os binários você mesmo.

PuTTY É um ótimo cliente telnet/ssh gratuito para plataformas Win32 e Unix. É apenas um "exe", sem instalação, sem dlls extras necessários. Assim ele pode ser executado a partir de disquete, disco flash usb etc.

Mas ele armazena toda a configuração no registro ([HKEY_CURRENT_USER \ Software \ SimonTatham \ PuTTY]) - você não pode armazená-lo ou carregá-lo a partir do arquivo no disquete ou outros dispositivos removíveis. Existe uma solução alternativa com arquivos bat/reg nas esta não é muito agradável. Então eu reescrevi uma pequena parte de PuTTY (winstore.c - Funções que manipulam a configuração de armazenamento/carregamento).

Eu reescrevi uma pequena parte de Pageant também, para ser capaz de carregar a lista de sessão armazenada (winpgnt.c - função update_sessions).

Se você encontrar um bug relacionado ao armazenamento/configuração de carregamento ou não presente no PuTTY original sinta-se livre para enviá-lo por e-mail para [email protected]. Minha modificação para PuTTY está sob a mesmo licença do PuTTY - você pode fazer qualquer coisa com ele, mas a seu próprio risco e sem qualquer garantia.

Documentação

Este PuTTY armazena sua configuração (sessões, chaves de host ssh, caminho de arquivo de sementes aleatório) para arquivo em vez de registro. Cada sessão e chave do host ssh são armazenadas em um arquivo separado. Os caminhos padrão são (onde . representa o diretório executável):

  • ./sessions/packedSessionName
  • ./sshhostkeys/packedHostName
  • ./putty.rnd

O caminho para salvar a configuração pode ser definido pelo arquivo putty.conf. O diretório de trabalho atual é pesquisado primeiro, se putty.conf não é encontrado lá, o diretório executável (mesmo diretório que putty/pscp/psftp/plink/pageant.exe) é pesquisado. putty.conf deve ser semelhante a este (se não for encontrado, padrões são usados):

		;linha de comentário
		sessions=%SYSTEMROOT%\ses
		sshhostkeys=\ssh\hostkeys
		seedfile=C:\putty.rnd
		sessionsuffix=.session
		keysuffix=.hostkey
		jumplist=jumplist.txt
	

Você pode usar variáveis de ambiente em config (como% SYSTEMROOT%) - a string será expandida via ExpandEnviromentString função WinAPI (variáveis específicas do usuário não são suportadas ainda).

sessionsuffix e keysuffix são opcionais, os padrões são vazios. Se definido, cada arquivo tem um sufixo conforme definido (sessões salvas via sessionsuffix e ssh chaves do host via keysuffix). O objetivo principal é evitar arquivos "*.com" de nomes como ssh.domain.com. Ambos são limitados a 15 caracteres.
Atenção: Se você já salvou algumas sessões ou chaves de host ssh e você alterar esses sufixos, você tem que renomear manualmente (anexá-los a) todos os arquivos.

O Jumplist é um novo recurso do Windows 7 suportado pelo PuTTY 0.61. Porque este PuTTY deve ser leve, se você não definir caminho para jumplist, nenhum será criado.

Este PuTTY ainda é capaz de carregar a configuração do registro. Sessões carregadas do registro são marcadas [registry]. Quando PuTTY estiver verificando a chave do host ssh e não a encontrar no arquivo, mas no registro, você pode mover/copiar a chave para o arquivo (ou, claro, não fazer nada).

O pageant carrega a lista de sessões salvas do caminho definido em putty.conf, padrão é ./sessions/packedSessionName - funciona da mesma forma que PuTTY (incluindo a configuração keysuffix).

ChangeLog

Este PuTTY ainda está evoluindo, desde a primeira versão simples, eu adicionei alguns recursos e corrigi alguns bugs. Então eu acabei de começar a numerar versões. Todas as alterações, recursos e correções de bugs serão exibidos aqui.

  • 24. 11. 2005 - primeira versão 0.1.1
  • 22. 3. 2006 - PSCP, PSFTP compilado & adicionado
  • 22. 3. 2006 - Pageant fixo para trabalhar com sessionsuffix corretamente (versão 0.1.2)
  • 7. 8. 2006 - PSCP fixo ao carregar configurações inexistentes silenciosamente & erro de identificador nulo corrigido (versão 0.1.3)
  • 9. 8. 2006 - muito melhor "putty.exe diretorio" detecção adicionada (versão 0.1.5)
  • 29. 9. 2006 - PLINK compilado & adicionado
  • 9. 1. 2007 - fixado para salvar / carregar configurações padrão (versão 0.1.6)
  • 25. 1. 2007 - Atualização: este PuTTY modificado agora é baseado em PuTTY 0.59 & Vazamento de memória menor corrigido (versão 0.2)
  • 24. 3. 2007 - Suporte para variáveis de ambiente no arquivo de configuração & limpeza do código (versão 0.2.1)
  • 1. 5. 2007 - Atualização: este PuTTY modificado agora é baseado em PuTTY 0.60 (versão 0.3)
  • 15. 10. 2007 - Exibição fixa "." e ".." sessões na lista de sessões (versão 0.3.1)
  • 6. 3. 2008 - falha fixa se arquivo de configuração não termina com linha em branco (versão 0.3.2)
  • 12. 8. 2008 - desde agora: mudança no manuseio putty.conf e diretórios funcionais / executáveis
  • 4. 9. 2008 - O pageant inicia o putty.exe em seu diretório de trabalho (pageant) & XP e Vista estilos visuais suportados (versão 0.3.5)
  • 28. 7. 2009 - Sessão fixa quando sessionuffix definido em PuTTY (versão 0.3.6)
  • 4. 9. 2009 - Se a sessão não for encontrada no disco, tente no registro (para suporte ao WinSCP), bug menor fixo com o Current Directory (versão 0.3.7)
  • 7. 11. 2009 - Suporte para variáveis de ambiente em arquivos de sessão (versão 0.3.8)
  • 12. 1. 2010 - Carregamento fixo da sessão com nomes que contenham dois pontos (:) e outros caracteres estranhos (versão 0.3.9)
  • 24. 8. 2011 - Atualização: este PuTTY modificado agora é baseado em PuTTY 0.61 (versão 0.4), suporte para Win7 jumplist
  • 23. 2. 2012 - Atualização: este PuTTY modificado agora é baseado em PuTTY 0.62 (versão 0.5)
  • 8. 9. 2013 - Atualização: este PuTTY modificado agora é baseado em PuTTY 0.63 (versão 0.6)
  • 13. 9. 2013 - Corrigido o erro do código de mesclagem com 063 - carregando sessões do registro fixo (versão 0.6.1)
  • 8. 3. 2015 - Atualização: este PuTTY modificado agora é baseado em PuTTY 0.64 (versão 0.7), arquivos de sessão são filtrados por sessionsuffix
  • 27. 9. 2015 - Atualização: este PuTTY modificado agora é baseado em PuTTY 0.65 (versão 0.8)
  • 27. 9. 2015 - Actualização: este PuTTY modificado baseia-se agora no PuTTY Development snapshot 2015-09-27.acff0a6 para fornecer algumas novas cifras, p. Ed25519 curvas e chacha20. (Versão 0.8.1)
  • 18. 11. 2015 - Atualização: este PuTTY modificado agora é baseado em PuTTY 0.66 (versão 0.9)
  • 6. 12. 2015 - Actualização: este PuTTY modificado baseia-se agora no PuTTY Development snapshot 2015-11-30.1659cf3 para fornecer algumas novas cifras, p. Ed25519 curvas e chacha20. (Versão 0.9.1)
  • 19. 3. 2016 - Atualização: este PuTTY modificado agora é baseado no PuTTY 0.67 (versão 0.10.0) e no Development snapshot 2016_03_18.0fadffe
  • 6. 11. 2016 - Recompilado no modo de depuração para evitar falsos positivos do Overcautious Antivirus SW
  • 20. 3. 2017 - Atualização: este PuTTY modificado agora é baseado em PuTTY 0.68 (versão 0.11.0)

Baixar

Você pode obter binários aqui. Se você mesmo quiser compilar - baixe a fonte PuTTY para win32 de página de download da PuTTY e substitua winpgnt.c e winstore.c.

Obrigado

Agradecimentos a Sebastian Juerges, a Sebastian Królak, a Scott Akesson, a Przemysław Sztoch, a James Hoffman, a Jones Down, a Harold Hunt, a Dmitry Gromov, a Gorkum L. van, a Kyle Brazell, a Sergey Makarenko, a Anthony Valentine, a Jason K Larson, a tzeentch ea Quip por testes e Idéias.