我试图将数据库从一台服务器复制到另一台服务器。 我尝试使用下面的命令,并inputssh密码。 如果我input一个服务器的密码,它会抱怨另一个,反之亦然。
ssh root@server1 mysqldump --databases db | ssh root@server2 mysql
我设法通过在我的计算机上临时保存转储来执行转移,只是想知道是否有办法让这个工作。
使用ssh-keygen,将生成的.ssh /文件复制到其他服务器,将内容追加到./.ssh/authorized_keys文件中,然后就可以在没有任何密码的情况下ssh进入其他服务器。
使用密钥authentication绝对是一个有效的方法去做,我可能会做。 如果由于某种原因你不能这样做,你可以在中间机器上放一个命名pipe道,而不是在那里存储文件。
mkfifo relaypipe ssh root@server1 mysqldump --databases db > relaypipe #auth & send to background ssh root@server2 mysql < relaypipe
如果出于某种原因,您不能使用密钥authentication,并要求input两个密码来完成此操作,则可以使用FIFO:
mkfifo myfifo # In terminal session one, or a screen window, etc. ssh root@server2 mysql < myfifo # In terminal session two: ssh root@server1 mysqldump --databases db > myfifo