我通常使用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
的密码?提前致谢!
答案 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。