Esistono svariate possibilità di uso di SSH, in questo post analizzeremo la creazione di un tunnel SSH per accedere ad una macchina (server) da remoto, principalmente da un altra macchina (client).
Le configurazioni di un tunnel SSH possono essere fatta in vari modi, da terminal oppure usando alcune applicazioni che ci facilitino il compito e rendano l'operazione fattibili a più utenti. Inoltre uno degli usi principali di un accesso remoto è l'uso di VNC dalla macchina definita come client e pertanto consideremo nel tutorial questa funzionalità.
Le caratteristiche di base che dovrete avere per far seguire ad un tutorial una configurazione reale è una conoscenza minima di un network.
In un network semplificato per non mettervi a considerare problematiche non relative alla configurazione,
avremo una macchina server con un IP interno, ad esempio 192.168.0.1.
Inoltre avremo un IP esterno di fantasia che definirò come 88.88.88.xx per non avere corrispondenze reali su di un network esistente.
Prevediamo inoltre che la macchina del nostro network home sia in una rete che comunichi all'esterno, con un router che si occupi dell'indirizzamento degli ip correttamente configurato come DNS e su di una ADSL ad IP fisso.
Passiamo alla parte pratica:
1. prima cosa andremo ad aprire la porta relativa ad ssh sul router, la porta è la 22.
La configurazione potrebbe essere leggermente diversa da router a router ma in sostanza si tratta di definire un protocollo e aprire una porta, pertanto i dati da inserire saranno simili a quanto riportato sotto:
protocollo: ssh
ip: 192.168.0.1
porta: 22
Configurazione sul pannello di un router:
2. Come accennato prima useremo alcune applicazioni che ci consentiranno di configurare più velocemente i sistemi
3. Iniziamo dalla macchina che abbiamo definito come server, sulla stessa installeremo alcune applicazioni:
a) installiamo sshhelper sulla macchina server la applicazione ci servirà per gestire le identità sicure sulle due macchine.
- aprite la applicazione con un doppio clic
- passate la schermata di welcome facendo un clic sulla freccia in basso a destra
- selezionate il checkbox "setup server" procedete con un clic sulla freccia
- fate un clic su "open sharing" vi porterà nelle preferenze relative alla condivisione nella vostra cpu
- abilitate il remote login
- fate un clic sulla solita freccia e arriverete al "Summary"
- a questo punto la vostra macchina è configurata per il servizio
b) installiamo sempre sul server il servizio di vnc server
4. occupiamoci ora della macchina client
a) installiamo sshhelper sulla macchina client poi passiamo alla configurazione:
- aprite la applicazione con un doppio clic
- passate la schermata di welcome facendo un clic sulla freccia in basso a destra
- selezionate il checkbox "setup ssh identity" procedete con un clic sulla freccia
- in key parameters:
SSH Protocol: SSH 2 - DSA
key Type: personal Key
Comment: inserite una descizione che vi ricordi la password
Password: inserite una password
A questo punto abbiamo creato una chiave pubblica sul nostro client
- apriamo SSH Helper sulla macchina client
- facciamo un clic su "nome utente" setting e selezionate "My Keys"
- fate un clic su "Save as..." o "export" a seconda delle versioni del programma
- una volta salvata la chiave su di un file trasferitela sul server, ad esempio su una chiavetta
usb, se disponete solo un accesso remoto trasferitela sul server tramite ftp, condivisione o email.
Torniamo sulla macchina server per autorizzare l'uso della chiave pubblica generata dal client.
- apriamo SSH Helper sul server
- qui un appunto, è necessario fare il log all'avvio del server nel caso di più utenti con l'utente che sarà attivo quando il server rimarrà in aspettativa della connessione ssh da parte del client.
- facciamo un clic su "nome utente" setting e selezionate "Authorized Keys"
- facciamo un clic sul pulsante "+"
- copiamo il contenuto del file della public key precedentemente portato sul server facendo copia e incolla del testo della key
-fate un check del buon esito della procedura con un clic su "Protocol 2 keys" dovreste vedere la chiave nel riquadro sottostante
5. Facciamo un test della connessione ssh da terminale:
scriviamo la seguente stringa dalla macchina client:
ssh -l nomeutenteserver iphost
premiamo invio, ovviamente sostituiamo i dati del nostro network :
nomeutenteserver= fedeserver
iphost= 88.88.88.xx
ssh -l fedeserver 88.88.88.xx
The authenticity of host '192.168.0.1 (192.168.0.1)' can't be established.
RSA key fingerprint is "sequenza numeri e lettere"
Are you sure you want to continue connecting (yes/no)?
scrivete yes
a questo punto il server sarà aggiunto tramite il riconoscimento della chiave agli host conosciuti
Warning: Permanently added '192.168.0.1' (RSA) to the list of known hosts.
vi sarà richiesta la password:
Enter passphrase for key '/Users/fedeserver/.ssh/id_dsa':
a questo punto il login è andato a buon fine.
La nostra configurazione tramite le keys RSA è funzionante.
6. ora possiamo procedere alla installazione di vineserver
configurazione:
- tab "Connection"
- inseriamo un display number ad esempio =1
- una porta =5900
- una password
- tab "System"
- check il checkbox "Swap Mouse Buttons 2 and 3"
- tab "Sharing"
attivate i seguenti checbox:
- Only allow local connection (require SSH)
- Advertise server via Bonjour
- Let clients request exclusive access
- Keep existing client if a new client tries to connect
Qui la parte più importante che assicura una connessione non pubblica al sistema vnc è attivare "Only allow local connection (require SSH)"
tab "Startup"
- check il checkbox "Restart server if it terminates unexpectedly"
7. configuriamo SSH Tunnel Manager sulla macchina client
- creiamo una posizione name= remote home
- login= il nome utente sul server=fedeserver
- host= l'ip pubblico dell'host
In Local Redirections la porta scelta sul server:
port=5900
LAN Host= 127.0.0.1
port=5900
A questo punto vi potrete connettere tramite la connessione criptata del tunnel.
Come visto prima nella procedura da terminal vi sarà chiesta la password per entrare nel server.
8. per vedere il vnc dalla macchina client installeremo Chicken of VNC
- creiamo una connessione facendo un clic sotto il box a sinistra "Servers" ad esempio "log da ibook"
- Host= 127.0.0.1
- Password= la password definita sulla macchina server nella applicazione Vine server.
La finestra della connessione su Chicken of VNC
Note:
- la macchina che ha la funzionalità del server dovrà esere configurata per il log automatico sull'utente per cui si è definito di usare le chiavi
- sarà buona cura disabilitare sulla macchina server standby o attivazioni salvaschermo, impendendo lo sleep ci si garantisce in questo modo un accesso remoto ad una macchina funzionante.
- non occorre aprire la porta vnc sul router l'accesso al servizio sarà garantito dalla connessione alla rete locale della macchina server tramite ssh.
I seguenti commenti sono proprietà di chi li ha inviati. Questo sito non è responsabile dei contenuti degli stessi.
Inviato da: SpartanWithin su
Lun, 23 Giugno 2008 - 12:08
CITAZIONE(fede_dev @ 23 Jun 2008, 09:23) <{POST_SNAPBACK}> ha scritto: mi scuso se ti rispondo in ritardo ma non ero sotto copertura adsl fino ad oggi.
Tranquillo, si sa come va durante il week-end È strano solo il fatto che il problema non fosse della directory .ssh e onestamente non ho ancora capito da che directory o file dipendesse il problema! Ma poco importa ormai, grazie comunque dell'aiuto e a presto!
Inviato da: fede_dev su
Lun, 23 Giugno 2008 - 09:23
CITAZIONE(SpartanWithin @ 22 Jun 2008, 13:41) <{POST_SNAPBACK}> ha scritto:
CITAZIONE(SpartanWithin @ 22 Jun 2008, 12:10) <{POST_SNAPBACK}> ha scritto: Ho trovato una soluzione, sebbene non credo proprio che sia la soluzione ideale del problema. Sul server ho creato un account di tipo "standard" (non amministratore e non con controlli censura insomma), copiato la chiave id_rsa.pub nella directory .ssh della home di questo nuovo utente, e collegato via ssh.
Il risultato è la connessione al server senza la richiesta di password dell'utente (sebbene l'utente abbia una password). Ora, sapete spiegarmi il motivo di questo bizzarro comportamento?!
Non ho parole...
Risolto definitivamente il problema, sperando possa essere d'aiuto qualora dovesse presentarsi a qualcun'altro...
Pensavo il problema fosse del fatto che l'account usato (quello del server) fosse amministratore, o che facesse conflitto perché avente lo stesso nome di quello del client, ma non c'entrava nulla. Infatti, ho eliminato l'account del server, salvando prima tutto, creatone uno nuovo con lo stesso nome e stessa cartella Inizio del vecchio, ritrasferito i file (immagini, video, etc.) e copiato la chiave RSA del client. Ebbene, funziona tutto...
Sembra strano, eh?!
ciao, benfatto!
Intanto mi scuso se ti rispondo in ritardo ma non ero sotto copertura adsl fino ad oggi.
Cmq non è tanto strano, probabilmente qualche configurazione nell'utente che avevi prima sul server non era andata come doveva andare o c'era qualcosa d'altro che bloccava il flusso dei processi.
Una procedura che ti avrei cmq suggerito è quella che hai usato cavandoti dai problemi da solo , ovvero la creazione di un nuovo utente (anche se adesso che hai risolto sembrerebbe semplicistico ricordarlo).
Pertanto buon te e goditi la tua connessione remota .
Inviato da: SpartanWithin su
Dom, 22 Giugno 2008 - 13:41
CITAZIONE(SpartanWithin @ 22 Jun 2008, 12:10) <{POST_SNAPBACK}> ha scritto: Ho trovato una soluzione, sebbene non credo proprio che sia la soluzione ideale del problema. Sul server ho creato un account di tipo "standard" (non amministratore e non con controlli censura insomma), copiato la chiave id_rsa.pub nella directory .ssh della home di questo nuovo utente, e collegato via ssh.
Il risultato è la connessione al server senza la richiesta di password dell'utente (sebbene l'utente abbia una password). Ora, sapete spiegarmi il motivo di questo bizzarro comportamento?!
Non ho parole...
Risolto definitivamente il problema, sperando possa essere d'aiuto qualora dovesse presentarsi a qualcun'altro...
Pensavo il problema fosse del fatto che l'account usato (quello del server) fosse amministratore, o che facesse conflitto perché avente lo stesso nome di quello del client, ma non c'entrava nulla. Infatti, ho eliminato l'account del server, salvando prima tutto, creatone uno nuovo con lo stesso nome e stessa cartella Inizio del vecchio, ritrasferito i file (immagini, video, etc.) e copiato la chiave RSA del client. Ebbene, funziona tutto...
Inviato da: SpartanWithin su
Dom, 22 Giugno 2008 - 12:10
Ho trovato una soluzione, sebbene non credo proprio che sia la soluzione ideale del problema. Sul server ho creato un account di tipo "standard" (non amministratore e non con controlli censura insomma), copiato la chiave id_rsa.pub nella directory .ssh della home di questo nuovo utente, e collegato via ssh.
Il risultato è la connessione al server senza la richiesta di password dell'utente (sebbene l'utente abbia una password). Ora, sapete spiegarmi il motivo di questo bizzarro comportamento?!
Inviato da: SpartanWithin su
Sab, 21 Giugno 2008 - 12:21
CITAZIONE(fede_dev @ 21 Jun 2008, 09:05) <{POST_SNAPBACK}> ha scritto: ciao, si in reltà non è che hai fatto errori, lo scopo della rsa key sarebbe quello di aumentare la sicurezza della connessione attraverso lo scambio delle chiavi, di default ti viene richiesta la autenticazione.
Se invece vuoi usare la rsa key come procedura di autenticazione devi in sostanza creare una rsa key senza la passphrase ad esempio:
CODICE
$ ssh-keygen -t rsa
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): Enter same passphrase again:
Se premi enter la rsa key verrà generata senza password e potrà essere usata per il login trasferendola sul server.
Ricordati sempre di disporre di un accesso remoto ssh "normale" per completare i settaggi delle keys in quanto il login con la nuova rsa key non sarà subito disponibile al trasferimento della chiave.
Dopo il trasferimento ed il settaggio della rsa key sarà conseguentemente possibile autenticarsi con
CODICE
$ ssh nomeutente@nomehostremoto.com
Essendo la chiave generata senza passphrase e se tutto è andato a buon fine dovresti correttamente entrare senza la richiesta della password.
Grazie della risposta. È esattamente quello che ho fatto, ovvero ho provato a creare la chiave sia con un semplice
La creazione della chiave va sempre a buon fine, qualunque sia il metodo usato, come tra l'altro la copia di questa sul server, sia con cat >> una volta loggatovi, sia con scp, con prompt per la richiesta della password. Il problema si presenta successivamente, quando provo ad accedere, in qualunque forma, come descritto nel mio primo post. Dovrebbe autenticarmi in automatico, ma mi richiede perennemente la password, e non è la passphrase, perché come suggerito non la inserisco!
Alla prima connessione con ssh o scp, ottengo
CODICE
$ ssh SERVER_USER@SERVER_ADDRESS The authenticity of host 'SERVER_ADDRESS (IPv6%NET_INTERFACE)' can't be established. RSA key fingerprint is KEY. Are you sure you want to continue connecting (yes/no)?
quindi viene creato il file known_hosts nella directory .ssh della home dell'utente del client da cui mi connetto, in cui viene copiata la chiave RSA e l'indirizzo del server.
Mi sorge un dubbio ora:
CODICE
Enter file in which to save the key (/root/.ssh/id_rsa):
Io uso un account amministratore sia sul client (MBP) che sul server (Mac mini), tra l'altro con un nome molto semplice, "Angel"... Devo necessariamente essere root per accedere remotamente al server? [EDIT] Rettifico: anche con root ricevo ancora il prompt per la password dell'utente del server. Grazie...
Inviato da: fede_dev su
Sab, 21 Giugno 2008 - 09:05
CITAZIONE(SpartanWithin @ 20 Jun 2008, 13:09) <{POST_SNAPBACK}> ha scritto: Salve, sono nuovo del forum ma leggo Tevac da due anni ormai, dal mio passaggio a Mac (MBP prima serie).
Ultimamente ho acquistato anche un Mac mini da utilizzare come file server e media center (e varie ed eventuali) per non tenere perennemente acceso il portatile, e da qualche giorno sto provando a gestire completamente il piccolo dal mio portatile.
... Da qualche giorno ho scoperto che, nel collegamento via SSH al server, è possibile autenticarsi senza dover ogni volta inviare a questi la password, ma facendosi riconoscere inviando solo la prima volta la propria chiave identificativa, ovvero una RSA KEY.
...
È un problema mio di configurazione interna, del server OPENSSH, di permessi? Faccio qualche errore nell'immettere i parametri? Qualcuno saprebbe aiutarmi?
Chiedo immensamente venia per la prolissità del mio post e ringrazio anticipatamente chiunque voglia darmi una mano...
ciao, si in reltà non è che hai fatto errori, lo scopo della rsa key sarebbe quello di aumentare la sicurezza della connessione attraverso lo scambio delle chiavi, di default ti viene richiesta la autenticazione.
Se invece vuoi usare la rsa key come procedura di autenticazione devi in sostanza creare una rsa key senza la passphrase ad esempio:
CODICE
$ ssh-keygen -t rsa
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): Enter same passphrase again:
Se premi enter la rsa key verrà generata senza password e potrà essere usata per il login trasferendola sul server.
Ricordati sempre di disporre di un accesso remoto ssh "normale" per completare i settaggi delle keys in quanto il login con la nuova rsa key non sarà subito disponibile al trasferimento della chiave.
Dopo il trasferimento ed il settaggio della rsa key sarà conseguentemente possibile autenticarsi con
CODICE
$ ssh nomeutente@nomehostremoto.com
Essendo la chiave generata senza passphrase e se tutto è andato a buon fine dovresti correttamente entrare senza la richiesta della password.
Come detto prima ovviamente avresti un layer di sicurezza in meno ma ciò consentirebbe il login automatico.
Una nota, nel tutorial di cui sopra la key e il log vengono settati (e ricordati) su una applicazione che si occupa di aprire e chiudere il tunnel, il funzionamento praticamente è quello di un log automatico ma mantenendo tutti i layer di sicurezza.
Ovviamente ciò non toglie che puoi liberamente scegliere la soluzione che ritieni più opportuna per le tue intenzioni. buon lavoro
Inviato da: SpartanWithin su
Ven, 20 Giugno 2008 - 13:09
Salve, sono nuovo del forum ma leggo Tevac da due anni ormai, dal mio passaggio a Mac (MBP prima serie).
Ultimamente ho acquistato anche un Mac mini da utilizzare come file server e media center (e varie ed eventuali) per non tenere perennemente acceso il portatile, e da qualche giorno sto provando a gestire completamente il piccolo dal mio portatile.
Ora, seguendo diverse guide (IKEE), so connettermi via web ad eMule, via VNC con indirizzo locale (della forma COMPUTER.local o 192.168.1.x) e tramite DynDNS (COMPUTER.dyndns.org/info), ed anche tramite un tunnel SSH, del tipo
Da qualche giorno ho scoperto che, nel collegamento via SSH al server, è possibile autenticarsi senza dover ogni volta inviare a questi la password, ma facendosi riconoscere inviando solo la prima volta la propria chiave identificativa, ovvero una RSA KEY.
Ho seguito diversi tutorial su internet (1, 2, 3, 4, 5) che, sebbene con parole o metodi leggermente differenti l'uno dall'altro, dicono la stessa cosa: creare una chiave sul client e passarla sul server (opportunamente aggiungendola a ~/.ssh/authorized_keys o ~/.ssh/authorized_keys2, a seconda della versione di SSH usata).
Il punto è che alla prima connessione dal client il server viene aggiunto correttamente al file ~/.ssh/known_hosts (e la chiave del client sul server) ma, anche dopo la prima connessione, il server continua a chiedere la password dell'utente (del server) e sembra ignorare la chiave identificativa del client.
Ho provato ad aggiungere (sul server) la chiave sia con un
Ho provato inoltre a modificare i permessi dei file authorized_keys, authorized_keys2, id_rsa, id_rsa.pub... ma nulla è servito! Infatti una normale connessione, in queste differenti forme
richiede sempre e comunque la password (ho provato a mettere id_rsa, id.rsa.pub, id_dsa, id_dsa.pub, ma non cambia nulla).
Avviando la connessione con l'opzione "-v"
CODICE
ssh -v SERVER_USER@SERVER_ADDRESS
pare ke il client provi ad inviare la propria chiave identificativa, che viene ignorata, quindi appare il prompt per la password dell'utente del server cui ci si connette:
CODICE
OpenSSH_4.7p1, OpenSSL 0.9.7l 28 Sep 2006 debug1: Reading configuration data /etc/ssh_config debug1: Connecting to SERVER_ADDRESS [192.168.1.x] port xx. debug1: Connection established. debug1: identity file /Users/Angel/.ssh/identity type -1 debug1: identity file /Users/Angel/.ssh/id_rsa type 1 debug1: identity file /Users/Angel/.ssh/id_dsa type 2 debug1: Remote protocol version 2.0, remote software version OpenSSH_4.7 debug1: match: OpenSSH_4.7 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_4.7 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-cbc hmac-md5 none debug1: kex: client->server aes128-cbc hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug1: Host 'SERVER_ADDRESS' is known and matches the RSA host key. debug1: Found key in /Users/Angel/.ssh/known_hosts:2 debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey,password,keyboard-interactive debug1: Next authentication method: publickey debug1: Offering public key: /Users/Angel/.ssh/id_rsa debug1: Authentications that can continue: publickey,password,keyboard-interactive debug1: Offering public key: /Users/Angel/.ssh/id_rsa debug1: Authentications that can continue: publickey,password,keyboard-interactive debug1: Offering public key: /Users/Angel/.ssh/id_rsa debug1: Authentications that can continue: publickey,password,keyboard-interactive debug1: Trying private key: /Users/Angel/.ssh/identity debug1: Offering public key: /Users/Angel/.ssh/id_rsa debug1: Authentications that can continue: publickey,password,keyboard-interactive debug1: Offering public key: /Users/Angel/.ssh/id_dsa debug1: Authentications that can continue: publickey,password,keyboard-interactive debug1: Next authentication method: keyboard-interactive Password:
Ah, ovviamente ho provato (e sono 2 o 3 giorni ormai) tutti i modi possibili descritti nei tutorial che ho elencato, sempre cancellando completamente la directory .ssh sia dal client che dal server (con un rm -fR ~/.ssh, quindi...) e ricominciato sempre da capo, provando anche la procedura invertendo il client e il server! Infine oggi ho seguito passo passo anche la procedura fornita da Federico Corazza qui su Tevac con l'ausilio di SSH Helper, ma con gli stessi pessimi risultati...
È un problema mio di configurazione interna, del server OPENSSH, di permessi? Faccio qualche errore nell'immettere i parametri? Qualcuno saprebbe aiutarmi?
Chiedo immensamente venia per la prolissità del mio post e ringrazio anticipatamente chiunque voglia darmi una mano...
mi scuso se ti rispondo in ritardo ma non ero sotto copertura adsl fino ad oggi.
Tranquillo, si sa come va durante il week-end
È strano solo il fatto che il problema non fosse della directory .ssh e onestamente non ho ancora capito da che directory o file dipendesse il problema! Ma poco importa ormai, grazie comunque dell'aiuto e a presto!