• PuTTY (Telnet 和 SSH 客户端)
  • PSCP (SCP 客户端, 命令行下通过 SSH 拷贝文件,类似于 Unix/Linux 下的 scp 命令)
  • PSFTP (SFTP 的命令行客户端,类似于 FTP 的文件传输,只不过使用的是 SSH 的 22 端口,而非 FTP 的 21 端口,类似于 Unix/Linux 下的 sftp 命令)
  • PuTTYtel (仅仅是一个 Telnet 客户端)
  • Plink (命令行工具,执行远程服务器上的命令)
  • Pageant (PuTTY、PSCP、Plink 的 SSH 认证代理,用这个可以不用每次都输入口令了)
  • PuTTYgen (用来生成 RSA 和 DSA 密钥的工具).

 PuTTY 的所有配置都保存到了注册表,如果不记得备份注册表中的相关内容,下次重装机器所有配置就没了,而且配置也不方便用闪存盘随身携带。但是 PuTTY 的配置删除还是蛮方便的,运行时指定个参数 -cleanup 就可以清除 PuTTY 的所有配置信息。

PuTTY 的选择、复制、粘贴这些操作都是通过鼠标来完成的。

 

默认的 Action of mouse buttons (鼠标按键的功能)的选项是 Compromise:

一是直接用鼠标左键拖拉选中就可以了,
二是用鼠标中键单击选中区域的开头,用滚动条拖拉到期望选中区域的末尾,再用鼠标中键单击,就可以选中了。

 

 

第三个选项是 xterm (xterm 方式),这个跟默认的 Compromise 方式相反的,中键和右键的操作调换了一下,就不多说了。Action of mouse buttons 的第一个选项是 Windows (Windows 方式的),鼠标中键的操作跟前面提到的一样。右键不是粘贴了,而是打开了右键菜单。

下面那个 Shift overrides application's use of mouse 是和 Shift 键有关的。有些 Rogue Like 的程序,比如 mc、links、Lynx、VIM 等等,都支持鼠标操作,想在用鼠标在上面选择或粘贴就不行了。这个选项默认是选中的,在支持鼠标操作的 Rogue Like 界面下,按住 Shift 键,就可以像前面的那样用鼠标来选择、复制、粘贴了。看下面的这个图片,用 Links 打开了 Google 的首页,用鼠标去选中 顶部中间的 Google,我们会发现,弹出了保存的对话框。  

 

解决中文乱码问题:

1.配置窗口左边的 Translation,在右边的 Received data assumed to be in which character set 下拉列表中

2.文字方向问题就改变Font

在 PuTTY 中的前后翻页,与 Linux 终端一样,用 Shift+PageUp/PageDown 来上下翻页,而 Ctrl+PageUp/PageDown 则是一行一行的。

在 Connection 里面有个 Seconds between keepaliaves,这里就是每间隔指定的秒数,就给服务器发送一个空的数据包,来保持连接。以免登录的主机那边在长时间没接到数据后,会自动断开 SSH 的连接。
默认输入 0 是禁用保持连接,在这里我习惯的设置了 10。

在 Connection-〉Data 里面有个 Auto-login username,可以指定默认的登录用户。如果每次登录主机都是用同一个用户,不妨在这里设置一下。SSH、Telnet、Rlogin 这三种协议都支持,但不是所有的 Telnet 服务器支持自动登录用户

自动设置环境变量

还是前面的那个界面,下面有个 Environment variables,在 Variable 输入环境变量的名称,Value里设置上环境变量的值,登录主机后就会自动设置上,但是这个不一定能用,有些主机为了安全,可能会禁用这个特性,一旦登录就会收到这样一个错误提示:

Server refused to set environment variables

 

设置代理服务器

这个经常用到,设置方法大同小异,注意选择好 Proxy type(代理服务器的类型)就可以了。
代理服务器的地址填写到 Proxy hostname 这里,Port 就是代理服务的端口(HTTP代理常用端口有 3128、8080,Socks5代理常用端口有 1080)
Exclude Hosts/IPs 这里是填写排除的主机地址和IP,有些地址不需要代理,就在这里填写。
有些代理需要认证,用户名填写到 Username,密码则填写到下面的 Password。

 

