`

putty 2

阅读更多

建议大家把 Pagent 放到启动组里面,这样每次一开机,Pagent 自动运行,然后我们只需要把私钥装载一下,然后我们就可以一直享受自动登录系统的乐趣了。再配合上以后会讲到的 Plink、PSCP 这些,我们可以实现很多工作的自动化进行。完全不需要每次输入用户名、口令、输入又长又多的命令,再做一些烦躁的文件备份,最后还得记得注销系统,难道不觉得麻烦么?这一切烦恼很快就会远离我们了,继续往下看吧。

用 SSH 来传输文件

PuTTY 提供了两个文件传输工具

  • PSCP (PuTTY Secure Copy client)
  • PSFTP (PuTTY SFTP client)

PSCP 通过 SSH 连接,在两台机器之间安全的传输文件,可以用于任何 SSH(包括 SSH v1、SSH v2) 服务器。
PSFTP 则是 SSH-2 中新增的特性,使用的是新的 SFTP 协议,使用上与传统的 FTP 类似。事实上 PSCP 如果发现 SFTP 可用,PSCP就会使用 SFTP 协议来传输文件,否则还是 SCP 协议。PSFTP 与 PSCP 相比,PSFTP 的优点是可以与服务器进行交互,遍历服务器上的文件系统,在一个会话中上传或下载多个文件。而 PSCP 只能一次传输一个文件,传输完毕后立刻终止会话。

PSCP 的使用

在控制台直接执行 pscp 可以看到帮助

C:\>pscp
PuTTY Secure Copy client
Release 0.58
Usage: pscp [options] [user@]host:source target
       pscp [options] source [source...] [user@]host:target
       pscp [options] -ls [user@]host:filespec
Options:
  -V        print version information and exit
  -pgpfp    print PGP key fingerprints and exit
  -p        preserve file attributes
  -q        quiet, don't show statistics
  -r        copy directories recursively
  -v        show verbose messages
  -load sessname  Load settings from saved session
  -P port   connect to specified port
  -l user   connect with specified username
  -pw passw login with specified password
  -1 -2     force use of particular SSH protocol version
  -4 -6     force use of IPv4 or IPv6
  -C        enable compression
  -i key    private key file for authentication
  -batch    disable all interactive prompts
  -unsafe   allow server-side wildcards (DANGEROUS)
  -sftp     force use of SFTP protocol
  -scp      force use of SCP protocol

C:\>

可以看出 PSCP 的使用是很简单的,把常用的几个选项说一下:

  • -q 安静模式,传输文件时什么也不显示,否则会显示出文件的传输进度,默认是关闭的
  • -P port 指定服务器的 SSH 端口,注意这个是大写字母 P,默认是 -P 22,如果主机的 SSH 端口就是 22,就不用指定了
  • -l user 指定以哪个用户的身份登录主机,如果没有指定,则 PSCP 会在 PuTTY 保存的同名 Session 中获得默认的用户名称。用户名称也可以和主机名称写在一起,用 @ 分割开,比如:username@server
  • -pw passwd 指定登录时所用的口令为 passwd
  • -i keyfile 就是指定登录时所用的密钥文件
  • 最后面指定的主机名也可以是 PuTTY 中保存的 Session 名称。比如我们在 PuTTY 中保存了一个名为 foobarserver 的会话,而我们所在的网络又的确没有名为 foobarserver 的主机名称。而在这个 foobarserver 会话中保存的主机名称是 demo-server,保存的自动登录的用户是 taylor。那么用命令
    pscp c:\autoexec.bat foobarserver:backup/
    就把本地的 c:\autoexec.bat 复制到了主机 demo-server 上的用户 taylor 所在的主目录下的 backup 子目录中(这个路径可能是 /home/taylor/backup


所以 PSCP 大致用法的例子就是:
pscp -P 22 -i c:\path\your-private-key.ppk -C username@server:/remote/path/
下面还是用一些实例来说明会比较简单一些:
把本地的 C:\path\foo.txt 复制到远程主机 192.168.6.200 的 /tmp 目录下

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

把本地的 C:\path\foo.txt 复制到主机 192.168.6.200 的 /tmp 目录下,但是以主机上的用户 taylor 的权限执行

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

或者是

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

把本地的 C:\path\foo.txt 传送到主机 192.168.6.200 的 /tmp 目录下,但是主机的 SSH 端口是 3122

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

把本地的 C:\path\foo.txt 复制到主机 192.168.6.200 的用户 taylor 的主目录下

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

把主机 192.168.6.200 上的用户 taylor 主目录下的所有 *.tgz 文件拷贝到本地的 c:\backup 目录中,如果 SSH 版本是 SSH v1,那这个命令就会出错。

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

再来看看 PSFTP

在控制台执行命令 psftp -h,可以得到 psftp 的帮助

C:\>psftp -h
PuTTY Secure File Transfer (SFTP) client
Release 0.58
Usage: psftp [options] [user@]host
Options:
  -V        print version information and exit
  -pgpfp    print PGP key fingerprints and exit
  -b file   use specified batchfile
  -bc       output batchfile commands
  -be       don't stop batchfile processing if errors
  -v        show verbose messages
  -load sessname  Load settings from saved session
  -l user   connect with specified username
  -P port   connect to specified port
  -pw passw login with specified password
  -1 -2     force use of particular SSH protocol version
  -4 -6     force use of IPv4 or IPv6
  -C        enable compression
  -i key    private key file for authentication
  -batch    disable all interactive prompts

C:\>

用法与 PSCP 大同小异,虽然有个 -load 选项,其实这个没啥用,后面用主机名的时候,与 PSCP 一样直接用上会话名称就可以了。
用 PSFTP 登录到服务器上以后,操作与 FTP 差不多,这里简单的说一下吧:

  • open 登录主机
    open [username@]<sessname|hostname|ip> [port]
    比如:
    • open taylor@demo-server 3022
      就是以用户 taylor 的身份,登陆到主机 demo-server 上,SSH 端口是 3022
    • open demo-server
      登陆 demo-server,这里的 demo-server 可以是PuTTY 中已经保存的会话名称,也可以是主机的名称,如果主机名称与会话名称相同,以会话名称为准。
  • close 关闭 SFTP 连接
    这个没啥说的,close 就关闭了 SFTP 连接
  • quit 结束本次的 SFTP 会话
    也没啥用法,就是关闭了 PSFTP 这个程序
  • help [command] 帮助
    直接打 help 就可以看到帮助指令,后面指定上 一个命令就可以查看该命令的帮助,比如: help open
  • cd [directory] 改变当前目录
  • pwd 察看当前目录
  • lcd [directory] 改变本地目录
  • lpwd 察看本地当前目录
  • get [-r] <filename|directory> 从服务器下载一个文件/目录,这个命令不能用通配符,参数 -r 可以递归下载整个目录
  • put [-r] <filename|directory> [dest] 把文件/目录上传到服务器,这个命令不能用通配符,参数 -r 可以递归上传整个目录
  • mget [-r] <filename|directory> 从服务器下载一批文件/目录,可以用通配符,-r 的含义与 get 一样
  • mget [-r] <filename|directory> [dest] 把一批文件/目录上传到服务器,可以用通配符,-r 的含义与 put 一样
  • reget [-r] <filename|directory> 从服务器续传下载一个文件/目录,这个命令不能用通配符,-r 的含义与 get 一样
  • reput [-r] <filename|directory> [dest] 把一批文件/目录续传上传到服务器,这个命令不能用通配符,-r 的含义与 put 一样
  • dir [directory] 列目录
  • ls 和 dir 一样
  • chmod [file|directory] 改变文件的权限,与 Unix 的 chmod 命令类似
  • del <filename> 删除文件,要注意的是 del 只能删除文件
  • rm 与 del 一样
  • mkdir <new-directory-name> 创建一个目录
  • rmdir <directory> 删除一个空目录,只有空目录才可以被删除
  • mv <source-file|source-directory> <dest-file|dest-directory> 改名/移动。如果源和目的都是文件或目录,则是改名。如果目的是目录的话,则是移动。
  • ! 在本地命令前加一个感叹号,就可以直接执行


其他可选的 SFTP 客户端

FileZilla : http://filezilla.sf.net
WinSCP : http://www.winscp.net

用 Plink 更方便快捷的执行远程主机上的命令

Plink 是 PuTTY 的命令行连接工具,主要用于自动化工作的处理。
直接在控制台执行 plink,可以看到 Plink 的帮助

C:\>plink
PuTTY Link: command-line connection utility
Release 0.58
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
            force use of a particular protocol
  -P port   connect to specified port
  -l user   connect with specified username
  -batch    disable all interactive prompts
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 authentication
  -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)

C:\>

看上去 Plink 的使用方法、参数与PSCP、PSFTP都很类似。

  • -P port 指定服务器的 SSH 端口,注意这个是大写字母 P,默认是 -P 22,如果主机的 SSH 端口就是 22,就不用指定了
  • -l user 指定以哪个用户的身份登录主机,如果没有指定,则 PSCP 会在 PuTTY 保存的同名 Session 中获得默认的用户名称。用户名称也可以和主机名称写在一起,用 @ 分割开,比如:username@server
  • -pw passwd 指定登录时所用的口令为 passwd
  • -i keyfile 就是指定登录时所用的密钥文件
  • -m file 如果执行的命令很多的话,可以把命令写到文件中,然后用这个参数来指定

还是用一些实际的例子来说明一下 Plink 吧
还记得前面说到 PuTTY 的自动执行命令那个配置么?在说到那个配置的时候,我们演示了一个简单的 Tomcat 重新启动的命令,这个命令是要写在 PuTTY 的 Remote command 里面去。现在我们用 Plink 来实现同样的功能:
假设连接的主机是 192.168.6.200,SSH 的端口是 3022,用户是 taylor:

plink -P 3022 taylor@192.168.6.200 export CATALINA_HOME="~/apache-tomcat-5.5.17";export JAVA_HOME="~/jdk1.5.0_07";export PATH=$JAVA_HOME/bin;$PATH ; cd $CATALINA_HOME/bin;./shutdown.sh;./startup.sh;tail -f $CATALINA_HOME/logs/catalina.out

如果在 PuTTY 中保存了一个名为 192.168.6.200 的会话,注意,这个会话的名称与主机 IP 一样,在会话中已经正确保存了端口 3022,指定了默认的用户是 taylor,现在这个命令就可以简化为:

plink 192.168.6.200 export CATALINA_HOME="~/apache-tomcat-5.5.17";export JAVA_HOME="~/jdk1.5.0_07";export PATH=$JAVA_HOME/bin;$PATH ; cd $CATALINA_HOME/bin;./shutdown.sh;./startup.sh;tail -f $CATALINA_HOME/logs/catalina.out

用 date 命令查看一下主机上的时间,并且格式化输出:

plink 192.168.6.200 date "+%F %T"

大家实际执行一下命令看看,会发现,这个命令并没有返回我们期望的结果,而是返回了一个错误:

C:\>plink 192.168.6.200 date "+%F %T"
date: too many non-option arguments: %T
Try `date --help' for more information.

