-load profile
如果我已在配置文件中指定了主机,是否有任何方法可以通过 pscp 发送文件而不指定主机?
我只想指定源路径、目标路径和配置文件,而不指定用户和主机,因为它已经在配置文件中。
示例:我想批量创建脚本,该脚本将从第一个参数给出的配置文件发送到主机的根目录,第二个参数给出的文件:
@echo off
pscp.exe -load %* SOMETHING:/
pause
但我不知道该用什么来代替SOMETHING
。我需要该脚本在 Windows 8.1 中创建发送到菜单条目(因为发送到菜单中的 Windows 快捷方式不能使用 %1、%2、%* 等,所以我必须创建脚本来重新排列 pscp 中的参数顺序。
答案1
如果我理解正确的话:
您正在使用 Windows 主机工作,以“winuser”帐户本地连接;
在这样的主机上,您可以成功使用“putty”通过 SSH 访问远程主机(我们称之为“remote_host”),并以远程“root”用户的身份进行身份验证。假设您的身份验证是“基于密码的”;
您有一个“remote_host”的 putty 配置文件,其中不仅包含远程主机名/ip_address,还包括“root”远程用户名;
您需要一个 BAT 文件,通过它您可以将某些内容从本地计算机“pscp”到“remote_host”,而无需在这样的 BAT 文件中明确报告“root”用户名。这是因为在 putty 配置文件中您已经指定了它。
这是正确的吗?
如果是,则需要如下 BAT 文件:
@echo off
pscp c:/tce-test.tce imac:/tmp
pause
将会将本地 Windows c:\tcp-test.tce 文件复制到 putty“imac”配置文件中指定的远程主机,使用相同“imac”putty 配置文件中指定的用户名连接到该主机,并将文件写入远程 /tmp 文件夹。
换句话说,正如pscp 文档
5.2.1.2 host
The name of the remote server, or the name of an existing PuTTY saved session. In the
latter case, the session's settings for hostname, port number, cipher type and username
will be used.
您可以使用已保存的 putty 会话的名称来代替主机参数。这正是您所需要的。
说了以上这些,我想补充以下几点考虑:
通过这种方法,你正在执行一个固定远程用户:putty 配置文件中指定的那个。这是一个你可能不喜欢的约束;
通过不在 putty 配置文件中指定用户名,pscp 将回退使用您在本地 windows 主机中使用的用户名(在上面的示例中为“winuser”):如果本地用户名在 SSH 服务器上定义了类似的用户名,那么这可能是一个优点;
避免输入 SSH 密码的一种安全且舒适的方法是依靠 SSH 密钥身份验证。在 Windows 中,您可以找到盛会代理可以在 Windows 启动时启动并控制(本地)用户身份验证密钥。一旦代理运行并控制密钥,所有 Putty 系列软件(Putty、Pscp 等)以及许多其他软件都可能正确地进行 SSH 身份验证,而无需提示用户输入任何密码(请不要将此视为安全漏洞,因为它恰恰相反:使用密钥,您加强您的身份验证模式);
如果你依赖密钥进行身份验证,你可以使用“-i”选项将 PSCP 指向正确的密钥文件
从:PuTTY 官方文档:
3.8.3.18 -i: specify an SSH private key
The -i option allows you to specify the name of a private key file in *.PPK
format which PuTTY will use to authenticate with the server. This option is only
meaningful if you are using SSH.
For general information on public-key authentication, see chapter 8.
This option is equivalent to the ‘Private key file for authentication’ box in the Auth
panel of the PuTTY configuration box (see section 4.20.7).