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?
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
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"
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'
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.
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.