Scenario
Due siti di lavoro, sito 1 e sito 2. Due server Linux, server A e server B. Il server A è raggiungibile da entrambi i siti, mentre il server B è raggiungibile solo dal sito 1. Due workstation Windows, una sul sito 1, l'altra sul sito 2.
Sono su Windows nel sito 1, usando PuTTY per connettermi al server A che è impostato solo per l'autenticazione ssh publickey.
Uso gpg-agent con l'impostazione enable-putty-support
attivata al posto del pageant per utilizzare una smartcard per l'autenticazione git a $popular_git_site
.
La maggior parte delle volte sul sito 1, devo collegarmi in remoto al server B usando NX Client di NoMachine v3.5.x. Da lì, ho bisogno di essere in grado di ssh nel server A usando anche l'autenticazione publickey. Poiché il server B esegue NX Server v3.5.x, l'inoltro di agenti non funziona con NX Client. Pertanto, con la smartcard non disponibile, devo assicurarmi di avere una chiave privata disponibile sul server B.
Pertanto, ho creato una coppia di chiavi ssh RSA protetta da password con sul server B usando
ssh-keygen -t rsa
La password è verylongandcomplicatedpassword
. Quindi, non voglio scriverlo molto.
Ho aggiunto la chiave pubblica .ssh/id_rsa.pub
a .ssh/authorized_keys
sul server A e sul server B. L'uso di ssh dal server B al server A funziona ora. Vice-versa funziona anche ora.
Problema
Su Windows al sito 1 Ho una configurazione PuTTY impostata sul server B utilizzando l'inoltro dell'agente per la mia smartcard per poter utilizzare git sul server B e autenticarmi con la mia smartcard.
Voglio la stessa cosa per il server A, perché il server B non è raggiungibile dal sito 2, dove lavoro anche a volte. gpg-agent
viene avviato come elemento di avvio utilizzando gpg-connect-agent /bye
ed è in esecuzione su Windows.
Pertanto, I scp
'd la chiave privata .ssh/id_rsa
dal server B sulla mia macchina Windows. L'ho aperto con successo con PuTTYgen e l'ho salvato nel formato PuTTY in C:\Users\name\ssh\id_rsa.ppk
.
Ho creato una nuova connessione PuTTY al server A, tipo di connessione SSH
.
Connection --> SSH --> Auth -->
[Check] Attempt Authentication using Pageant
[Uncheck] Attempt "keyboard-interactive" auth
[Check] Allow agent forwarding
Private Key File for Authentication: C:\Users\name\ssh\id_rsa.ppk
Questo tipo di opere. Tuttavia, PuTTY stesso - non gpg-agent
- mi chiede la password verylongandcomplicatedpassword
- ogni volta ! Anche l'inoltro di agenti non funziona in quanto non riesco a passare dal server A al server B senza ridigitare la password dopo aver effettuato correttamente il login da PuTTY.
Penso che PuTTY non sia in grado di aggiungere la chiave a gpg-agent
o di comunicare correttamente nonostante enable-putty-support
sia attivato nella configurazione gpg-agent
e gpg-agent
funzioni come un campione per git e agent-forwaring che lavorano per git sul server B nel sito 1.
Cosa ho provato
Pensando che sono estremamente intelligente, ho iniziato a esaminare come convertire il mio .ssh/id_rsa
in un formato che posso usare in gpg2 per gpg-agent
. Questa ricerca su Google ha prodotto risultati di cazzata per lo più.
Il meglio del quale - perché in realtà si tratta di un modo per convertire la chiave - è qui .
OpenSSH to GnuPG S/MIME
First we need to create a certificate (self-signed) for our ssh key:
openssl req -new -x509 -key ~/.ssh/id_rsa -out ssh-cert.pem
We can now import it in GnuPG
openssl pkcs12 -export -in ssh-certs.pem -inkey ~/.ssh/id_rsa -out ssh-key.p12 gpgsm --import ssh-key.p12
Notice you cannot import/export DSA ssh keys to/from GnuPG
Detto e fatto. Si noti ovvio errore nel secondo comando (ssh-cert s .pem vs ssh-cert.pem). Ho eseguito tutti i comandi openssl
sul server B, quindi ho copiato il file ssh-key.p12
su Windows e l'ho importato in gpg. Riesco a vedere la chiave come X.509 in Kleopatra, un frontend grafico per gpg su Windows.
Tuttavia, nonostante ciò, nulla è cambiato e nulla sembra funzionare. Ho provato con le impostazioni di PuTTY originali sopra. Il comportamento è invariato.
Lasciando vuoto il campo Private Key File for Authentication
, ricevo il solito messaggio:
PuTTY Fatal Error Disconnected: No supported authentication methods available (server sent: publickey)
Sono ignorante sul motivo per cui questo non funziona. GnuPG S / MIME o X.509 non è quello che mi serve? Ho provato a convertire anche .ssh/id_rsa.pub
, pensando che potrebbe essere un problema di chiave pubblica, ma openssl
si lamenta che vuole solo convertire le chiavi private.
Cosa non mi serve
Le risposte che suggeriscono
- Sono stupido per aver voluto questo
- nessuno mai avrebbe mai bisogno di voler fare questo
- se non mi piace come funziona ssh / gpg / PuTTY, posso codificare il mio
- man gpg, man ssh, man ssh_config