utiliser.netrc avec sftp
3 réponses
simplement dit, vous ne pouvez pas utiliser .netrc
sftp
,scp
ou ssh
. Ces produits font partie de la norme OpenSSH, qui a le mot clé "secure" dans le nom. Ce n'est pas une pratique sécurisée d'automatiser les connexions de la façon
l'Autorisation
pour l'une des deux premières alternatives, vous voudrez configurer les clés et l'échange entre eux. Sur l'ordinateur que vous connectez à partir d'exécuter ssh-keygen
, pour vos besoins il sera beaucoup plus simple si vous ne donnez pas à la clé une phrase de passe, bien que ce soit risqué. Vous avez maintenant deux fichiers dans .ssh/
, un id_rsa
et id_rsa.pub
. De ces id_rsa
doit être tenu secret ou sécurisé (d'où le mot de passe). Le fichier pub est en fait une ligne de texte. Cette ligne peut être ajoutée à la ~/.ssh/authorized_keys
fichier du côté de l'hôte récepteur. Vous pouvez ajouter la clé au fichier manuellement; mais il y a aussi ssh-copy-id
commande de raccourci qui fait justement cela, en prenant également soin des permissions de fichiers. Après avoir autorisé une clé, vous devriez être en mesure de vous connecter à partir de la machine avec la clé privée de la machine qui a la clé publique autorisée, lorsque vous vous connectez en tant qu'utilisateur approprié. Tester avec ssh -v
. Si vous avez entré un mot de passe, on vous le demandera; si vous ne l'avez pas fait, vous êtes maintenant prêt à automatiser. Vous pouvez utiliser un ssh-agent
maintenir active une clé privée entre les sessions seule la saisie du mot de passe une fois. Si vous réalisez plusieurs ssh
hops, l'option de rediriger les agents permettra la clé privée à partir de la boîte source d'origine ssh-agent
à communiquer à chaque saut. Personnellement, je trouve cela exagéré, et suggère donc de ne pas utiliser une phrase de passe.
Maintenant que vous pouvez faire ssh
,sftp
et scp
connexions sans entrer de mot de passe ou mot de passe, vous êtes prêt à automatiser le reste.
Alternative 1,
est la solution privilégiée étiez-vous convertir votre .netrc
macro vers un script shell ou un autre script appelant quelques-uns scp
commandes. Ceci est similaire à l'automatisation de toutes vos connexions ftp curl
ou wget
. E. G.:
scp -qr $USER@$REMOTE_HOST:$PATH_FILE_OR_DIR $LOCAL_PATH_FILE_OR_DIR #download
scp -qr $LOCAL_PATH_FILE_OR_DIR $USER@$REMOTE_HOST:$PATH_FILE_OR_DIR #upload
scp -pqr $USER@$REMOTE_HOST:$PATH_FILE_OR_DIR $USER@$REMOTE_HOST2:$PATH_FILE_OR_DIR #mirror between separate hosts.
ssh $USER@$REMOTE_HOST chmod 644 $PATH_FILE #set permissions
la Variante 2,
en utilisant sftp
comme vous l'avez mentionné, vous pouvez créer un script expects
la commande, avec un fichier batch-b
option, ou par des conduites commandes dans sftp
. C'est un peu plus semblable à un .netrc
macro, mais n'a aucun avantage sur l'alternative 1. Je vais vous montrer un exemple de ce dernier:
#!/bin/sh
echo "OK, starting now..."
sftp -b /dev/fd/0 remotehost <<EOF
cd pub
ascii
get filename.txt
bye
EOF
la Variante 3,
utiliser sftp
programme qui casse la norme SSH en vous permettant de stocker des paramètres de connexion tels que le mot de passe. Par exemple, en utilisant cyberduck et AppleScript, ou FileZilla et une file d'attente.
note en Outre:
Il y a un ~/.ssh/config
le fichier vous pouvez utiliser pour donner des noms d'hôtes plus courts, définir des paramètres de redirection, des répertoires par défaut, des noms d'utilisateurs par défaut, et des identités spécifiques pour chaque hôte. J'aime aussi l' -l
option de scp
ce qui limite mon taux de transfert à quelque chose de plus raisonnable.
P.S. on croirait qu'il existe un outil pour convertir .netrc
macros aux scripts shell (alternative 1 styled). Mais je n'ai rien trouvé. Est-ce une petite occasion d'affaires de niche?
si vous pouvez utiliser une authentification sans mot de passe sur votre machine (ce qui pourrait être interdit par votre sysadmin, mais n'est généralement pas le cas), alors vous pouvez commodément utiliser scp dans un script shell plutôt que des macros .netrc. Mais si vous devez taper un mot de passe pour vous connecter à la machine distante, alors j'utiliserais le "here script" (le bit avec EOF dedans) pour faire la magie. Vous pouvez utiliser un script shell pour préparer le script ftp s'il change de temps en temps.
essayez de regarder scp, car vous pouvez utiliser passwordless login (touches ssh) pour faire cela.
vous pourriez être en mesure d'utiliser les mêmes techniques avec SFTP, Je ne suis pas sûr.