可是在服务器上直接执行命令 date "+%F %T",的确是正确无误的,哪里出了问题呢?这是因为Windows的控制台会把两个双引号之间的字符串作为一个参数传递给被执行的程序,而不会把双引号也传递给程序。我们做这样一个小小的实验来说明一下这个问题:
比如在 c:\tmp 文件夹里建立三个文件夹,名称分别为:"foo"、"bar"、"foo bar"。然后在 foo 这个文件夹里面建立一个名为“foo.log”的空文件,在“bar”这个文件夹里建立一个名为“bar.log”的空文件,在“foo bar”这个文件夹里建立一个名为“foo-bar.log”的空文件。
然后在控制台下进入 c:\tmp 这个文件夹,执行如下命令:

dir foo bar

结果是列出“foo bar”这个文件夹里的内容,还是分别列出“foo”和“bar”文件夹里的东西呢?正确答案是后者。
要想正确列出“foo bar”文件夹里的东西,就需要用双引号把"foo bar"引起来

C:\tmp>dir foo bar
 Volume in drive C is System
 Volume Serial Number is 9C51-A51C

 Directory of C:\tmp\foo

2006-11-22  09:48    <DIR>          .
2006-11-22  09:48    <DIR>          ..
2006-11-16  11:58                 0 foo.log
               1 File(s)              0 bytes

 Directory of C:\tmp\bar

