serveur distant ssh sur un port autre que 22 sans mot de passe

16

Je me connecte généralement au serveur distant avec

ssh [email protected] -p 11000

puis en donnant le mot de passe à chaque fois à l'utilisateur. Comment éviter de saisir le mot de passe chaque fois que je me connecte à l'aide de ssh?

Prabesh Shrestha
la source

Réponses:

23

Tout d'abord , mettez ceci dans ~/.ssh/config:

Host server
HostName server.com
Port 11000
User user

Vous pourrez ssh server, puis saisir le mot de passe.

Ensuite , vérifiez ~/.ssh/si vous avez des fichiers nommés id_rsaet id_rsa.pub. Sinon, vous n'avez aucune clé configurée, vous devez donc générer une paire à l'aide de ssh-keygen. Vous pouvez donner ou non un mot de passe aux clés. Le fichier généré id_rsa.pubdevrait ressembler à ceci:

ssh-rsa lotsofrandomtext utilisateur @ local

Troisièmement , ssh vers le serveur, créez le fichier ~/.ssh/authorized_keyss'il n'existe pas. Ajoutez ensuite le contenu de ce ~/.ssh/id_rsa.pubque vous avez généré précédemment ici. Cela peut signifier copier le contenu du fichier dans votre presse-papiers, puis ouvrir ~/.ssh/authorized_keysdans un éditeur de texte et coller la chose.

Vous pouvez également utiliser la commande ssh-copy-id server(remplacer serverpar le nom dans ~/.ssh/config). Cela fera la même chose que ci-dessus. Parfois, j'ai vu ssh-copy-idse coincer, donc je n'aime pas vraiment ça.

Vous devriez maintenant pouvoir utiliser ssh avec juste ssh server, sauf si vous avez choisi de protéger votre clé privée avec une phrase secrète. En règle générale, si vous n'utilisez pas de phrase secrète, vous devez protéger votre clé privée par d'autres moyens (par exemple, le cryptage complet du disque).

Quatrièmement (nécessaire uniquement si vous protégez votre clé privée avec une phrase secrète), mettez ceci dans~/.bashrc :

start_ssh_agent() {
    # Try to use an existing agent
    save=~/.ssh-agent
    if [[ -e "$save" ]]
    then
        . "$save" > /dev/null
    fi
    # No existing agent, start a new one
    if [[ -z "$SSH_AGENT_PID" || ! -e "/proc/$SSH_AGENT_PID" ]]
    then
        ssh-agent > "$save"
        . "$save" > /dev/null
        ssh-add
    fi
}
start_ssh_agent

Avec cela, vous n'aurez à saisir la phrase secrète qu'une seule fois par démarrage de l'ordinateur.

phunehehe
la source
2
Le «récit» devrait également inclure une discussion sur la façon d'éviter de taper cette phrase de passe embêtante tout le temps. :-) ssh-agent et / ou porte-clés sont des possibilités à considérer.
Faheem Mitha
1
De plus, si votre nom d'utilisateur sur l'hôte distant n'est pas le même que votre nom d'utilisateur sur l'hôte local, vous pouvez ajouter une User userligne à ~/.ssh/config.
cjm
@Faheem C'est bien, mais je n'ai jamais mis en place une telle chose, donc je ne pense pas que je suis en mesure d'instruire les autres à ce sujet :)
phunehehe
@FaheemMitha vous y allez :)
phunehehe
Hé, mieux vaut tard que jamais.
Faheem Mitha
7

Passez à l' authentification par clé .

9000
la source
Merci pour la suggestion . J'avais regardé les forums mais j'avais des problèmes avec le port ( 11000 au lieu de 22 ). Avec ssh -P 11000j'ai pu copier avec ssh. Merci beaucoup.
Prabesh Shrestha
4

En complément de la réponse de phunehehe, consultez le Guide Gentoo Linux Keychain pour un guide sur le trousseau . le trousseau utilise également ssh-agent . Le démon ssh-agent rend la phrase secrète disponible (elle devient indisponible lorsque le démon ssh-agent meurt) mais le trousseau reuses an ssh-agent between logins, and optionally prompts for passphrases each time the user logs in, pour citer le guide.

Faheem Mitha
la source