PuTTY用户手册(八)

4.26隧道面板(Tunnels)

隧道面板允许您通过SSH连接配置任意连接类型的隧道。

端口转发允许您将其他类型的网络连接向下传输到SSH会话。
有关端口转发及其工作原理的一般性讨论,请参见第3.5节。

隧道面板中的端口转发部分显示了PuTTY在连接到服务器时尝试设置的所有端口转发的列表。
默认情况下不设置端口转发,因此此列表为空。

添加端口转发:

设置“本地”或“远程”单选按钮之一,这取决于您是想将本地端口转发到远程目的地(“本地”)还是将远程端口转发到本地目的地(“远程”)。
或者,如果您希望PuTTY在本地端口上提供本地SOCKS 4/4A/5代理(注意该代理只支持TCP连接;
SSH协议不支持转发UDP)。
在“源端口”框中输入源端口号。
对于本地转接,PuTTY将监听您的PC的这个端口。
对于远程转发,SSH服务器将监听远程机器的这个端口。
注意,大多数服务器不允许监听小于1024的端口号。
如果您选择了“本地”或“远程”(“Dynamic”不需要这个步骤),请在“Destination”框中输入主机名和端口号,并使用冒号分隔。
在源端口上接收的连接将被定向到此目的地。
例如,要连接到POP-3服务器,您可以输入popserver.example.com:110
(如果你需要输入一个IPv6地址,用方括号括起来,例如‘[::1]:2200’。)
点击“添加”按钮。
您的转发详细信息应该出现在列表框中。
要删除端口转发,只需在列表框中选择其详细信息,然后单击“删除”按钮。

在“源端口”框中,还可以选择输入要监听的IP地址,方法是指定(例如)127.0.0.5:79。
有关如何工作及其限制的更多信息,请参见3.5节。

如果本地系统知道服务名称,则可以输入服务名称来代替端口号。
例如,在“目标”框中,您可以输入popserver.example.com:pop3。

您可以使用“更改设置”在会话中期修改当前活动的端口转发集(请参见3.1.3.4节)。
如果在会话中途删除本地或动态端口转发,PuTTY将停止侦听该端口上的连接,因此它可以被另一个程序重用。
如果删除远程端口转发,请注意:

SSH-1协议不包含要求服务器停止监听远程端口的机制。
SSH-2协议确实包含这种机制,但不是所有SSH服务器都支持它。
(特别是,在3.9之前的任何版本中,OpenSSH都不支持它。)
如果您要求删除远程端口转发,而PuTTY无法使服务器实际停止侦听该端口,那么它将开始拒绝该端口上的传入连接。
因此,尽管端口不能被另一个程序重用,但至少可以合理地确保服务器端程序不再能够在端口转发端访问服务。

如果删除转发,则使用该转发建立的任何现有连接将保持打开状态。
类似地,对全局设置(如“本地端口接受来自其他主机的连接”)的更改只对新的转发生效。

如果您通过SSH转发的连接本身就是另一个PuTTY副本创建的第二个SSH连接,那么您可能会发现“逻辑主机名”配置选项对警告PuTTY它应该接收哪个主机密钥有用。
有关详细信息,请参阅4.13.5节。

4.26.1控制转发端口的可见性

转发连接的源端口通常不接受来自任何机器的连接,SSH客户机或服务器机器本身除外(分别用于本地转发和远程转发)。
隧道面板有一些控件可以改变这一点:

  • “本地端口接受来自其他主机的连接”选项允许您设置本地到远程端口转发,这样您的客户端PC以外的机器就可以连接到转发的端口。
    (这也适用于动态袜子转发。)
  • “远程端口执行相同的操作”选项对远程到本地端口转发执行相同的操作(以便SSH服务器以外的机器可以连接到转发的端口)。
    注意,这个特性只在SSH-2协议中可用,并不是所有的SSH-2服务器都支持它(例如,OpenSSH 3.0不支持)。
4.26.2为转发端口选择Internet协议版本

此开关允许您为转发端口的本地端选择特定的Internet协议(IPv4或IPv6)。
默认设置为‘Auto’,即:

  • 对于本地到远程端口转发,PuTTY将侦听IPv4和IPv6(如果可用)中的传入连接
  • 对于远程到本地端口转发,PuTTY将为传出连接选择一个合理的协议。

这将覆盖连接面板上的通用Internet协议版本首选项(参见第4.13.4节)。

注意,一些操作系统可能会侦听IPv4中的传入连接,即使您特别要求使用IPv6,因为它们的IPv4和IPv6协议栈是链接在一起的。
显然,Linux做到了这一点,而Windows没有。
因此,如果你在Windows上运行PuTTY,你勾选“IPv6”来进行本地或动态端口转发,它只有通过IPv6连接才能使用;
如果在Linux上也这样做,也可以在IPv4中使用它。
然而,勾选“Auto”总是会给你一个端口,你可以使用任何一种协议连接到这个端口。