2006-11-22  09:48    <DIR>          .
2006-11-22  09:48    <DIR>          ..
2006-11-16  11:58                 0 bar.log
               1 File(s)              0 bytes
               2 Dir(s)   1,107,345,408 bytes free

C:\tmp>dir "foo bar"
 Volume in drive C is System
 Volume Serial Number is 9C51-A51C

 Directory of C:\tmp\foo bar

2006-11-22  09:48    <DIR>          .
2006-11-22  09:48    <DIR>          ..
2006-11-16  11:58                 0 foo-bar.log
               1 File(s)              0 bytes
               2 Dir(s)   1,107,345,408 bytes free

C:\tmp>

说到这里,就会明白上面的那个命令 plink 192.168.6.200 date "+%F %T" 其实在主机上执行的真实命令是 date +%F %T,而不是命令行中指定的 date "+%F %T"。不过还好,Windows 的控制台可不认得单引号,所以上面那个命令的正确用法应该是:

c:\>plink 192.168.6.200 date '+%F %T'
2006-11-22 09:39:57

我经常需要登录到服务器上把 ADSL 重新拨号,可以把下面的命令写到一个文本文件中,比如保存到了 C:\adsl-restart.command.txt

echo "stoping..."
/sbin/adsl-stop
echo "starting..."
/sbin/adsl-start
echo "done."
/sbin/adsl-status

然后执行如下命令:

plink -m c:\adsl-restart.command.txt root@192.168.6.251

我经常要查看 Tomcat 的运行日志

plink taylor@192.168.6.200 tail -f ~/apache-tomcat-5.5.17/logs/catalina.out

每天都要看服务器上的剩余空间,就用这个命令:

plink taylor@192.168.6.200 df -k

假设 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

结合上 PSCP 我们还可以完成文件的每天备份

plink taylor@192.168.6.200 tar jcf $(date '+documents.%F.tar.bz2') ~/documents
pscp taylor@192.168.6.200:$(date '+documents.%F.tar.bz2') c:\backup\
plink taylor@192.168.6.200 rm -f $(date '+documents.%F.tar.bz2')

如果把这些常用的操作写成批处理文件,到时候要重启一下 Tomcat,或者马上察看一下 Tomcat 日志,再或者只是要把 ADLS 重新拨号以下,只需要用鼠标一双击这个批处理文件,稍等一下就自动完成了。不比你打开 PuTTY,登录到服务器上,然后再一个一个的执行命令,最后还得注销来的方便快捷么?再懒一些,把自动备份的批处理放到计划任务里面,每天定时完成,哈哈,有时间上网找些好玩的东西了,不用每天忙于这些繁杂重复的命令中了。

用假象去迷惑敌人

如果我说 Google 的服务器也开放了 SSH,但是只有特定的 IP 可以连接上去,不信么?(声明:下面的图片都未经修改,我以 Google 的名义发誓,绝对没有 PS)


知道是怎么回事么?

Tips(小技巧)

安全、方便的使用 VNC,远程连接 VNC 不需要密码

有关 VNC 的主题按理说不应该写在这里,可是通过一点小小的技巧,可以让我们安全、方便的使用 VNC。我们多数情况下用 Windows 远程登录 Linux 桌面的方法不外乎 X11 forwarding 和 VNC,有关 X11 转发的内容参照前面的部分,还有关于 X11 转发和 VNC 哪个方便,这里就不再啰嗦说这些了,自己试一试就知道了。
在远程机器上启动 vnc 服务的方法很简单,直接使用命令 vncserver 了。如果是第一次使用这个命令,还会提示输入一个口令。注意了,这个口令是用来远程连接 VNC 服务端用的,不是登录口令,着两个口令可不一样。如果想修改 vnc 的连接口令,使用命令 vncpasswd 就可以搞定,用法和 passwd 一样。哎哎,等等。标题上不是写的“远程连接 VNC 不需要密码”么?为什么这里还是需要连接密码?不要着急,慢慢听我讲。前面说的方法就是最常用的方法了,既然连接 VNC 的时候需要密码,那就带来一个老问题。密码太简单了,容易被暴力破解掉。密码太复杂了,人脑毕竟不是电脑,记不住。但是呢,为了安全,密码还是要设置的长一点,我们可以使用一些其他工具帮助我们管理这些又臭又长的密码,比如 KeePass。
现在要说的是,我们可以把 VNC 的连接密码设置的好长好复杂,而且我们不用记,连接 VNC 的时候还不需要口令,不用担心暴力破解等等。我们需要做如下四步操作:
一、在本地机器上,用参数 /listen 来启动 vncviewer,这个参数对于 RealVNC、TightVNC、UltraVNC 的客户端都一样。也就是要把 VNC 客户端启动在监听模式下,我们要让 VNC 服务器主动连接我们,这样我们就不需要 VNC 的连接口令了。
vncviewer /listen
二、创建一个 PuTTY 的反向隧道,源端口 5500,目标 localhost:5500,具体操作看前面的部分,别忘记点“Add”按钮哦。这个 5500 端口就是 vncviewer 的默认监听端口。

三、在远程服务器上用命令 vncserver 启动 VNC 服务,如果前面已经启动 VNC 服务了,就忽略这一步。
四、关键命令哦,在远程服务器上执行命令
vncconfig -display :1 -connect localhost
说一下两个个关键参数,一个是 display 后面的 :1 ,这是连接到第一个 vnc 实例上。另一个就是 connect 参数后面的 localhost,既然我们是在远程机器上输入的这个命令,那很显然,连接的就是远程机器。别忘了,我们在此之前设置了反向的 SSH 隧道,连接远程机器的本地 5500 端口,其实连接的就是我们自己机器的 5500 端口。
哈,然后你就会发现什么密码也不用输入,就直接连接上远程的 VNC 服务了。不过呢,这四步操作确实有些麻烦,懒人的第一要旨就是能有多懒就要多懒。
第一步操作我们可以在 Windows 的启动菜单你里放一个 vncviewer 的快捷方式,别忘了 /listen 参数。
第二步操作可以直接保存到 PuTTY 的会话里面,参考前面的内容。
第三步就没啥子好说的,只要机器没有重启过,这个 VNC 服务就一直能用。
第四步的这个命令,我们可以在 PuTTY 的 Connection->SSH 的选项里的 “Remote command” 里填写上 “vncconfig -display :1 -connect localost” ,然后同样也是保存到 PuTTY 的会话里。以后只要双击一下那个 PuTTY 的会话,我们的 VNC 窗口就会自动打开。
第二步和第四步操作也可以用一个命令来代替,如下:
plink.exe -R 5500:localhost:5500 guantouping "vncconfig -display :1 -connect localhost"
命令参数中的那个 “guantouping” 是 PuTTY 保存的会话名,也可以是远程机器主机名,把这个命令做成一个快捷方式,双击直接打开 VNC。


FAQ(常见问题)

我在 PuTTY 官方网站下载的,可是执行 PuTTY、Pagent、PuTTYgen 时总是出错,而命令行执行的这几个却没问题

这种情形我也碰到过,一个解决的办法就是去下载最新版,或许你碰巧下载的是旧版本。另外一个解决办法就是,创建三个扩展名为 .manifest 的文本文件,然后把这三个文件复制到 PuTTY 的目录中,文件内容分别如下:
把下面的内容复制到记事本中,文件名保存为:PAGEANT.exe.manifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- This is present purely to make Visual Styles in XP work better.
     See 20020104174954.A12067@imsa.edu. -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
   type="win32"
   name="Pageant"
   version="0.0.0.0" processorArchitecture="x86"/>
   <dependency>
   <dependentAssembly>
        <!-- Load Common Controls 6 instead of 5 to get WinXP native-
             looking controls in the client area. -->
        <assemblyIdentity type="win32"
             name="Microsoft.Windows.Common-Controls"
             version="6.0.0.0"
             publicKeyToken="6595b64144ccf1df"
             language="*"
             processorArchitecture="x86"/>
   </dependentAssembly>
   </dependency>
</assembly>
把下面的内容复制到记事本中,文件名保存为:PUTTY.exe.manifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- This is present purely to make Visual Styles in XP work better.
     See 20020104174954.A12067@imsa.edu. -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
   type="win32"
   name="PuTTY"
   version="0.0.0.0" processorArchitecture="x86"/>
   <dependency>
   <dependentAssembly>
        <!-- Load Common Controls 6 instead of 5 to get WinXP native-
             looking controls in the client area. -->
        <assemblyIdentity type="win32"
             name="Microsoft.Windows.Common-Controls"
             version="6.0.0.0"
             publicKeyToken="6595b64144ccf1df"
             language="*"
             processorArchitecture="x86"/>
   </dependentAssembly>
   </dependency>
</assembly>
把下面的内容复制到记事本中,文件名保存为:PUTTYGEN.exe.manifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- This is present purely to make Visual Styles in XP work better.
     See 20020104174954.A12067@imsa.edu. -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
   type="win32"
   name="PuTTYgen"
   version="0.0.0.0" processorArchitecture="x86"/>
   <dependency>
   <dependentAssembly>
        <!-- Load Common Controls 6 instead of 5 to get WinXP native-
             looking controls in the client area. -->
        <assemblyIdentity type="win32"
             name="Microsoft.Windows.Common-Controls"
             version="6.0.0.0"
             publicKeyToken="6595b64144ccf1df"
             language="*"
             processorArchitecture="x86"/>
   </dependentAssembly>
   </dependency>
</assembly>

屏幕输出太快了,怎么能暂停一下?

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%

在登录的时候出现 "Proxy error: 407 Proxy authorization require" 的错误提示

这是因为配置的代理服务器需要认证,而我们没有填写正确的用户名或口令。如果用户名填写的是类似 DOMAIN/username 的形式,可以尝试把 DOMAIN/ 去掉,仅仅填写 username 再试一试,还有一种可能性就是代理服务器禁止我们访问 22 目标端口。

每次开机后我都要先打开 Pagent,然后再添加我的私钥,还要输入私钥密码,太麻烦了,有没有简单一点的办法呢?

很遗憾,比较轻松的办法就是把 Pagent 和 .ppk 文件关联,然后在开始的启动项里添加一个私钥的快捷方式,这样开机后我们只需要输入一下密码就OK了。如果想把输入密码也省掉,唉唉唉,怎么比我还懒呢?如果你的私钥密码真的是很长很长,那你还是借助第三方工具吧,建议用 KeePass 吧,KeePass 可以用命令行启动省掉输入密码和选择 keyfile 的麻烦。

我希望下次登录服务器的时候,还是能看到这次登录的界面,也就是说可不可以像 Firefox 那样保存 PuTTY 登录的会话呢?

