首先,我非常清楚的,有很多关于这个主题的问题。 我看过他们,但还是没能弄清楚我的情况一个合适的答案。
我想scp
整个~/cs###/assign1
DIR从地方到学校的家目录与shell脚本。 我的问题是,有没有在我的脚本的方式来等待密码提示,然后在我的密码模拟键盘事件“类型”?
这里是如何设置的关键一个真正的详细指南
首先,我非常清楚的,有很多关于这个主题的问题。 我看过他们,但还是没能弄清楚我的情况一个合适的答案。
我想scp
整个~/cs###/assign1
DIR从地方到学校的家目录与shell脚本。 我的问题是,有没有在我的脚本的方式来等待密码提示,然后在我的密码模拟键盘事件“类型”?
这里是如何设置的关键一个真正的详细指南
是SSH密钥不准? 这将是一个更好的解决方案。
使用 “sshpass”!
#!/bin/bash
sshpass -p "password" scp -r /some/local/path user@example.com:/some/remote/path
我不认为你可以很容易地做到这一点。 你可以做什么用公钥认证反而是。
东西沿着这些路线
ssh-keygen -t rsa
ssh school mkdir .ssh/
cat ~/.ssh/id_rsa.pub | ssh school "cat >>.ssh/authorized_keys"
(或dsa
)。
但是,嘿,这不是serverfault,是吗? ;-)
考虑使用钥匙或外部库。
我不认为这是可能的,否则(我希望我没有错),因为它规定自动蛮力侵扰和密码嗅探。
有库,可以做你想要的(使用SFTP协议,而不是调用SCP),如libssh 。
同样,我强烈建议键。
事情是这样的- http://code.google.com/p/enchanter/ ?
我同意,你应该使用的密钥。 但预计 ,如果你想在一个纯文本脚本文件进行硬编码密码可自动执行此过程的互动方面。
如果你可以安装在Windows计算机上的目录(例如,通过AFS,NFS或SMB这我大学的Windows实验室都做),你可以使用PSCP与-pw开关。
为什么不直接使用“-r”选项递归复制呢? 或者使用rsync呢?
你也可以使用公共密钥认证,这就需要对他们到底有没有帮助,只要你有一个实际的用户帐户。 见这
你不说你正在使用在家里和学校的平台。 假设Linux的不同,Cygwin或OS / X,你有几种选择:
对于选项(1),你会
对于第二个选项,SSH代理可以让你在每个会话的本地过程一次性缓存密码。 您可以设置过期时间
正如许多人已经表示,使用SSH密钥将是最安全和最佳途径。 如果其他人仍然在附近游荡,寻找帮助,在Ubuntu帮助有一个快速和直接的方式使用SSH密钥。
一旦您设置ssh-keygen
作为解释在这里 ,你可以做
scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/
其中id_rsa
是在生成本地密钥ssh-keygen
设置。
如果你想减少每次打字,你可以修改你.bash_profile
文件,并把
alias remote_scp='scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/
然后从你的终端做source ~/.bash_profile
。 之后,如果你键入remote_scp
在终端应该运行scp
没有密码的命令。
我发现没有办法做到这一点在我们的系统会自动 - 我ssh到一个设备,然后ssh到下一个设备,并在这两个,我无法安装任何其他软件。 所以我只能用现有的shell脚本命令。 我可以复制一个类型的所有文件,如* .png或一个接一个在我的脚本文件,不必每个单独的文件输入密码。 有一件事我做了一件有益的是键入密码到一个文件中,削减它,并能够将其粘贴到每一个提示,为每个文件。