PuTTY用户手册(十一)

第7章:使用命令行连接工具Plink

Plink是一种类似于UNIX ssh的命令行连接工具。
它主要用于自动化操作,例如让CVS访问远程服务器上的存储库。

如果您想在控制台窗口中运行交互式会话,那么Plink可能不是您想要的。

7.1开始plink

Plink是一个命令行应用程序。
这意味着您不能双击它的图标来运行它,而是必须打开一个控制台窗口。
在Windows 95、98和ME中,这被称为“MS-DOS提示符”,在Windows NT、2000和XP中,这被称为“命令提示符”。
它应该可以从“开始”菜单的“程序”部分获得。

为了使用plink,文件plink.exe将需要在您的路径上或当前目录中。
要将包含Plink的目录添加到PATH环境变量中,请在控制台窗口中输入:

set PATH=C:\path\to\putty\directory;%PATH%

这只适用于特定控制台窗口的生命周期。
要在Windows NT、2000和XP上更永久地设置路径,请使用系统控制面板的Environment选项卡。
在Windows 95、98和ME上,您需要编辑AUTOEXEC。
BAT包含一个set命令,如上面的命令。

7.2使用plink

本节描述如何将Plink用于交互式登录和自动化流程。

一旦你有一个控制台窗口可以输入,你就可以自己输入plink来显示一个使用信息。
这告诉你你正在使用的Plink版本,并给你一个简短的总结如何使用Plink:

Z:\sysosd>plink
Plink: command-line connection utility
Release 0.70
Usage: plink [options] [user@]host [command]
       ("host" can also be a PuTTY saved session name)
Options:
  -V        print version information and exit
  -pgpfp    print PGP key fingerprints and exit
  -v        show verbose messages
  -load sessname  Load settings from saved session
  -ssh -telnet -rlogin -raw -serial
            force use of a particular protocol
  -P port   connect to specified port
  -l user   connect with specified username
  -batch    disable all interactive prompts
  -proxycmd command
            use 'command' as local proxy
  -sercfg configuration-string (e.g. 19200,8,n,1,X)
            Specify the serial configuration (serial only)
The following options only apply to SSH connections:
  -pw passw login with specified password
  -D [listen-IP:]listen-port
            Dynamic SOCKS-based port forwarding
  -L [listen-IP:]listen-port:host:port
            Forward local port to remote address
  -R [listen-IP:]listen-port:host:port
            Forward remote port to local address
  -X -x     enable / disable X11 forwarding
  -A -a     enable / disable agent forwarding
  -t -T     enable / disable pty allocation
  -1 -2     force use of particular protocol version
  -4 -6     force use of IPv4 or IPv6
  -C        enable compression
  -i key    private key file for user authentication
  -noagent  disable use of Pageant
  -agent    enable use of Pageant
  -hostkey aa:bb:cc:...
            manually specify a host key (may be repeated)
  -m file   read remote command(s) from file
  -s        remote command is an SSH subsystem (SSH-2 only)
  -N        don't start a shell/command (SSH-2 only)
  -nc host:port
            open tunnel in place of session (SSH-2 only)
  -sshlog file
  -sshrawlog file
            log protocol details to a file
  -shareexists
            test whether a connection-sharing upstream exists

Z:\ sysosd >plink
Plink: command-line connection utility
Release 0.70
Usage: plink [options] [user@]host [command]
(“host” can also be a PuTTY saved session name)
Options:
-V 打印版本信息并退出
-pgpfp 打印 PGP 密钥指纹并退出
-v 显示详细的消息
-load sessname 从保存的会话中加载设置
-ssh -telnet -rlogin -raw -serial
强制使用特定的协议
-P port 连接到指定的端口
-l user 使用指定的用户连接
-batch 禁用所有批处理交互提示
-proxycmd command
使用 ‘command’ 作为本地代理
-sercfg configuration-string (e.g. 19200,8,n,1,X)
指定串行配置(仅串行)
以下选项仅适用于SSH连接
-pw passw 使用指定密码登录
-D [listen-IP:]listen-port
动态转发端口
-L [listen-IP:]listen-port:host:port
将本地端口转发到远程地址
-R [listen-IP:]listen-port:host:port
将远程端口转发到本地地址
-X -x 启用/禁用 x11转发
-A -a 启用/禁用 代理转发
-t -T 启用/禁用pty分配
-1 -2 强制使用特定协议版本
-4 -6 强制使用IPV4 或IPV6
-C 启用压缩
-i key 用于用户身份验证的私有密钥文件
-noagent 禁用Pageant
-agent 允许使用Pageant
-hostkey aa:bb:cc:…
手动指定主机键(可能重复)
-m file 从文件中读取远程命令
-s 远程命令是SSH子系统 (SSH-2 only)
-N 不启动shell/command (SSH-2 only)
-nc host:port
open tunnel 取代会话 (SSH-2 only)
-sshlog file
-sshrawlog file
将协议细节记录到文件中
-shareexists
测试链接共享上游是否存在

