如何从变量中读取密码?
我试图将我的文件移动到另一个位于其他地方的系统,使用此命令:
rsync -avrz src destination
它工作正常。 但我需要的是将此命令放在shell脚本中并运行它:
#! /bin/sh rsync -avrz srcfilelocation destination
运行时,它会询问目标系统密码。 我知道密码并手动提供。
现在我决定将密码分配给环境变量,例如pswd="destination system password"
。 我需要我的shell脚本来读取此变量的密码。 如何编写脚本来执行此操作?
当您可以使用名为Public Key Infrastructure的东西时,您无需担心密码。
这是一种使用公钥和私钥对用户进行身份validation的方法。 您存储私钥的副本,另一台服务器具有您的公钥的副本。 当您登录时,他们会彼此进行一些对话,确认公钥和私钥匹配,这样您就可以在不输入密码的情况下登录。
只要您不与任何人共享您的私钥,这就像任何东西一样安全!
设置它非常简单。
在源计算机上,运行ssh-keygen。 您可以接受所有默认值,这足以达到此目的。 它会在〜/ .ssh文件夹中生成私有(id_rsa)和公共(id_rsa.pub)键。
现在您想获取服务器上的公钥,这也很容易。
从源pc,运行ssh-copy-id username @ servername。
这将在服务器的〜/ .ssh / authorized_keys中放置id_rsa.pub内容的副本。
现在,如果您从源到目的地ssh,您将无需密码即可进入。
这听起来如何影响rsync? Rsync使用ssh!
请记住:永远不要放弃你的私人钥匙(id_rsa)或有人可以假装你。
我建议使用PKI / SSH密钥,但如果需要,可以设置如下环境变量:
export RSYNC_PASSWORD="yourPasswordHere"
请注意,这确实存在一些潜在的安全隐患,并且仅在当前会话中可用。
要将其添加到用户的会话中,默认情况下:
echo 'export RSYNC_PASSWORD="yourPasswordHere"' >> ~/.bashrc
或者,您可以使用密码文件来存储密码。 请注意,密码是纯文本密码,因此您应该采取措施保护密码。
echo "yourPasswordHere" > yourPasswordFile.txt rsync -avrz --password-file yourPasswordFile.txt src dest