4.27 bug和更多bug面板

不是所有SSH服务器都能正常工作。
各种现有的服务器中都有bug,这使得客户端不可能与它们通信,除非它知道这个bug并能够解决它。

由于大多数服务器在SSH连接的开始就会宣布它们的软件版本号,所以PuTTY将尝试检测它可以在服务器中看到的bug,并自动启用工作区。
然而,有时它会犯错误;
如果服务器被故意配置为隐藏其版本号,或者服务器是PuTTY的错误数据库不知道的版本,那么PuTTY将不知道将会出现什么错误。

bug和更多的bug面板(有两个,因为我们有很多bug兼容模式)允许您手动配置PuTTY希望在服务器中看到的bug。
每个bug可以配置为三种状态:

  • “Off”:PuTTY将假设服务器没有这个错误。
  • “On”:PuTTY将假设服务器确实存在错误。
  • “Auto”:PuTTY将使用服务器的版本号公告来猜测服务器是否存在错误。
4.27.1"对SSH-1的阻塞忽略消息"

忽略消息(SSH_MSG_IGNORE)是SSH协议中的消息,可以在任何时候从客户机发送到服务器,或者从服务器发送到客户机。
任何一方在接收到消息时都必须忽略该消息。
PuTTY使用ignore消息将密码包隐藏在SSH-1中,这样监听器就无法知道用户密码的长度;
它还使用忽略消息作为连接保持符(参见4.13.1节)。

如果检测到此错误,PuTTY将停止使用ignore消息。
这意味着keepalives将停止工作,PuTTY将不得不退回到对SSH-1密码长度的窃听的二级防御。
看到4.27.2节。
如果在与正确的服务器对话时启用了此错误,会话将成功,但keepalives将不起作用,会话可能比实际更容易受到窃听者的攻击。

4.27.2"拒绝所有sh -1密码伪装"

当与无法处理忽略消息的SSH-1服务器通信时(请参见第4.27.1节),PuTTY将试图通过在密码包中发送额外的填充来隐藏用户密码的长度。
这在技术上违反了sh -1规范,因此PuTTY只有在不能使用符合标准的忽略消息作为伪装时才会这样做。
从这个意义上说,对于服务器来说,拒绝接受填充的密码包并不是一个真正的bug,但是如果服务器也不能处理忽略消息,那么它确实会给生活带来不便。

如果检测到这种“错误”,PuTTY将假设忽略消息和填充都不接受,因此它别无选择,只能发送用户的密码和任何形式的伪装,这样一个窃听用户能够轻松地找到确切的长度的密码。
如果在与正确的服务器对话时启用了此错误,会话将成功,但更容易受到窃听者的攻击。

这是一个特定于ssh -1的bug。
sh -2对这种攻击是安全的。

4.27.3"sh -1 RSA认证阻塞"

一些SSH-1服务器根本无法处理RSA身份验证消息。
如果Pageant正在运行,并且包含任何SSH-1密钥,PuTTY通常会在返回密码之前自动尝试RSA身份验证,因此这些服务器在看到RSA尝试时将崩溃。

如果检测到此错误,PuTTY将直接转到密码身份验证。
如果在与正确的服务器对话时启用了此错误,会话将成功,但是RSA身份验证当然是不可能的。

这是一个特定于ssh -1的bug。

4.27.4"对SSH-2忽略消息的阻塞"

忽略消息(SSH_MSG_IGNORE)是SSH协议中的消息,可以在任何时候从客户机发送到服务器,或者从服务器发送到客户机。
任何一方在接收到消息时都必须忽略该消息。
PuTTY使用SSH-2中的忽略消息来混淆加密的数据流,使其更难进行加密分析。
它还使用忽略消息作为连接保持符(参见4.13.1节)。

如果它认为服务器有这个错误,PuTTY将停止使用ignore消息。
如果在与正确的服务器对话时启用了此错误,会话将成功,但keepalives将不起作用,并且会话的加密安全性可能不如预期。

4.27.5"阻塞PuTTY的sh -2‘winadj’请求"

PuTTY有时会在通道数据中间向SSH服务器发送一个特殊的请求,名为[email protected](参见F.1节)。
此请求的目的是测量到服务器的往返时间,PuTTY使用该时间来优化其流控制。
服务器实际上并不需要理解消息;
它将发送一条SSH_MSG_CHANNEL_FAILURE消息,表明它不理解它。
(所有的PuTTY需要的时间计算是某种响应。)

