我一直在使用以下scp
命令:
SET cfolder=c:\temp\%currentdate%
scp -r [email protected]:/opt/logs/test.log %cfolder%\test_K1B.log
上面的问题是它不断要求输入密码。有没有办法自动执行此命令而无需输入用户名和/或密码?
由于我是唯一运行该命令的人,并且它将在我的本地机器上,所以我不介意将用户名/密码组合保存在文本文件中。
另一个问题是,我没有服务器上的写入权限。我只能读取和复制文件。另外,我不想登录服务器,造成混乱。
我的目的是将其设置为一个自动脚本,执行从远程服务器到临时目录的文件复制。
答案1
您可以使用WinSCP 脚本。WinSCP 支持在其脚本中提供密码(尽管它也支持公钥认证)。
winscp.com /ini=nul /command ^
"open sftp://username:[email protected]/" ^
"get /remote/path/* C:\local\path\" ^
"exit"
WinSCP GUI 可以生成批处理文件模板喜欢你这样。
(我是 WinSCP 的作者)
答案2
C:\Users\ching\proj\fdGlIfFix\src\BP>pscp PS104T ching@moscow_host:/home/ching/tmp/
ching@moscow_host's password:
PS104T | 44 kB | 44.4 kB/s | ETA: 00:00:00 | 100%
C:\Users\ching\proj\fdGlIfFix\src\BP>pscp -i c:\users\ching\random.ppk PS104T ching@moscow_host:/home/ching/tmp/
PS104T | 44 kB | 44.4 kB/s | ETA: 00:00:00 | 100%
这是你想要的吗?试试 PuTTY 的 pscp 及其密钥生成器
http://www.chiark.greenend.org.uk/~sgtatham/putty/
假设您的远程服务器信任您的 Windows,即已将生成的公钥部署到您的远程服务器,您可以指定您的私钥而不是输入密码。
答案3
我刚刚查了一下 ssh scp......因为我听说 scp 功能非常有限。
尝试 SFTP。
从谷歌总结的一个链接说“SFTP 是一种类似于 FTP 的文件传输协议,但使用 SSH 协议作为网络协议”和“SCP 仅用于传输文件,不能执行其他操作,例如列出远程目录或删除文件,而 SFTP 可以执行这些操作”
好吧,SSH 允许您自动登录(参见 ssh-copy-id),因此只要您可以自动使用 SSH,您就应该能够正常使用 SFTP。
答案4
SET cfolder=c:\temp\%currentdate%
scp -p linuxpwd -r [email protected]:/opt/logs/test.log %cfolder%\test_K1B.log
您可以使用此-p
选项来输入密码。这不是安全的方法,但正如您所说,您可以这样做。