来自服务器的scp文件来自Bash脚本内部

时间:2013-04-24 02:04:46

标签: linux bash shell scp

我通常使用scp,如此:

myUser@myMachine:~/myapp$ scp devops@myserver.org:/path/to/bin/*.derp .
devops@myserver.org's password: ********
herp1.derp                                100%  732     0.7KB/s   00:00    
herp2.derp                                100%  215     0.2KB/s   00:00    
herp3.derp                                100%  682     0.7KB/s   00:00    
myUser@myMachine:~/myapp$

我现在想写一个Bash脚本,除其他外,它为我做了这个,但是密码存储在脚本中,并且脚本不会询问用户输入它:

sh dostuff.sh

只需运行scp所有*.derp个文件到用户的本地目录。

所以我问:如何从我的脚本中提供scp的密码?提前致谢!

1 个答案:

答案 0 :(得分:2)

不是在shell脚本中对密码进行硬编码,而是使用SSH密钥,它更容易和安全。

$ scp -i ~/.ssh/id_rsa devops@myserver.org:/path/to/bin/*.derp .

假设您的私钥位于~/.ssh/id_rsa

生成公钥/私钥对:

$ ssh-keygen -t rsa

以上将生成2个文件,~/.ssh/id_rsa(私钥)和~/.ssh/id_rsa.pub(公钥)

设置SSH密钥以供使用(一次性任务): 复制~/.ssh/id_rsa.pub的内容,然后在~devops/.ssh/authorized_keys服务器的新行中粘贴新的myserver.org行。如果~devops/.ssh/authorized_keys不存在,请随时创建它。

提供清晰的操作指南here