Last active
April 1, 2018 00:29
-
-
Save tavinus/931e226aabc913c8b4b5fbd076406b92 to your computer and use it in GitHub Desktop.
Transforms putty certificates to OpenSSH (ppk to pem)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| ######################################################################## | |
| ## ppk2pem.sh | |
| ## | |
| ## Gustavo Arnosti Neves | |
| ## 30 / Ago / 2016 | |
| ## | |
| ## Transforma um certifica .ppk (Putty) para .pem (OpenSSH) | |
| ## usando o aplicativo puttygen (deve ser instalado na maquina) | |
| ## | |
| ## O caminho (path) e o nome do arquivo .ppk serao usados como base | |
| ## para o arquivo .pem | |
| ## | |
| ## Exemplo: | |
| ## ppk2pem ~/.ssh/meucert.ppk | |
| ## | |
| ## Arquivo Gerado: | |
| ## ~/.ssh/meucert.pem | |
| ## | |
| ## Instalando esse script na pasta atual do shell: | |
| ## wget -q https://gist.githubusercontent.com/tavinus/931e226aabc913c8b4b5fbd076406b92/raw/ -O ./ppk2pem.sh && chmod +x ./ppk2pem.sh | |
| ## | |
| ######################################################################## | |
| PGEN=$(which puttygen) | |
| ret=0 | |
| press_continue() { | |
| read -p $'\n'"Pressione qualquer tecla para continuar... "$'\n' -n1 -s | |
| } | |
| if [[ -z $PGEN ]]; then | |
| echo "Erro! Nao foi possivel encontrar o puttygen no sistema." | |
| echo "Talvez voce precise instalar o pacote \"putty-tools\"" | |
| echo " -> sudo apt-get install putty-tools" | |
| echo " -> sudo yum install putty-tools" | |
| echo " -> brew install putty" | |
| press_continue | |
| exit 1 | |
| fi | |
| have_file() { | |
| if [[ -z $1 ]]; then | |
| echo "Erro:" | |
| echo " Voce precisa fornecer o arquivo a ser transformado." | |
| echo "Uso:" | |
| echo " $0 arquivo_certificado.ppk" | |
| press_continue | |
| exit 2 | |
| elif [[ ! -f $1 ]]; then | |
| echo "Erro:" | |
| echo " Arquivo de certificado nao encontrado: $1" | |
| press_continue | |
| exit 3 | |
| elif [[ ! "$1" =~ ^..*\.ppk$ ]]; then | |
| echo "Erro:" | |
| echo " O arquivo especificado nao possui a extensao .ppk: $1" | |
| press_continue | |
| exit 4 | |
| fi | |
| } | |
| have_file "$1" | |
| ppk_file=$(basename "$1") | |
| ppk_dir=$(dirname "$1") | |
| ppk_path="$ppk_dir/$ppk_file" | |
| pem_file="${ppk_file%.ppk}.pem" | |
| pem_path="$ppk_dir/$pem_file" | |
| "$PGEN" "$ppk_path" -O private-openssh -o "$pem_path" || ret=1 | |
| chmod go-rw "$pem_path" || ret=1 | |
| if [[ ret -eq 0 ]]; then | |
| echo "Sucesso!" | |
| echo "O arquivo \"$pem_path\" foi criado e teve as permissoes configuradas." | |
| press_continue | |
| exit 0 | |
| else | |
| echo "Erro!" | |
| echo "Ocorreu algum erro ao criar ou setar as permissoes do arquivo \"$pem_path\"." | |
| echo "Possiveis causas:" | |
| echo " - Permissoes insuficientes na pasta \"$ppk_dir\"." | |
| echo " - Senha do certificado invalida." | |
| press_continue | |
| exit 5 | |
| fi | |
| exit 9 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment