Mon script exécute la commande ci-dessous:
command = os.system('rdiff-backup --exclude "**.dropbox**" --exclude "**.ini**" --remote-schema "ssh -o UserKnownHostsFile=/cygdrive/c/Users/Adam/.ssh/known_hosts -i /cygdrive/c/Users/Adam/.ssh/id_rsa %s -p1019 rdiff-backup --server" C:/Users/Adam/Dropbox [email protected]::/mnt/disk1/Adam/Dropbox')
Comme vous pouvez le constater, je l'ai dit où chercher le dossier connu_hosts et l'a dit où la clé était - sans ces deux questions, je serais constamment interrogée sur l'ajout de mon serveur à connaître, chacun et être requis pour entrer le mot de passe. , pour chaque exécution. C'est une honte SSH ne pouvait pas les localiser de manière indépendante, mon hypothèse est qu'elle a toujours fonctionné à partir du même répertoire, C:\Users\Adam\.ssh
?
Anywho, le seul message d'erreur que je reçois maintenant est Could not create directory '/home/Adam/.ssh'
- J'ai assuré ma variable à domicile pour que mon utilisateur actuel soit correct, mais il n'arrive toujours pas à trouver le dossier .sh. Le script n'exécute aucun problème, c'est juste ce message d'erreur ennuyeux. J'utilise le paquet SSH de Cygwin, je ne suis pas sûr à quel point cela est important? En outre, j'ai généré le .ssh
Répertoire utilisant le fichier SSH.EXE de RSYNC, pas Cygwin's. Est-ce important?
J'ai trouvé la réponse à mes solutions dans ce blog post .
"Premier localiser le fichier appelé passwd
dans votre C:\path\to\cygwin\etc
répertoire et ouvrez-le avec WordPad. Deuxièmement, remplacez le texte /home/YOUR_NAME
avec /cygdrive/c/Documents and Settings/YOUR_NAME
Enfin, enregistrez le fichier. "
Mettre à jour
Certaines personnes ont signalé que l'ajout de% userProfile% en tant que valeur pour une variable système appelée "Accueil" fonctionne.
Pour ces tumumweeds de 2019 si vous avez tout essayé ici et que rien ne fonctionne si votre nssswitch.conf
Dossier a:
db_home: windows
Dans un terminal Cygwin exécutant en mode administrateur, essayez:
export CYGWIN=winsymlinks:native
mkdir -p /home/$USER
ln -s $HOME/.ssh /home/$USER
Détails supplémentaires
En 2015, Cygwin a cessé de créer un /etc/passwd
Fichier par défaut:
Cygwin peut désormais générer des entrées passwd/groupe directement à partir de bases de données utilisateur Windows (Sam local ou Active Directory), permettant ainsi d'exécuter Cygwin sans avoir à créer/etc/etc/etc/groupe de fichiers. Introduisez le fichier /etc/nsswitch.conf pour configurer la manutention de Passwd/Group.
Pour Bordingcase qui nécessitent d'utiliser/etc/passwd et/etc/Group de fichiers, modifiez mkpasswd/mkgroup pour générer des entrées passwd/groupe compatibles avec les entrées en lecture de SAM/AD.
De https://github.com/alexpux/cygwin/blob/master/winSup/cygwin/release/1.7.34#l4-l11
Comme indiqué ci-dessus mkpasswd
commande et le etc/passwd
file était un moyen de "connecter" avec Windows Active Directory.
Si vous utilisez un ordinateur d'entreprise utilisant Active Directory, parfois quelque part le long de la ligne Active Directory et/ou Cygwin omettez pour communiquer et vous finissez par perdre l'entrée qui contrôle dans lequel le répertoire HOME
est défini. Pour tester cette exécution mkpasswd
et vérifier si votre nom d'utilisateur apparaît dans la liste.
Après avoir exécuté mkpasswd
et vous ne voyez pas votre nom d'utilisateur, par défaut, Cygwin's ssh
recherchera le .ssh
Dossier en /home/$USER/.ssh
. Ce répertoire n'existe pas si vous configurez Cygwin avec db_home: windows
qui pointe le répertoire HOME
à C:\Users\$USER
. Donc, les commandes ci-dessus corrigent ceci par:
# Use windows native symlinks (only works in while running as admin)
export CYGWIN=winsymlinks:native
# Create missing directory structure (C:\[Cygwin install directory]\home\$USER)
mkdir -p /home/$USER
# Link C:\User\$USER\.ssh -> C:\[Cygwin install directory]\home\$USER\.ssh
ln -s $HOME/.ssh /home/$USER
Ces commandes sont un piratage et la solution réelle impliquerait de déterminer pourquoi mkpasswd
_ ne permet pas de créer une entrée pour l'utilisateur. Cependant, cela impliquerait probablement de creuser à la fois dans Active Directory et Cygwin :(.