J'utilise Ubuntu 11.10. J'utilise ssh
quotidiennement pour me connecter à plusieurs serveurs, alors je mets leurs paramètres dans le .ssh/config
fichier comme ceci:
Host Home
User netmoon
Port 22
HostName test.com
Existe-t-il un moyen de mettre des mots de passe pour chaque connexion dans ce fichier, de sorte que, lorsque le serveur demande le mot de passe, le terminal entre son mot de passe et l'envoie au serveur?
J'ai besoin de ça parce que parfois je m'éloigne du PC et quand je reviens en arrière, tapez un mot de passe et appuyez sur Enterle terminal CONNECTION CLOSED
.
PS Je ne veux pas utiliser une paire de clés publique / privée.
command-line
bash
ssh
remote-access
Netmoon
la source
la source
SSH_ASKPASS
.Réponses:
Échanger la sécurité pour plus de commodité ne se termine jamais bien ...
Pourriez-vous utiliser
ssh-copy-id
leopenssh-client
paquet?De
man ssh-copy-id
:la source
Si vous ne voulez pas vraiment utiliser une paire de clés publique / privée, vous pouvez écrire un
expect
script pour saisir automatiquement le mot de passe en fonction de l'adresse de destination.Edit: Ce que je veux dire, c’est que vous pouvez avoir un script qui, d’une part, permet
expect
de saisir le mot de passe pour vous et, d’autre part, lit le mot de passe d’un utilisateur et d’un hôte donnés à partir d’un fichier de configuration. Par exemple, le script python suivant fonctionnera pour le scénario de journée ensoleillée:et le format du fichier de configuration serait le suivant:
Remarque: comme expliqué, le script python aurait besoin d'être beaucoup plus complexe pour gérer toutes les erreurs possibles et les messages de questions de ssh et toutes les URL possibles (dans l'exemple, il est supposé que ce sera quelque chose comme
user@host
, mais la partie utilisateur isn ' t utilisé la plupart du temps), mais l’idée de base serait toujours la même. En ce qui concerne le fichier de configuration, vous pouvez utiliser un fichier de configuration différent ou utiliser.ssh/config
et écrire votre propre code pour analyser ce fichier et obtenir le mot de passe d'un utilisateur et d'un hôte donnés.la source
Il existe également un
sshpass
programme pour cela. Comment utiliser:sshpass -p MyPa55word ssh [email protected]
la source
sshpass
au lieu desshpass
), vous venez de stocker votre mot de passe ("MyPa55word") dans le fichier historique de votre shell..ssh/config
, pourquoi pas dans l’histoire de shell aussi?brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
. En savoir plus: gist.github.com/arunoda/7790979read -s password; sshpass -p "$password" ssh [email protected]
. Cela empêchera le mot de passe de figurer dans l'histoireQue diriez-vous de ProxyCommand:
Vous pouvez utiliser à la
ssh -W
place denc
:la source
-W
option. Avez-vous une solution de contournement?test.com
exigence d’un mot de passe àHome
un autre. À quoi ça sert? Quel est le truc pour le faire fonctionner?Non, ce n'est pas possible, j'ai bien peur.
La seule vraie alternative est d'utiliser des clés privées, mais vous avez dit que vous ne vouliez pas (pourquoi pas?).
la source
Vous pouvez créer un simple remplacement de script ssh dans / usr / local / bin:
Et puis dans votre fichier ~ / .ssh / config, vous pouvez utiliser
la source
J'utilise une application de VanDyke Software appelée SecureCRT .
http://www.vandyke.com/products/securecrt/
Ce n'est pas gratuit, mais à un prix très raisonnable. Je l'utilise depuis des années (fonctionnant sous Windows ou utilisant Wine) pour l'accès à distance, l'émulation de terminal et la gestion de réseaux (dispersés). Ils ont finalement publié une version Linux native au début de 2011.
Il prend en charge les paramètres de connexion complexes (ou scripts), les mots de passe stockés (ou certificats), les sessions multiples avec onglets, etc.
Au démarrage, vous pouvez choisir la cible distante (et le protocole) dans une liste structurée (vue arborescente) de machines distantes (ou locales) stockées, ou simplement créer une connexion (qui est ensuite stockée).
Je l'ai trouvé particulièrement utile pour les sites distants dotés d'une authentification avancée, de ports non standard ou de la négociation d'accès par pare-feu.
Si vous effectuez beaucoup d'accès à distance (dans le cadre de votre rôle principal), cette application justifiera ses dépenses au cours du premier mois d'utilisation.
la source
En répondant à la question que vous avez posée, non, il n'est pas possible de configurer un mot de passe par défaut dans un fichier de configuration ssh.
Mais si en effet, comme vous le dites, c’est "parce que je me tiens parfois à l’écart du PC et que quand je reviens en arrière, tapez un mot de passe et appuyez sur Enterle terminal pour dire
CONNECTION CLOSED
" , pourquoi ne pas empêcher la fermeture de la session à la place? SSH peut maintenir les connexions en vie pour vous.la source
Merci, Arek pour l'inspiration ...
Plutôt que d'exécuter un autre processus shell, il ne s'agit que d'une fonction s'exécutant dans le shell bash actuel. Il exécute une seule
awk
commande pour analyser le fichier de configuration et déterminer s'il doit extraire le mot de passe d'une variable shell ou du mot de passe en texte clair écrit dans le fichier de configuration ssh (avecawk
aueval
lieu de àdescribe
cause de problèmes rencontrés en utilisantdescribe
).J'ai essayé de nombreuses manières d'utiliser
sshpass
directement dans unssh
fichier de configuration en utilisant ProxyCommand, mais rien ne semblait fonctionner comme prévu, sauf lorsque je pouvais me connecter à une boîte via RSA. Mais ensuite, je devais envoyer un mot de passe pour ouvrir mon répertoire crypté. Cependant, ma fonction ci-dessous semble fonctionner pour moi dans tous les cas, même pour Cygwin.Ensuite, une
~/.ssh/config
section ressemble à ceci:Si un
#Passvar
existe dans la section config, cela remplace le#Password
.$MYPASS_ENVVAR
est la variable d'environnement contenant votre mot de passe.Prendre plaisir!
la source
La réponse de @BrunoPereira à cette question montre une méthode alternative pour se connecter sans entrer explicitement un mot de passe et en évitant les clés ssh.
Vous pouvez créer un script, un alias ou une fonction dans votre
~/.bashrc
pour exécuter rapidement cette commande.De toute évidence, il convient de prendre en compte des considérations de sécurité avec cette approche.
la source
Voici ma variante élaborée de la réponse de @ ArekBurdach. Il offre les extensions suivantes:
ssh
ligne de commande; c'est à dire qu'il supporte également lassh <args> <host> <commands>
syntaxessh
ssh_config
scp
aussissh-wrapper
scp-wrapper
Installation
Définissez les alias dans votre
~/.bashrc
:Configuration
Avec la
IgnoreUnknown
directive,ssh
ne se plaint pas d'unePassword
directive nouvellement introduite , donc (contrairement à la réponse de @ ArekBurdach), nous pouvons faire en sorte que cela apparaisse comme une "vraie" configuration. Si vous n'aimez pas cela, il est facile de remplacer le script par celui qui a été commenté.la source
Si vous n'avez pas d'accès direct à la paire de clés, vous pouvez chiffrer le mot de passe sur votre ordinateur local.
Pour ce faire, chiffrez votre mot de passe en utilisant la clé en plus de la commande ProxyCommand de @Eric Woodruff.
Une façon de combiner est d'utiliser un tuyau:
où
la source
Il existe une légère variante d'une manière décrite dans le blog sur la façon d'utiliser
sshpass
qui peut être trouvée ici . Étant donné que vous avez un mot de passe crypté gpg (comment cela est décrit dans le blog), vous pouvez faire quelque chose comme ceci:et enregistrez simplement cette commande sous un alias dans votre
.bashrc
.Si vous souhaitez créer un tunnel via cette connexion, vous pouvez faire quelque chose comme:
la source