这个问题很多人都会遇到,比如在进行一个长时间的数据处理,而且还不能放到后台执行。这时是不能关闭 PuTTY 的,万一网络状况不好突然断掉,或者是自己的机器死机必须重启,那我们难道只能眼巴巴的看着就要完成的工作付之东流?
当然这些事情是可以避免的,只不过这个功能是通过 GNU Screen 来实现的。GNU Screen 是一个终端窗口管理器,只不过管理的是终端界面,也就是纯文本的界面,而非图形界面。再稍微专业一些的说法就是:用一个物理终端模拟了多个虚拟终端。
如何安装 GNU Screen 这里就不说了,单说用 PuTTY 如何方便的去使用 GNU Screen。参考一下前面提到的如何自动执行一个命令 ,在 Remote Command 这个里面填写如下命令:
screen -RD
然后保存会话,登录。嗯,接下来你会发现什么呢?当然是命令提示符了,然后 ls 一下,一切正常啊,GNU Screen 呢?看到了没?其实我们已经在 Gnu Screen 里面了,在有的系统上,你会看到 PuTTY 的标题已经变成了 screen,有的显示的就是主机名,不管怎样,我们已经运行在 GNU Screen 里面了。如果你发现 PuTTY 是一闪而过,没有登录上去,那估计就是 GNU Screen 没有安装成功。
在 GNU Screen 中的每一个终端窗口都有一个编号,编号从 0 开始,再创建一个终端窗口,编号就是 1 了,以此类推。
下面简述一下 GNU Screen 的最经常使用的快捷键:
  1. 关闭 GNU Screen:Ctrl+a,然后 d,下面就用 C-a d 来表示了。或者 Ctrl+a Ctrl+d,下面就用 C-a C-d 来表示。放心这个只是关闭了窗口,里面的程序还都正常的运行,下次用命令 screen -RD 又都可以看到了。
  2. 再打开一个新的终端窗口:C-a c 或者 C-a C-c
  3. 切换到下一个终端窗口:C-a n 或者 C-a C-n
  4. 切换到前一个终端窗口:C-a p 或者 C-a C-p
  5. 切换到 0 号终端窗口:C-a 0 或者 C-a C-0
  6. 切换到 8 号终端窗口:C-a 8 或者 C-a C-8
  7. 快速切换到上一个打开的终端窗口:C-a C-a。这个需要稍微解释一下,比如现在我们在第 7 号终端窗口,按快捷键 C-a 2 切换到了 2 号终端窗口。要想再回到 7 号终端窗口,一个办法就是 C-a 7,另外一个办法就是 C-a C-a。
  8. 给运行在终端窗口的程序发送 ^a:C-a a,因为 GNU Screen 的所有快捷键都是以 C-a 开始,所以要给程序发送 ^a 就是这个方法了。
  9. 黑屏:C-a -。这个作用就类似屏保了,万一有些程序不方便让别人看到,切换到其他终端窗口也不合适,那就这个了,当然创建一个新的终端窗口也可以。
  10. 滚屏:C-a [ 或者 C-a C-[ 或者 C-a esc。然后用 PageUp/PageDown 就可以翻页了,再次按下 esc 就退出滚屏模式了,这个模式也是 copy 模式,这里就不细说了。
这里只是列出了常用的操作,还有很多强大的操作以及配置,大家 man screen 吧。


http://www.fishnote.net/?p=93
http://hi.baidu.com/wyjdeok/blog/item/c8143fcac97db383c91768a2.html
分享到:
评论

相关推荐

    putty putty破解版 putty绿色版

    putty putty破解版 putty绿色版 远程连接Linux系统

    winscp_curl_putty Linux 连接神器

    【winscp_curl_putty Linux 连接神器】是一套集成化的工具集合,专为Linux系统用户设计,方便他们在Windows环境中高效地管理远程服务器。这个压缩包整合了WinsCP、cURL和PuTTY三个核心组件,实现了图形界面与命令行...

    PuTTY 0.70 中文版

    PuTTY是一套免费的SSH/Telnet程序,它可以连接上支持SSH Telnet联机的站台,并且可自动取得对方的系统指纹码(Fingerprint)。建立联机以后,所有的通讯内容都是以加密的方式传输,因此你再也不用害怕使用Telnet在...

    putty.zip PuTTY中文版

    1. 安全性:PuTTY基于SSL/TLS或SSH2加密协议,确保了数据传输的安全性,防止被窃听和中间人攻击。 2. 支持多种协议:除了SSH,PuTTY还支持Telnet、Rlogin和Serial等传统远程登录协议,满足不同场景的需求。 3. ...

    putty putty putty putty putty

    2. 自定义设置:用户可以调整字体大小、颜色方案、窗口大小等,以适应个人喜好和工作需求。 3. 会话管理:PuTTY允许保存多个服务器的连接配置,方便快速切换和重用。 4. 公钥认证:PuTTY支持SSH的公钥/私钥对认证...

    putty 带有adb

    2. **文件传输**:使用`adb push`和`adb pull`命令在PC与设备之间传输文件。 3. **日志查看**:通过`adb logcat`命令获取设备的系统日志,帮助分析运行时问题。 4. **安装/卸载应用**:使用`adb install`和`adb ...

    PuTTY.vi labview调用putty接口函数 实现putty的全部功能

    Labview和putty交互, 通过labview调用putty的接口函数, 在putty实现的功能,都可以在labview中实现, 比如telnet, shell, 等等其他的功能

    Putty最新完整包

    2. **PuTTYGen.EXE**:PuTTY生成器是生成和管理SSH密钥对的工具。用户可以创建新的RSA或DSA密钥,或者导入已有的公钥。生成的密钥对可以用于无密码登录,增强了安全性。PuTTYGen还支持转换密钥格式,兼容不同SSH实现...

    putty-V0.73绿色免安装版

    1. **SSH连接**:PuTTY支持SSH1和SSH2两种安全协议,提供了加密的数据传输,确保了在不安全的网络环境中进行远程登录的安全性。 2. **Telnet**:除了SSH,PuTTY还支持传统的Telnet协议,允许用户连接到那些仍然使用...

    路由器刷机PUTTY软件

    2. **文件传输**:虽然PUTTY本身并不直接支持文件传输,但配合PSCP或PSFTP工具,可以实现SFTP文件传输。 3. **多窗口管理**:用户可以在同一界面内打开多个会话,方便同时管理多个设备。 4. **安全性**:PUTTY支持...

    Putty Linux系统命令行工具

    2. **启动PuTTY**:运行putty.exe,输入目标服务器的IP地址,选择默认的SSH连接类型。 3. **配置会话**:在左侧菜单栏中,可以设置端口、用户名、会话名称等,还可以进行高级配置,如调整窗口大小、启用压缩等。 4. ...

    putty-test putty-test

    2. SSH协议: SSH是一种网络协议,用于安全地远程登录到服务器,执行命令行操作。它通过加密所有传输的数据来防止中间人攻击。PuTTY利用SSH协议,为用户提供了安全的远程访问方式。 3. 安装与配置: 下载PuTTY的....

    putty适用于ssh ssh2协议服务

    PuTTY是一款广受欢迎的开源软件,主要用于实现SSH(Secure Shell)和SSH2协议的远程终端会话。在IT行业中,PuTTY是系统管理员、开发者和普通用户进行远程控制、文件传输以及命令行交互的重要工具。它支持多种网络...

    adb putty 工具 ADB调试好帮手

    2. **连接设备**:通过USB或Wi-Fi将设备与电脑连接,确保ADB能识别到设备。 3. **运行ADB Putty**:启动这个工具,输入设备的IP地址和端口号(默认为5555)。 4. **验证连接**:在PuTTY中输入设备的用户名(通常是`...

    【免安装】直接运行 单一文件 putty.exe

    2. Telnet: PuTTY也支持传统的Telnet协议,但因为 Telnet 协议数据传输时不加密,所以安全性较低,通常只在内部网络或对安全性要求不高的情况下使用。 3. Serial连接: PuTTY还允许用户通过串行端口进行连接,这在...

    putty,puttyex,putty插件

    压缩包里面有两个文件putty.exe和puttyex.exe。 putty.exe是一个大家比较常用的工具,而puttydex.exe是对putty进行扩展的,使得putty更易于使用。 解压后直接运行puttyex.exe,右边输入主机ip、用户名和密码然后连接...

    PuTTY免安装压缩包解压即可使用

    Putty是一个免费的Windows平台下的telnet、rlogin和ssh客户端,Putty的功能丝毫不逊色于商业的telnet类工具。PuTTY作为一款开放源代码的软件,主要由Simon Tatham维护,使用MIT licence授权。随着Linux系统在服务器...

    putty 编绎源码 vc6.0putty 编绎putty putty开源

    2. **获取源码**:首先,你需要从PuTTY的官方网站或者GitHub仓库下载最新版本的源码包,一般以`putty-src.zip`或`putty-src.tar.gz`的形式提供。 3. **安装开发环境**:为了在VC6.0下编译,你需要安装Microsoft ...

    putty 汉化版

    2. **多协议支持**:除了 SSH,PuTTY 还支持 Telnet 协议,一种较旧但仍在某些场景下使用的远程登录协议,以及 Rlogin 和 Serial 协议,适用于特定的设备连接。 3. **配置简单**:用户可以通过 PuTTY 的简洁界面...

    putty 可默认用户名和密码

    2. 设置连接参数:启动PuTTY后,你需要填写以下基本信息: - **主机名/IP地址**:输入你要连接的远程服务器的IP地址或域名。 - **端口号**:默认为22,对于SSH连接,大多数情况下无需更改。 - **连接类型**:默认...

Global site tag (gtag.js) - Google Analytics