已经知道SSH服务器被这个消息以一种方式或另一种方式,因为它有很长的名字,或因为他们无法应付未请求的名字甚至发送回正确的故障响应的程度,或者因为他们明智地处理它,但填满和毫无意义的垃圾邮件服务器的日志文件,等等。
因此,PuTTY支持这个bug兼容性标志:如果它认为服务器有这个bug,它将永远不会发送它的“[email protected]”请求,也不会发送它的计时数据。

4.27.6"错误计算sh -2 HMAC密钥"

来自ssh.com的SSH服务器软件版本2.3.0及以下计算其HMAC消息身份验证代码的密钥不正确。
这个问题的一个典型症状是,PuTTY在会话开始时意外死亡,表示“在包上接收到不正确的MAC”。

如果检测到这个bug, PuTTY将以与有bug的服务器相同的方式计算HMAC密钥,因此通信仍然是可能的。
如果在与正确的服务器对话时启用此错误,则通信将失败。

这是一个特定于ssh的bug。

4.27.7"错误计算sh -2加密密钥"

来自ssh.com的SSH服务器软件的2.0.11以下版本计算会话加密密钥不正确。
这个问题可能会导致各种错误消息,例如“解密时传入的数据包被混淆”,甚至可能“内存不足”。

如果检测到此错误,PuTTY将以与有错误的服务器相同的方式计算其加密密钥,因此通信仍然是可能的。
如果在与正确的服务器对话时启用此错误,则通信将失败。

这是一个特定于ssh的bug。

4.27.8"需要填充sh -2 RSA签名"

低于3.3版本的OpenSSH要求使用与RSA密钥模量相同长度的零字节填充SSH-2 RSA签名。
sh -2规范规定必须接受未填充的签名,因此这是一个错误。
这个问题的一个典型症状是,每几百次尝试中,PuTTY就会神秘地失败一次RSA身份验证,并退回到密码。

如果检测到此错误,PuTTY将按照OpenSSH所期望的方式填充其签名。
如果在与正确的服务器对话时启用了此错误,则很可能不会造成任何损害,因为正确的服务器通常仍然接受填充签名,因为它们习惯于与OpenSSH对话。

这是一个特定于ssh的bug。

4.27.9 '在SSH-2 PK auth中误用会话ID ’

低于2.3版本的OpenSSH要求SSH-2公钥身份验证的方式略有不同:客户机签名的数据包含以不同方式格式化的会话ID。
如果公钥身份验证神秘地不起作用,但是事件日志(参见3.1.3.1节)认为它成功地发送了一个签名,那么让这个bug的解决方案看看它是否有用是值得的。

如果检测到此错误,PuTTY将按照OpenSSH所期望的方式对数据进行签名。
如果在与正确的服务器对话时启用此错误,则SSH-2公钥身份验证将失败。

这是一个特定于ssh的bug。

4.27.10"sh -2密钥重换处理不当"

一些SSH服务器根本无法处理重复密钥交换,并且会忽略客户机启动密钥交换的尝试。
由于PuTTY在执行重复密钥交换时暂停会话,因此这会导致会话在一个小时后挂起(除非您的rekey超时设置不同;
有关rekey的更多信息,请参见4.19.2节)。
其他非常老的SSH服务器处理重复密钥交换的情况甚至更糟,并且在接收到重复密钥交换请求时断开连接。

如果检测到此错误,PuTTY将永远不会发起重复密钥交换。
如果在与正确的服务器对话时启用了此错误,会话应该仍然有效,但可能不如您预期的安全。

这是一个特定于ssh的bug。

4.27.11 ‘忽略SSH-2最大数据包大小’

当设置了一个SSH-2通道时,每个端宣布它愿意为该通道接收的数据包的最大大小。
一些服务器忽略PuTTY的声明,发送大于PuTTY愿意接受的数据包,导致它报告“传入的数据包在解密时被混淆”。

如果检测到此错误,PuTTY永远不会允许通道的流控制窗口增长到足够大,从而允许服务器发送过大的数据包。
如果在与正确的服务器对话时启用了此错误,会话将正确工作,但下载性能将低于预期。

4.27.12"对封闭渠道的回应"

RFC 4254中发布的SSH协议有一个歧义,如果连接的一端试图关闭通道,而另一端同时在通道中发送请求并请求应答,就会出现这种歧义。
RFC 4254不清楚关闭方在宣布关闭通道的意图后是否应回复通道请求。

2014年4月关于ietf-ssh邮件列表的讨论形成了明确的共识,正确的答案是no。
但是,由于规范的模糊性,一些SSH服务器实现了另一种策略;
例如,OpenSSH在修复之前一直是这样。

因为PuTTY发送通道请求想要回复的旗在渠道的一生(参见4.27.5节),这是可能的,当连接到这样的服务器可能会收到一个回复一个请求后,认为通道已经完全关闭,并终止与一个错误的收到SSH2_MSG_CHANNEL_FAILURE 256不存在的通道”。