一旦成功,您就可以使用Plink了。

7.2.1使用Plink进行交互式登录

要与远程服务器进行简单的交互式连接,只需输入plink,然后输入主机名:

Z:\sysosd>plink login.example.com

Debian GNU/Linux 2.2 flunky.example.com
flunky login:

然后您应该能够正常登录并运行会话。
服务器发送的输出将直接写入您的命令提示符窗口,该窗口很可能不会按照服务器期望的方式解释终端控制代码。
因此,如果您运行任何全屏应用程序,例如,您可以在窗口中看到奇怪的字符。
这样的交互式连接不是Plink的主要目的。

为了连接到不同的协议,可以提供命令行选项-ssh、-telnet、-rlogin或-raw。
要建立SSH连接,例如:

Z:\sysosd>plink -ssh login.example.com
login as:

如果已经设置了PuTTY保存的会话,那么可以提供保存的会话名,而不是提供主机名。
这允许您使用公钥身份验证、指定用户名,并使用PuTTY的大多数其他特性:

Z:\sysosd>plink my-ssh-session
Sent username "fred"
Authenticating with public key "fred@winbox"
Last login: Thu Dec  6 19:25:33 2001 from :0.0
fred@flunky:~$

(还可以使用-load命令行选项加载保存的会话;看3.8.3.1节。
如果您使用-load,则保存的会话存在,并且它指定了主机名,您也不能指定主机或user@host参数——它将被视为远程命令的一部分。)

7.2.2使用Plink进行自动连接

通常,Plink与SSH协议一起使用,使您能够直接与服务器上运行的程序对话。
要做到这一点,您必须确保Plink使用SSH协议。
你可以通过以下几种方式做到:

  • 使用第7.2.1节中描述的-ssh选项。
  • 设置一个PuTTY保存的会话,该会话描述要连接的服务器,并将协议指定为SSH。
  • 将Windows环境变量PLINK_PROTOCOL设置为ssh。

通常,Plink不是由用户直接调用的,而是由另一个进程自动运行的。
因此,您通常不希望Plink提示您输入用户名或密码。

接下来,您可能需要避免Plink可能产生的各种交互式提示。
系统可能会提示您验证所连接的服务器的主机密钥、输入用户名或输入密码。

为了避免被提示输入服务器主机密钥使用plink自动连接时,你应该首先做一个手工连接(使用的PuTTY或plink)相同的服务器,验证主机密钥(有关更多信息,请参见第2.2节),并选择Yes以主机密钥添加到注册表中。
之后,连接到该服务器的Plink命令不应该给出主机键提示,除非主机键发生了更改。

为了避免提示输入用户名,您可以:

  • 使用-l选项在命令行上指定用户名。
    例如,plink login.example.com -l fred。
  • 设置一个PuTTY保存的会话,该会话描述要连接的服务器,并指定要登录的用户名(参见4.14.1节)。

为了避免提示输入密码,您几乎肯定应该设置公钥身份验证。
(参见第8章,了解公钥身份验证的一般介绍)。
同样,你可以通过两种方式做到这一点:

  • 设置一个PuTTY保存的会话,该会话描述要连接的服务器,并指定一个私钥文件(参见4.22.8节)。
    为了在没有提示的情况下工作,您的私钥将需要没有密码。
  • 将私钥存储在Pageant中。
    有关更多信息,请参见第9章。

