web-dev-qa-db-fra.com

Serveur distant SSH sur un port autre que 22 sans mot de passe

Je me connecte habituellement au serveur distant avec

ssh [email protected] -p 11000

et ensuite donner le mot de passe à chaque fois pour l'utilisateur. Comment devrais-je éviter d'entrer dans le mot de passe chaque fois que je connecte à l'aide de SSH?

16
Prabesh Shrestha

Premier, mettez ceci à ~/.ssh/config :

Host server
HostName server.com
Port 11000
User user

Vous serez en mesure de ssh server, puis tapez le mot de passe.

Deuxièmement, enregistrement ~/.ssh/ Pour voir si vous avez des fichiers nommés id_rsa et 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 aux clés un mot de passe ou non. Le fichier généré id_rsa.pub devrait ressembler à ceci:

ssh-rsa lotsofrandomtext utilisateur @ local

tiers, ssh sur le serveur, créez le fichier ~/.ssh/authorized_keys Si cela n'existe pas. Puis appendez le contenu de la ~/.ssh/id_rsa.pub que vous avez généré plus tôt ici. Cela pourrait vouloir dire copier le contenu du fichier dans votre presse-papiers, puis ouvrir ~/.ssh/authorized_keys Dans un éditeur de texte et coller la chose.

Alternativement, utilisez la commande ssh-copy-id server (remplacez server avec le nom de ~/.ssh/config). Cela fera la même chose que ci-dessus. Parfois, j'ai vu ssh-copy-id se coincer, alors je n'aime pas vraiment ça.

Vous devriez maintenant être capable de ssh avec juste ssh server, sauf si vous avez choisi de protéger votre clé privée avec une phrase secrète. Généralement, 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 de disque complet).

quatrième (si nécessaire si vous protégeez 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, il vous suffira de saisir la phrase secrète une fois par ordinateur de démarrage.

23
phunehehe
7
9000

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

4
Faheem Mitha