4.27.13"仅支持pre-RFC4419 sh -2 DH GEX"

使用Diffie-Hellman组exchange的SSH密钥交换方法在其原始版本之后进行了重新设计,以使用稍微复杂一些的设置消息。
几乎所有SSH实现都切换到新版本。
(PuTTY是最后一个。)
一些旧服务器仍然只支持旧服务器。

如果检测到此错误,并且客户机和服务器协商difffie - hellman组交换,那么PuTTY将发送现在称为SSH2_MSG_KEX_DH_GEX_REQUEST_OLD的旧消息,以替代新的SSH2_MSG_KEX_DH_GEX_REQUEST。

这是一个特定于ssh的bug。

4.28串行面板(serial)

串行面板允许您配置仅适用于PuTTY连接到本地串行线路时的选项。

4.28.1选择要连接的串行线路

如果您的计算机有多个串口,“串口连接”框允许您选择要与腻子对话的串口。

在Windows上,第一个串行行称为COM1,如果有第二个串行行,则称为COM2,以此类推。

在会话面板上也可以看到这个配置设置,如果连接类型设置为“Serial”,它将替换“Host Name”框(参见4.1.1节)。

4.28.2选择串行线路的速度

“速度”框允许您选择与串行线通信的速度(或“波特率”)。
典型值可能是9600、19200、38400或57600。
你需要哪一个将取决于设备在串行电缆的另一端;
如果您有疑问,请查阅该设备的使用手册。

在会话面板上也可以看到这个配置设置,如果连接类型设置为“Serial”,它将替换“Port”框(参见4.1.1节)。

4.28.3选择数据位的个数

“数据位”框允许您选择在通过串行行发送或接收的每个字节中传输多少数据位。
典型值是7或8。

4.28.4选择停止位的个数

“停止位”框允许您选择在串行行协议中使用多少停止位。
典型值是1、1.5或2。

4.28.5选择串行奇偶校验方案

“奇偶校验”(Parity)框允许您选择在串行行上使用哪种类型的奇偶校验。
设置:

  • “None”:根本没有奇偶校验位被发送。
  • ‘Odd’:一个额外的奇偶校验位与每个字节一起发送,并安排,使1位的总数是奇数。
  • ‘Even’:在每个字节旁边发送一个额外的奇偶校验位,并安排使1位的总数为偶数。
  • “Mark”:在每个字节旁边发送一个额外的奇偶校验位,并且总是设置为1。
  • “Space”:在每个字节旁边发送一个额外的奇偶校验位,并且总是设置为0。
4.28.6选择串口流量控制方案

“流控制”(Flow)框允许您选择在串行行上使用哪种类型的流控制检查。
设置:

  • “None”:不进行流控制。
    如果任何一方试图发送的数据比串行线路允许的速度快,那么数据可能会丢失。
  • ’ XON/XOFF ':流控制是通过在数据流中发送XON和XOFF字符来完成的。
  • “RTS/CTS”:流控制是使用串口线上的RTS和CTS线来完成的。
  • “DSR/DTR”:通过串口线上的DSR和DTR线进行流量控制。
4.29在文件中存储配置

PuTTY目前不支持将其配置存储在文件而不是注册表中。
但是,您可以使用几个批处理文件来解决这个问题。

您将需要一个名为PUTTY.BAT的文件,将文件的内容导入注册表,然后运行PuTTY,将注册表的内容导出回文件,并删除注册表项。
这都可以使用Regedit命令行选项来完成,所以这是全自动的。
这是你在PUTTY.BAT里需要的东西。

@ECHO OFF
regedit /s putty.reg
regedit /s puttyrnd.reg
start /w putty.exe
regedit /ea new.reg HKEY_CURRENT_USER\Software\SimonTatham\PuTTY
copy new.reg putty.reg
del new.reg
regedit /s puttydel.reg

这个批处理文件需要两个辅助文件:PUTTYRND.REG为PuTTY设置了初始安全位置。
还有PUTTY.RND随机种子文件
一旦注册表成功保存回文件,PUTTYDEL.REG将销毁注册表中的所有内容。
PUTTYDEL.REG:

REGEDIT4
 
[-HKEY_CURRENT_USER\Software\SimonTatham\PuTTY]

这是一个PUTTYRND.REG 文件的例子:

REGEDIT4
 
[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY]
"RandSeedFile"="a:\\putty.rnd"

你应该更换一个:\putty.rand 包含您想要存储随机数数据的位置。
如果你的目标是随身携带一个有PuTTY和它的设置的u盘,你可能想要把它存储在u盘上。

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

猜你喜欢

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