2013-07-31 14 views
0

我有一个脚本,用于创建数据库转储并将文件从Ubuntu服务器传输到Linux机器,我使用scp进行文件传输,每次都提示输入密码,需要自动化它。我在Ubuntu机器上使用Linux的Rsa公钥作为authorized_keys,当我scp它说权限被拒绝(publickey,gssapi-keyex,gssapi-with-mic,密码)检查权限和每一件事情如passwordAuthontication关闭等没有运气。SSH和代理Ubuntu文件传输自动化

我可以在我的脚本中编写密码并使用,而不考虑安全性,因为我将提供700许可,除我以外,没有人可以访问它。

这是我的脚本:

export DB_DUMP_DIR=/home/database_dump 
export DB_NAME=database_name_$(date '+%Y_%m_%d').sql 

mysqldump -u root mysql > ${DB_DUMP_DIR}/${DB_NAME} 
if [ $? -eq 0 ];then 
scp -i /root/.ssh/id_rsa ${DB_DUMP_DIR}/${DB_NAME} [email protected]: 
else 
    echo "Error generating database dump" 
fi 

回答

0

浮现在脑海中的第一件事情是

  • 是否将服务器设置为允许密钥认证的认证? (这是PubkeyAuthentication yessshd_config
  • 服务器是否允许RSA密钥? (这可能看起来像您的sshd_config中的RSAAuthentication no
  • 是否将根目录的~/.ssh目录设置为700? (或更严格)
  • 根的~/.ssh/authorized_keys设置为600? (或更严格)
  • 远程机器是否允许您以root身份登录? (sshd_config中的PermitRootLogin no选项)
  • 难道是真的您在这里发送的正确密钥?您是否尝试过使用您创建的不同密钥来测试它?

最后,将密码写在脚本中永远不是一个好主意。只是不要这样做。相反,请使用密钥验证解决您遇到的问题。