【发布时间】:2014-02-24 21:33:31
【问题描述】:
我的目标是通过脚本将文件夹从远程服务器复制到新的本地计算机。我从 deploystudio 运行脚本,所以这一切都是在 root 中完成的。所以脚本应该是
1) 在本地机器上创建 .ssh 和 authorized_keys 文件夹
2) 将远程服务器的 id_dsa.pub 粘贴到本地的 authorized_keys 文件中
3) 将 Folder1 从远程服务器安全复制到本地计算机的桌面
Folder1 无法复制。如果我 sudo SCP 行并手动运行它,它会在我输入密码后工作。
user="name"
id_dsa.pub="ssh-dss AAAAB3NzaC1kc3MAAACBAPpK/k7Yk............"
mkdir /Users/${user}/.ssh
chmod 0700 /Users/${user}/.ssh
touch /Users/${user}/.ssh/authorized_keys
chmod 0644 /Users/${user}/.ssh/authorized_keys
/bin/cat > "/Users/${user}/.ssh/authorized_keys" << EOL
${id_dsa.pub}
EOL
scp -r remoteserver@192.168.1.39:/Users/admin/Desktop/Folder1 /Users/$user/Desktop
【问题讨论】:
-
为什么需要用
sudo填写authorized_keys?无论如何,您都以 root 身份运行。您确定 192.168.1.39 服务器上的用户名应该是remoteserver? -
哎呀,我复制了错误的行。我在终端中使用 sudo 进行测试。我更新了代码。它假设是 /bin/cat > "/......../"
-
好吧,remoteserver 只是一个别名,因为我不想提供真实信息。当我在终端中时,我能够成功 scp,但它在这个脚本中失败了。我不知道为什么。
-
等号周围不应有空格,请尝试
variable="some string"并始终引用您的字符串和变量