我需要编写一个脚本来备份旧服务器上的数据库并将其移动到新服务器。我有大约 150 个数据库,所以需要自动化。我发现了以下内容:
$ mysqldump -u username -p'password' db-name | ssh [email protected] mysql -u username -p'password' db-name
这将允许我这样做,但是每次运行它时都需要我指定密码。如何让 ssh 命令接受密码参数?我试过了,ssh --help
但什么也没看到。
如果此命令不能接受密码,我可以用其他方法执行此操作吗?
答案1
您希望为此使用基于密钥的身份验证。SF 上有数十个关于此主题的问题,网络上还有无数教程可以指导您如何进行设置。
使用密钥验证不仅可以实现您需要的自动化,而且它还是一种更安全的验证方式(假设您在某个时候禁用密码验证)。
基本步骤如下:
ssh-keygen
以将要执行备份的用户身份在备份服务器上运行。这将生成密钥对(公钥和私钥部分)并将其存储在 中~/.ssh/
。- 将公钥复制到要备份的服务器。公钥文件中应该只有一行文本。将该公钥复制/粘贴到
~/.ssh/authorized_keys
您在该服务器上使用的任何用户中以执行备份。 - 完成此操作后,您应该能够从备份服务器连接到旧的数据库服务器,而无需使用密码。
答案2
您需要设置基于密钥的身份验证。使用您计算机上的私钥文件和接收方授权代理下列出的匹配公钥文件,您可以使用 ssh 登录而无需输入密码。