web-dev-qa-db-fra.com

Comment ssh vers un serveur distant en utilisant une clé privée?

J'ai deux serveurs. Les deux serveurs sont dans CentOS 5.6. Je veux SSH du serveur 1 au serveur 2 en utilisant une clé privée que j'ai (OpenSSH SSH-2 Private Key).

Je ne sais pas comment le faire sur unix. Mais ce que j'ai fait sur Windows en utilisant PuTTY, c'était de donner ma clé privée OpenSSH à PuTTY-gen et de générer une clé privée au format PPK.

Cependant, je créerais un script bash à partir du serveur 1 qui exécutera certaines commandes sur le serveur 2 via SSH.

Comment puis-je SSH vers le serveur 2 en utilisant mon fichier de clé privée du serveur 1?

82
Aivan Monceller

Vous avez besoin de votre clé publique SSH et vous aurez besoin de votre clé privée ssh. Les clés peuvent être générées avec ssh-keygen. La clé privée doit être conservée sur le serveur 1 et la clé publique doit être stockée sur le serveur 2.

Ceci est complètement décrit dans la page de manuel de openssh, donc je vais en citer beaucoup. Vous devriez lire la section "Authentification". Le manuel openSSH devrait également être très utile: http://www.openssh.org/manual.html

Veuillez faire attention à ssh car cela affecte la sécurité de votre serveur.

De man ssh:

 ~/.ssh/identity
 ~/.ssh/id_dsa
 ~/.ssh/id_rsa
     Contains the private key for authentication.  These files contain
     sensitive data and should be readable by the user but not acces-
     sible by others (read/write/execute).  ssh will simply ignore a
     private key file if it is accessible by others.  It is possible
     to specify a passphrase when generating the key which will be
     used to encrypt the sensitive part of this file using 3DES.

 ~/.ssh/identity.pub
 ~/.ssh/id_dsa.pub
 ~/.ssh/id_rsa.pub
     Contains the public key for authentication.  These files are not
     sensitive and can (but need not) be readable by anyone.

Cela signifie que vous pouvez stocker votre clé privée dans votre répertoire personnel en .ssh. Une autre possibilité est de dire à ssh via le -i paramètre paramètre pour utiliser un fichier d'identité spécial. Aussi de man ssh:

 -i identity_file
     Selects a file from which the identity (private key) for RSA or
     DSA authentication is read.  The default is ~/.ssh/identity for
     protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for pro-
     tocol version 2.  Identity files may also be specified on a per-
     Host basis in the configuration file.  It is possible to have
     multiple -i options (and multiple identities specified in config-
     uration files).

C'est pour la clé privée. Vous devez maintenant introduire votre clé publique sur le serveur 2. Encore une fois, une citation de man ssh:

  ~/.ssh/authorized_keys
         Lists the public keys (RSA/DSA) that can be used for logging in
         as this user.  The format of this file is described in the
         sshd(8) manual page.  This file is not highly sensitive, but the
         recommended permissions are read/write for the user, and not
         accessible by others.

La façon la plus simple de réaliser cela est de copier le fichier sur le serveur 2 et de l'ajouter au fichier authorized_keys:

scp -p your_pub_key.pub user@Host:
ssh user@Host
host$ cat id_dsa.pub >> ~/.ssh/authorized_keys

L'autorisation via la clé publique doit être autorisée pour le démon ssh, voir man ssh_config. Habituellement, cela peut être fait en ajoutant l'instruction suivante au fichier de configuration:

PubkeyAuthentication yes
70
echox

J'ai utilisé ssh avec l'option -i pour ajouter votre clé ici.

Si vous voulez passer arg1, arg2 avec le fichier .sh, passez-le juste après le fichier .sh et utilisez un espace d'utilisation pour le séparer.

ssh -i home/avr/new.pem [email protected] "/var/www/beta/betatolive.sh mmin 30"

25
Avinash Raut

La première chose que vous devrez faire est de vous assurer que vous avez exécuté la commande keygen pour générer les clés:

ssh-keygen -t rsa

Utilisez ensuite cette commande pour pousser la clé vers le serveur distant, en la modifiant pour qu'elle corresponde au nom de votre serveur.

cat ~/.ssh/id_rsa.pub | ssh user@hostname 'cat >> .ssh/authorized_keys'
18
Anubhav Singh

Ajoutez la clé publique (id_[rd]sa.pub) pour votre machine source (d'où vous utilisez) vers ~/.ssh/authorized_keys fichier du serveur de destination pour le nom d'utilisateur dans lequel vous voulez ssh. Si vous avez perdu la clé publique, vous souhaiterez en créer une nouvelle avec ssh-keygen. Utiliser les arguments par défaut pour cela devrait être correct dans la plupart des cas. Si vous avez besoin d'instructions plus détaillées, il existe des milliers de didacticiels sur Google.

8
Kevin

ssh-copy-id - utilise les clés disponibles localement pour autoriser les connexions sur une machine distante

Utilisation ssh-copy-id sur le serveur 1, en supposant que vous avez la paire de clés (générée avec ssh-keygen):

ssh-copy-id -i ~/.ssh/id_rsa user@server2_hostname

Vous devriez maintenant être en mesure de ssh dans le serveur 2 avec ssh en utilisant la clé privée

ssh -i ~/.ssh/id_rsa user@server2_hostname

En effet, si vous cochez cat ~/.ssh/authorized_keys sur le serveur 2, vous verrez que la clé publique est ajoutée pour vous.

6
Sida Zhou