如何从变量中读取密码?

我试图将我的文件移动到另一个位于其他地方的系统,使用此命令:

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 
Interesting Posts