完成所有这些操作之后,您应该能够在SSH服务器机器上运行远程命令,并在没有提示的情况下自动执行该命令:

Z: sysosd>plink login.example.com -l fred echo hello, world
hello, world

Z:\ sysosd >

或者,如果您已经用所有连接细节设置了一个已保存的会话:

Z:\sysosd>plink mysession echo hello, world
hello, world

Z:\ sysosd >

然后,您可以设置其他程序来运行这个Plink命令,并将其视为服务器机器上的一个进程。

7.2.3 Plink命令行选项

Plink接受PuTTY工具支持的所有常规命令行选项。
有关这些选项的描述,请参见第3.8.3节。

Plink也支持自己的一些选项。
下面几节描述Plink的特定命令行选项。

7.2.3.1 -batch:禁用所有交互式提示
如果使用-batch选项,Plink在建立连接时永远不会给出交互式提示。
例如,如果服务器的主机键无效(请参见2.2节),那么连接将被简单地放弃,而不是询问下一步要做什么。

这可能有助于Plink在自动化脚本中使用时的行为:使用-batch,如果在连接时出现问题,批处理作业将失败,而不是挂起。

7.2.3.2 -s:远程命令为SSH子系统
如果指定-s选项,Plink将指定的命令作为SSH“子系统”的名称传递,而不是普通命令行。

(此选项仅对SSH-2协议有意义。)

7.2.3.3 -shareexists:测试上游连接共享
此选项不建立新连接;
相反,它允许测试是否存在可以共享的现有连接。
(有关SSH连接共享的更多信息,请参见4.18.5节)。

窗体的plink调用:

plink -shareexists

将测试该会话当前是否存在可行的“上游”,可以使用Plink通常用于建立实际连接的任何语法(主机/端口号、裸保存的会话名称、-load等)指定该“上游”。
如果存在可用的“上游”,则返回零退出状态,否则返回非零退出状态。

(此选项仅对SSH-2协议有意义。)

7.3在批处理文件和脚本中使用Plink

一旦您将Plink设置为能够在没有任何交互提示的情况下登录到远程服务器(参见7.2.2节),您就可以将它用于许多脚本和批处理目的。
例如,要在远程机器上启动备份,可以使用以下命令:

plink root@myserver /etc/backups/do-backup.sh

或者,您可能希望获取与特定web区域相关的所有系统日志行:

plink mysession grep /~fred/ /var/log/httpd/access.log > fredlog

任何可以在服务器命令行上有效运行的非交互式命令,都可以使用Plink以这种方式在批处理文件中运行。

7.4与CVS一起使用Plink

要在CVS中使用Plink,需要将环境变量CVS_RSH设置为指向Plink:

set CVS_RSH=\path\to\plink.exe

您还需要安排能够在没有任何交互式提示的情况下连接到远程主机,如第7.2.2节所述。

然后,您应该能够按照以下方式运行CVS:

cvs -d :ext:user@sessionname:/path/to/repository co module

如果您在保存的会话中指定了用户名,甚至不需要指定其中的“user”部分,您只需说:

cvs -d :ext:sessionname:/path/to/repository co module

7.5与WinCVS一起使用Plink

Plink也可以与WinCVS一起使用。
首先,安排Plink能够以非交互方式连接到远程主机,如7.2.2节所述。

然后,在WinCVS中,从管理菜单中打开“首选项”对话框,切换到“Ports”选项卡。
在标签为“检查另一个rsh名称”的框中打勾,然后在右边的文本输入字段中输入到plink.exe的完整路径。
在“首选项”对话框中选择“OK”。

接下来,从WinCVS“Admin”菜单中选择“命令行”,输入CVS命令,如7.4节所示,例如:

cvs -d :ext:user@hostname:/path/to/repository co module

或者(如果您正在使用保存的会话):

cvs -d :ext:user@sessionname:/path/to/repository co module

使用“更改文件夹”按钮选择要签出的文件夹,然后单击“确定”签出模块。
一旦签出模块,WinCVS将很高兴地从GUI调用plink进行CVS操作。

【翻译不易,转载请注明出处 衡与墨https://blog.csdn.net/le_17_4_6】
未完待续

猜你喜欢

转载自blog.csdn.net/le_17_4_6/article/details/86466891