Connection->SSH:如果选中了 Don't start a shell or command at all 就禁用了自动执行命令这一个特性,这个主要是配合 Tunnels (隧道)来使用的。因为有时候,我们只需要利用隧道建立一个 ×××,而并不需要登录上去执行命令。用这个方法建立好隧道以后,就一直开放了,除非自己手工关闭。

在 Connection-〉SSH-〉Auth 这里面有两个需要了解的,以后在讲到 PuTTYGEN 和 Pagent 时会详细介绍的。
一个是 Allow agent forwarding,作用是允许私钥代理的转发。
另外一个是最下面的 Private key file for authentication,选择私钥认证文件。

 用 SSH Tunnels(SSH 隧道),突破防火墙

Add new forwarded port 这里就是添加隧道转发端口的,其中 Source port 是隧道的源端口,也就是隧道的入口,连接隧道时要连接这个端口。Destination 这里是目的地,隧道的出口,输入的格式是: server:port。
还要说明的一点是 SSH 隧道是有方向的,这个方向是由下面的单选按钮 Local/Remote/Dynamic 来决定的。如果下面的单选按钮选中的是 Local,那么 Destination 这里填写的目标是相对于远程主机而言,而非你的机器。这样的隧道可以称之为正向隧道,隧道的入口是在你的本地,出口在远程主机那一端。如果单选按钮选中的是 Remote,那么目标地址就是相对与你的机器而言,而非远程主机。这样的隧道称之为反向隧道,隧道的入口是远程主机那一端,隧道的出口则是你的本地机器。这与 Local 选项是相反的。而最后一个 Dynamic 则不用指明 Destination 目标地址,也就是说目标地址是动态的了,连入隧道时可以随意指定目标地址,而不像 Local/Remote 指明的固定目标地址,所以这样的隧道就成了变相的加密 socks5 代理服务器了。
看明白了么?是不是会有些糊涂?后面我会举个例子来详细说说的。

一、正向隧道的建立:

Localhost:8080--------------------Remotehost:7001

1.远程主机开启监听端口:

[root@szm ~]# nc -l localhost 7001 

2.Putty上设置Tunnels:(连接上远程主机的7001端口)

L8080   127.0.0.1:7001

3.测试,本地主机显示的内容在远程主机上显示

本机上telnet 127.0.0.1 8080

二、反向隧道的建立:

 用于突破防火墙的设置,一般防火墙对由内向外的连接都会放行。

Localhost:7001------------------Remotehost:8080 

1.本地主机监听:

C:\>nc -l -p 7001 localhost

2.Putty上设置Tunnels:

R8080 127.0.0.1:7001

 

3.[root@szm ~]# nc localhost 8080

三、把 PuTTY 作为一个安全的代理服务器来使用:

1.Putty上设置Tunnels:

D1008

登录远程主机后,一个代理服务器就建立好了,这个代理服务器的地址就是 localhost:1080,还是加密的哦。

备份 PuTTY 的设置

 

D:\>regedit /e PuTTY.config.reg "HKEY_CURRENT_USER\Software\SimonTatham\PuTTY"

删除 PuTTY 的设置

putty.exe -cleanup

用 PuTTYgen 来生成密钥,以后可以不用密码登录服务器了

 但是创建的文件、目录和用户主目录($HOME, $HOME/.ssh, $HOME/.ssh/authorized_keys)的权限有个限制就是对除了本帐户的其他所有帐户都要求是只读的,否则的话,即使公钥、私钥都匹配无误,也是无法登入系统的。这是 SSH 服务器的一个安全要求,因为如果别的帐户可以修改你的 authorized_keys 的话,恶意的增加一个公钥,那对方不用你的帐户口令也能以你的帐户登入系统了。对于一些特殊要求,你可以在 SSH 服务器的配置文件 sshd_config 中用指令StrictModes no来取消这个限制。

 

