L'uso delle chiavi per l'autenticazione utente via ssh e' una modalita' che permette di gestire con una certa sicurezza e con comodita' l'accesso ai sistemi, nasce dunque l'esigenza di propagare la chiave sui sistemi gia' esistenti.Di seguito e' illustrato un modo comodo e veloce:
Creazione della chiave, in questo caso DSA
neo@eva:~$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/neo/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/neo/.ssh/id_dsa.
Your public key has been saved in /home/neo/.ssh/id_dsa.pub.
The key fingerprint is:
b5:4c:6e:a9:01:6e:33:e1:c5:47:e6:b4:b1:d0:5d:64 neo@eva
Avvio dell'ssh-agent
neo@eva:~$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-xCLiUW3380/agent.3380; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3381; export SSH_AGENT_PID;
echo Agent pid 3381;
Acquisizione della chiave pubblica da copiare.
neo@eva:~$ ssh-add
Identity added: /home/neo/.ssh/id_dsa (/home/neo/.ssh/id_dsa)
Copia della chiave sul server remoto
neo@eva:~$ ssh-copy-id neo@remoteserver
Viene richiesta la password per propagare la chiave
neo@remoteserver's password:
Now try logging into the machine, with "ssh 'neo@remoteserver'", an d check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Verifica della procedura
neo@eva:~$ ssh neo@remoteserver
La chiave e' stata propagata sul remoteserver, senza dover copiare direttamente nel file .ssh/authorized_keys la propria chiave pubblica.
Al primo login di ogni server occorre semplicemente ricordarsi di lanciare queste tre istruzioni e il gioco e' fatto.
Nel caso in cui si presenti il seguente errore:
neo@eva~$ ssh-add
Could not open a connection to your authentication agent.
Occorre semplicemente eseguire l'export delle variabile che sono state printate a video dal comando ssh-agent:
neo@eva:~$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-xCLiUW3380/agent.3380; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3381; export SSH_AGENT_PID;
neo@eva:~$ SSH_AUTH_SOCK=/tmp/ssh-xCLiUW3380/agent.3380; export SSH_AUTH_SOCK
neo@eva:~$ SSH_AGENT_PID=3381; export SSH_AGENT_PID
ssh in crontab
Hola gente!
Ho la necessità di aprire un tunnel ssh tra 2 macchina: una con ip pubblico e una senza, quindi eseguo "ssh -R 3389:localhost:3389 root@macchina_con_ip_pubblico".
Come faccio a mettere quel comando nel crontab (per poter controllare che il tunnel sia sempre attivo) visto che se lo metto così nudo e crudo, il tunnel viene aperto e subito chiuso (sulla macchina rimane una connessione in TIME_WAIT) e mi manda questo in mail:
From root@xxxxxxx Thu Apr 20 19:11:43 2006
Return-Path: <root@xxxxxxx>
X-Original-To: root
Delivered-To: root@xxxxxxxx
Received: by mail.xxxxxxxxxxx (Postfix, from userid 0)
id BFFB5EB8FE; Thu, 20 Apr 2006 19:11:43 +0200 (CEST)
From: root@xxxxxxxxxxxxxx (Cron Daemon)
To: root@xxxxxxxxxxxxxx
Subject: Cron <root@mail> /root/connect_8080
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <[email protected]>
Date: Thu, 20 Apr 2006 19:11:43 +0200 (CEST)
Pseudo-terminal will not be allocated because stdin is not a terminal.
...come posso ovviare a questo problemino???