J'essayais de configurer un script de sauvegarde simple pour fonctionner automatiquement qui copierait un fichier d'une machine Windows à un SSH de Linux via SSH.
Comme beaucoup de simples tutoriels en ligne suggèrent que j'ai utilisé pscp
avec une clé privée générée avec puttygen
et placé la clé publique correspondante (présentée sous forme de copie/colle par mastic lui-même) dans le authorized_keys
fichier sous Linux. Cela semble assez simple considérant que cela a fonctionné dans 2 autres machines Windows à une machine Linux différente, avec la même configuration.
Il n'y a pas de problèmes de connectivité AFAICS et il en va de même pour SSH, en considérant que je suis capable de vous connecter en tant que root sur la machine Linux. Le fichier de configuration (sshd_config
) a le AuthorizedKeysFile
défini sur ~/.sshd/authorized_keys
.
L'erreur "Server refusé notre clé" continue de s'afficher, peu importe ce que je fais ... Les journaux ne montrent pas de problèmes d'authentification ...
Je prévois de faire plus de test et de réglage de la valeur logLevel
_ VERBOSE
ou DEBUG2
ou 3
mais compte tenu de l'urgence de la matière et de la Le fait que, pour le tester réellement sur la machine, je dois passer beaucoup de tracas en considérant la machine est dans un endroit assez éloigné de mon lieu de travail réel ...
Il semble que cela pourrait réellement être un problème lié aux versions SSH ou à quelque chose de la sorte ...
J'avais également envisagé la possibilité que je dois avoir la clé publique insérée dans le fichier authorized_keys
à l'intérieur de l'utilisateur .ssh
(/user/.ssh/
) en plus de l'avoir en racine Dossier (n'a pas beaucoup de sens en raison de la valeur de AuthorizedKeysFile
in sshd_config
).
J'ai fait quelque chose avec le SSH Server's LogLevel
Set O _ VERBOSE
_ mais je ne pouvais pas récupérer les informations (problèmes de responsabilité), donc ici, c'est plutôt un journal de sortie/débogage d'une autre source qui Semble afficher la même erreur ...
Connection from 192.168.0.101 port 4288
debug1: Client protocol version 2.0; client software version OpenSSH_4.5
debug1: match: OpenSSH_4.5 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.5
debug1: permanently_set_uid: 22/22
debug1: list_hostkey_types: ssh-rsa,ssh-dss
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST received
debug1: SSH2_MSG_KEX_DH_GEX_GROUP sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_INIT
debug1: SSH2_MSG_KEX_DH_GEX_REPLY sent
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: KEX done
debug1: userauth-request for user dcowsill service ssh-connection method none
debug1: attempt 0 failures 0
debug1: PAM: initializing for "dcowsill"
debug1: userauth-request for user dcowsill service ssh-connection method publickey
debug1: attempt 1 failures 1
debug1: test whether pkalg/pkblob are acceptable
debug1: PAM: setting PAM_RHOST to "192.168.0.101"
debug1: PAM: setting PAM_TTY to "ssh"
debug1: temporarily_use_uid: 1052/105 (e=0/0)
debug1: trying public key file /testuser/.ssh/authorized_keys
debug1: restore_uid: 0/0
debug1: temporarily_use_uid: 1052/105 (e=0/0)
debug1: trying public key file /testuser/.ssh/authorized_keys
debug1: restore_uid: 0/0
Failed publickey for dcowsill from 192.168.0.101 port 4288 ssh2
debug1: userauth-request for user dcowsill service ssh-connection method publickey
debug1: attempt 2 failures 2
debug1: test whether pkalg/pkblob are acceptable
debug1: temporarily_use_uid: 1052/105 (e=0/0)
debug1: trying public key file /testuser/.ssh/authorized_keys
debug1: restore_uid: 0/0
debug1: temporarily_use_uid: 1052/105 (e=0/0)
debug1: trying public key file /testuser/.ssh/authorized_keys
debug1: restore_uid: 0/0
Failed publickey for dcowsill from 192.168.0.101 port 4288 ssh2
Connection closed by 192.168.0.101
Il semble que le programme tente d'ouvrir le fichier authorized_keys
avec des autorisations du propriétaire, mais il n'y a plus d'informations sur ce qui générera le problème. Une dernière chose, j'ai vérifié et vérifié les autorisations de fichier et de foleur et ils sont tous ok.
Certaines raisons possibles que je connais sont liées à des autorisations de fichier qui sont principalement trop larges et particulièrement que je peux rappeler deux raisons.
.ssh
et/ou autorisations_Keys Les autorisations de fichiers (les définir à 700/600 respectivement si elles sont plus que cela)la raison exacte de la clé est refusée en démarrant un serveur SSHD supplémentaire sur un autre port avec des options de débogage et de non-démon si vous disposez d'un accès root sur le serveur, vous pouvez exécuter:
Sudo `which sshd` -p 2020 -Dd
sur le serveur
Après avoir quitté cela, courez-vous SSH:
ssh -p 2020 -i /path/to/refusedkey
La sortie du serveur vous indiquera la raison du refus
un chèque évident
format d'autorisations_Keys ssh-rsa AA...long_line_of_char comment
Putty Gen un jour donnant une autre forme.
autorisation:
la touche doit être déployée ID ~ racine ou in ~ utilisateur en fonction de l'utilisateur que vous vous connectez.
certains moins évidents:
PermitRootLogin no
ou commenter)emplacement par défaut pour autorisations_Keys AuthorizedKeysFile %h/.ssh/authorized_keys
exemple d'emplacement personnalisé pour Autherized_Keys AuthorizedKeysFile /foo/bar/authorized_keys.%h
/foo/bar
dir.authorized_keys.root
pour la racineauthorized_keys.user
Pour l'utilisateur, le fichier appartient à la racineCourir:
Sudo `which sshd` -p 2020 -Dd
en tant que root en une session et dans une autre session, courez:
ssh -p 2020 -i /path/to/refusedkey refusedkeyusername@hostname
Travaillé pour moi pour avoir la raison. Mes autorisations d'utilisateur n'ont pas été définies sur 700. J'ai eu le O/P comme ci-dessous
debug1: trying public key file /home/userid/.ssh/authorized_keys
debug1: fd 4 clearing O_NONBLOCK
Authentication refused: **bad ownership** or modes for directory /home/sapadmin
debug1: restore_uid: 0/0
Failed publickey for userid from 172.31.2.12 port 27382 ssh2: RSA
Connection closed by 172.31.2.12 [preauth]
d'accord! Une des raisons est que le répertoire de base d'utilisateurs du fichier passwd n'est pas le répertoire à partir duquel vous souhaitez copier les fichiers. Seule la racine peut copier de chaque ware, les autres utilisateurs non!
par exemple, si vous souhaitez copier/copier répertoire, assurez-vous que l'utilisateur que vous souhaitez authentifier avez le répertoire de maison défini sur/sauvegarder (en possession de celui-ci), pour SCP pour trouver le chemin correspondant à autorisé_keys "/BackUp/.SSH/ autorisé_key "
deuxièmement: Assurez-vous de copier un fichier Authorized_Keys exactement le texte du générateur de clé de mastic avec "SSH-RSA AA ...." à une seule ligne. Vous pouvez supprimer tout commentaire comme "rsa-key-xxx .." à partir de la fin. Le fichier autorisé_keys doit posséder un utilisateur/groupe bonne chance!
Dans mon cas, je l'ai résolu en faisant:
chmod 700 myuserdir/.ssh
chmod 600 myuserdir/.ssh/authorized_keys
Dans la zone Windows, au lieu d'utiliser PutTygen pour générer la clé privée RSA, j'ai téléchargé Cygwin de Cygwin.org. Il offre quelques packages par défaut. J'ai modifié le package net pour installer OpenSSH. Cela a notamment installé le programme SSH-Keygen. Alors, j'ai couru:
ssh-keygen -t rsa
et a quitté le code d'accès videid_rsa
dans c:/cygwin/home/myusername/.ssh
id_rsa
(pas le public id_rsa.pub
).PuTTY.ppk
généré.Maintenant, je peux me connecter sans entrer ni utilisateur ni mot de passe.
À partir du journal du serveur de débogage que vous avez partagé, il semble que la touche que vous avez spécifiée sur le côté client ne correspond à aucune des personnes disponibles dans /Testuser/.ssh/authorize_keys.
si /testuser/.ssh/Authorized_Keys est l'emplacement prévu que vous devriez vérifier qu'il existe une ligne de clé publique qui correspond à votre clé privée utilisée sur le côté client - c'est-à-dire si vous utilisez Say, id_rsa sur la vérification du client ID_RSA.PUB à côté de Il correspond exactement à l'une des lignes de /testuser/.ssh/authorized_keys.
Si vous doutez de l'emplacement du fichier agréé_keys sur le serveur, vous devez déterminer si vous spécifiez le bon nom d'utilisateur du côté du client.