1.PUTTYGEN.EXE生成私钥与公钥

2.把公钥复制到用户家目录内,如:/root/.ssh/authorized_keys

3.Putty软件Connection->SSH->Auth,指定么钥文件

4.Putty软件Connection->Data,写入登录用户名

5.Pagent这个软件,加入私钥文件后就可以自动登录了

PSCP的使用:

pscp c:\autoexec.bat foobarserver:backup/---------------会话复制

 

pscp -P 22 -i c:\path\your-private-key.ppk -C username@server:/remote/path/---密钥

pscp c:\path\foo.txt 192.168.6.200:/tmp

pscp c:\path\foo.txt taylor@192.168.6.200:/tmp

pscp -l taylor c:\path\foo.txt 192.168.6.200:/tmp----用户名

pscp -P 3122 c:\path\foo.txt 192.168.6.200:/tmp

pscp c:\path\foo.txt taylor@192.168.6.200:.

pscp taylor@192.168.6.200:*.tgz c:\backup

 

PSFTP的使用:

C:\>PSFTP.EXE 172.16.128.211

PLINK的使用:

C:\>PLINK.EXE 172.16.128.211

 

C:\>PLINK.EXE 172.16.128.211 date '+%F %T'

2013-03-27 15:11:15

C:\>PLINK.EXE -m szm.txt 172.16.128.211-----批处理文件

 

C:\>PLINK.EXE 172.16.128.211 df -k

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/sda5              4031680    229748   3597132   7% /

tmpfs                   147204         0    147204   0% /dev/shm

/dev/sda1               396672     29137    347055   8% /boot

/dev/mapper/vg_szm-LogVol00

                       9095664    149784   8487140   2% /home

/dev/sda8              2015824     36172   1877252   2% /tmp

/dev/sda3              5039616   1993416   2790200  42% /usr

/dev/sda6              3023760    305020   2565140  11% /var

.host:/              106759924 103932544   2827380  98% /mnt/hgfs

   假设www.chaifeng.com连接着另外一个网段 10.204.26.0,有台IP 为 10.204.26.21 的 Solaris 8主机只能用 telnet 登录,为了防止被监听,我们可以用 Plink 建立一个隧道,隧道开放 120 秒钟,如果隧道没有被使用,就自动断开连接,然后我们在本地就可以用命令 telnet localhost 2623 的安全登录那台 Solaris 8 主机了。

plink -L 2623:10.204.26.21:23 www.chaifeng.com sleep 120

 在主机 www.chaifeng.com上正在运行着 tor,默认的监听地址是 127.0.0.1:9050,用 Plink 建立一个隧道,然后浏览器上配置代理服务器为 127.0.0.1,端口是 9050,这样就能够安全的使用 tor 代理了,不用担心从我们的机器到主机 www.chaifeng.com有被监听的可能了。

plink -C -N -L 9050:127.0.0.1:9050 taylor@www.chaifeng.com

 

 

 

其他可选的 SFTP 客户端

FileZilla : [url]http://filezilla.sf.net[/url]

WinSCP : [url]http://www.winscp.net[/url]

其它内容:

 

Ctrl+S 快捷键可以暂停终端,Ctrl+Q 恢复。

Shift+PageUp/PageDown 一页一页的翻,Ctrl+PageUp/PageDown 则是一行一行的。

不是说 PSCP 一次只能传输一个文件么?为什么我发现能传输很多个?

那是因为 PSCP 发现 SFTP 协议可用,优先使用 SFTP 协议来传输文件

为什么执行了 pscp、psftp、plink 这些命令总是说错误的命令呢?

应该把 PuTTY 所在的路径添加到 PATH 环境变量中。你可以编辑 c:\autoexec.bat 这个文件,在最后增加一行,把 c:\path\to\putty 换成你的真实路径

set PATH=c:\path\to\putty;%PATH%

 

 原文地址:http://dzh001.blog.51cto.com/2767/40624/