PuTTY免用户名和密码登录

  1. 首先打开puttygen密匙生成工具

    PuTTY免用户名和密码登录

  2. 2

    打开之后,选择按钮“Generate”

    PuTTY免用户名和密码登录

  3. 3

    此进度指示密匙正在计算生成中,此刻,请在红框标识的空白区域内随意移动光标,以便生成随机数

    PuTTY免用户名和密码登录

    PuTTY免用户名和密码登录

  4. 4

    保存私匙,

    密匙生成完毕之后,点击 "Save Private Key"(保存私匙)

    PuTTY免用户名和密码登录

  5. 5

    选择一个合适的存储路径在生成的(.ppk)私匙文件进行保存,文件名中需要最好填入一个见名知意的名字

    PuTTY免用户名和密码登录

  6. 6

    保存私匙之后,路径内会出现一个*.ppk的私匙文件

    PuTTY免用户名和密码登录

  7. 复制公匙,

    私匙保存之后,需要将公匙复制一份,稍后将要保存在远程服务器上一份

    PuTTY免用户名和密码登录

  8. 使用putty登陆到远程主机,家目录下有一个隐藏的文件夹.ssh,

    PuTTY免用户名和密码登录

  9. 进入到隐藏文件夹 .ssh,并创建一个文件:authorized_keys

    PuTTY免用户名和密码登录

  10. 按下快捷键:SHIFT+INSERT,将公匙内容粘贴至此,

    PuTTY免用户名和密码登录

  11. 打开PuTTY,在Host Name[or IP address]下输入:远程主机的名字或者IP

    PuTTY免用户名和密码登录

  12. 依次从Putty左侧导航树选择:Connection(连接)--- Data(数据),

    然后在右侧,Auto-login username中,填入远程主机的登录用户名

    PuTTY免用户名和密码登录

  13. 从左侧导航树中依次选择:Connection(连接)---SSH--- Auth(认证),

    然后在右侧,点击“Browse”(浏览)按钮,选择先前保存的,后缀名为.ppk的私匙

    PuTTY免用户名和密码登录

  14. 从左侧导航树依次选择:Session---Save Sessions---Save,

    对刚才所做的配置进行保存

    PuTTY免用户名和密码登录

  15. 保存之后,以后我们打开PuTTY连接设置过的远程主机,就不必输入用户名和密码了,直接双击已保存的对应Session配置,即可成功登陆远程服务器

    PuTTY免用户名和密码登录

  16. 最终,双击保存的对应Session,成功的免用户名和密码登录了

    PuTTY免用户名和密码登录

设置Putty SSH使用密钥登录Linux VPS主机

第一步、生成密钥

看到很多教程有提到用puttygen.exe文件可以生成密钥的,但是可能会出现Server refused our key这样的登陆错误,所以我们这里直接使用VPS远程设置密钥,然后下载到本地。

VPS生成密钥

根据上图的演示,登陆到SSH之后,我们先输入ssh-keygen -t rsa 然后会要求我们确定 路径我们直接回车会自动创建/root/.ssh文件夹目录,然后回车后出入密钥密码,输入两次继续回车密钥就可以在目录中看到。

我们把root/.ssh目录中的id_rsa和id_rsa.pub下载到本地备份等会需要使用。

第二步、修改sshd配置文件

A - 将root/.ssh中的id_rsa.pub修改名字为authorized_keys 并且用chmod 600 authorized_keys设置权限。

B - 找到/etc/ssh/sshd_config ,把RSAAuthentication和PubkeyAuthentication两行前面的#注释去掉。

C - 重启SSHD服务。

Debian/Ubuntu执行:/etc/init.d/ssh restart
CentOS执行:/etc/init.d/sshd restart

第三步、客户端配置密钥

我们打开puttygen.exe文件,载入密钥。

载入密钥

输入在SSH中设置的密钥密码。

输入密钥密码

保存私钥。

保存为私钥

保存的文件名可以设置为id_rsa.ppk,也可以自定义名字但后缀必须是PPK,后面我们有需要用到。

第四步、设置PUTTY认证链接

putty-5

浏览PPK文件

正常的登陆,开始可能需要我们输入密钥密码。

输入密钥密码登录PUTTY

第五步、再次修改SSHD配置文件

修改/etc/ssh/sshd_config 文件中找到PasswordAuthentication后面的yes改成no

然后重启sshd

Debian/Ubuntu执行:/etc/init.d/ssh restart
CentOS执行:/etc/init.d/sshd restart

这样我们的putty登陆使用密钥也配置完成,即便他们知道我们的ROOT密码也不好登陆,所以到本地的几个文件需要确保安全,只要你本机电脑安全,你的VPS就相对足够的安全。

等进度条走完之后,会出现下面的界面

wKioL1gkHvjQ10XBAAECpoZBc9Q624.png-wh_50

最上面那个大大的只读文本框里面是公钥,用来保存到 OpenSSH 的 authorized_keys 文件中,这个文件中的每一行都是一个公钥。默认情况下,这个文件位于 Linux 用户主目录的 .ssh/ 子目录中,如果文件和目录都不存在,可以直接创建。

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

StrictModes no

来取消这个限制。在 sshd_config 的帮助手册中可以看到

     StrictModes
             Specifies whether sshd should check file modes and ownership of
             the user’s files and home directory before accepting login.  This
             is normally desirable because novices sometimes accidentally
             leave their directory or files world-writable.  The default is
             “yes”.

小技巧:每次修改 authorized_keys 这个文件时,你可以用如下的命令来修改,确保所有的文件属性和权限无误

mkdir -p $HOME/.ssh && touch $HOME/.ssh/authorized_keys \
&& chmod go-w $HOME $HOME/.ssh $HOME/.ssh/authorized_keys && vim $HOME/.ssh/authorized_keys

还有一个要强调的是那个 Key comment,这是密钥的注释,一定要修改。因为这个密钥是给自己用的,所以最起码要输入自己的名字,用默认的注释很容易和其他人的密钥混淆的。如果担 心自己的密码忘记了,可以在后面加上密码提示,当然了,不要让别人用注释猜出你的密钥口令。比如,我可以把注释修改为

ChaiFeng [20061120] w.z.

后面的 w.z. 就是我的密码提示,能猜出来么?呵呵

输入注释,上面的公钥也会随之发生变化。
现在最重要的是,输入自己的密钥口令。就是 Key passphrase 和 Confirm passphrase 这个两个输入框。
如果不输入口令,直接保存私钥会看到这个提示。为了安全起见还是输入口令吧,要不任何人得到这个私钥都可以不用口令登入系统了


最后单击 Save private key 来保存私钥吧,保存到自己认为安全的地方,比如存放到私人的 USB 闪存盘上。需要登录时,插上 USB 闪存盘。登录完毕后就可以把 USB 闪存盘取下来,哈哈,这样子就比较安全了。
大 家也注意到了,还有个 Save public key 按钮,这个是保存 SSH2 格式的公钥,有些 SSH 服务器要求用这种格式的公钥文件。一般情况下,我们是不需要的,所以这里也就保存了。以后还想的话,就用 PuTTYgen 把私钥 Load 出来,然后再保存也可以。

用密钥登录服务器的流程

上面杂七杂八的说了一堆创建密钥时的事情,大家会不会已经有些乱了呢?我把这个过程再罗列一遍:

  1. 如果没有公钥/密钥对,就用 PuTTYgen 创建一个,已经有了就可以忽略这一步。一个公钥/密钥对可以用在不同的服务器上,所以也不需要重复创建,关键要有足够强健的密码和安全的存放。

  2. 象先前一样输入帐户名和口令登录到主机上。

  3. 输入如下命令,来编辑 authorized_keys 文件mkdir -p $HOME/.ssh && touch $HOME/.ssh/authorized_keys \&& chmod go-w $HOME $HOME/.ssh $HOME/.ssh/authorized_keys && vim $HOME/.ssh/authorized_keys
     

  4. 把这个文本框里的公钥粘贴到 vim 中去,需要说明几点:这个文本框里的内容是一行的,粘贴到 vim 中时,别忘了按字母 o 这个键,否则的话,粘贴进去后,开头的 ssh-rsa 会变成 sh-rsa,为什么呢?哈哈,想想吧。为什么不按字母键 i 呢?这个在 vim 中不就是插入么?原因是我很懒,按字母 o,我可以节省一次按回车键。虽然按大写 O 也行,那我不是还得再按一下 Shift 键么?别 忘了,在 PuTTY 中默认的粘贴可是按鼠标右键哦,然后按一下 ESC 键,然后输入 :wq 保存退出,等等,大家先别着急的输入 :wq,既然输入冒号还得按下 Shift 键,那我们就干脆直接两下大写的字母 Z,也就是 ZZ。怎么样?vim 也一样保存退出了吧。这次又节省了一次按键和两次寻找字母的移动,把懒得优良传统再一次在实践中发扬光大。

  5. 如果已经有了私钥,第4步里的那个公钥忘记保存了,就用 PuTTYgen 把这个私钥 Load 上去,然后重新复制一下公钥吧。

  6. 在 PuTTY 的配置 Connection->SSH->Auth 这里面,指定上私钥,然后记得保存 Session,以后就不需要重复这一步了。

  7. 最好也指定上自动登录的用户名,还记得这里吗?

  8. 开始登录吧,这次你会看到一个不同于以往的登录提示现 在输入的口令可不是主机上这个账户的口令了,而是先前创建的这个密钥的口令。以后不管这个账户的口令是什么,即使再复杂,也和我们没关系了。只要这个账户 的 $HOME/.ssh/authorized_keys 文件中,有我们的公钥,我们就随时用匹配的私钥都可以登录了。配合后面提到的 Pagent,我们连输入密钥口令这一步也可以忽略过去。

  9. 登录成功了,别忘了按 Ctrl+d 注销哦。

以后这些步骤就不需要再重复了,只需要打开 PuTTY 后,双击一下保存的会话名称,输入密钥口令。

Pagent 加载密钥,每次开机后只需要输入一次密钥口令

终于轮到 Pagent 出场了,双击一下 Pagent.exe,嗯,没反应?再双击一下,咦?出来个提示,说已经运行了。

看看右下角吧,在这里呢

双击一下 Pagent 的图标,出来这样一个界面。很简洁的,Add Key 是添加私钥,Remove Key 是把选中的私钥从 Pagent 中卸载了。

好,现在单击 Add Key 按钮添加私钥,我把这个演示用的私钥保存到 C:\ 了

然后会出现输入密钥口令的对话框,输入正确的密钥后,单击 OK

这时,在 Pagent 的窗口中就能看到我们的私钥已经装载上去了。

现在打开 PuTTY,选择先前保存的 Session,双击一下。只要自动登录用户名设置上,主机上改帐户的 authorized_keys 文件里也有匹配的公钥。哈哈,发现没有?完全不需要口令,我们已经登录到系统了。
在 Pagent 的图标上点右键,也可以快捷的选择已经保存的会话。

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


 


 

备份 PuTTY 的设置

用 PuTTY 最不爽的就是,它把所有的设置都保存到注册表了,本来这不是什么问题。但是难免会重装一下机器,用下面的命令可以备份 PuTTY 的所有设置

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

删除 PuTTY 的设置

如果只是在其他机器上临时用了一个 PuTTY,用完以后想删除 PuTTY 的配置,就在控制台里输入如下的命令:

putty.exe -cleanup

PuTTY的自动登录设置

puttytips

 阅读约 3 分钟

PuTTY是Windows下非常好用的SSH远程登陆客户端。本文介绍两种自动登录的设置方法。

1. 使用快捷方式自动登录

  1. 创建Session: 打开PuTTY,Session选项卡中填写Host NamePortSaved Sessions(假定名称为"session_name")。

  2. 桌面创建PuTTY.exe的快捷方式。

  3. 右键快捷方式,属性>快捷方式>目标,加入如下三个参数:

    X:\yourpath\putty.exe -load "session_name" -l "username" -pw "password"
    

    session_name, username, password 替换为自己的账号信息。

  4. 点击应用保存,搞定。

2. 使用密匙自动登录

  1. 下载PuTTYgen,打开后点击generate,不断点击进度条下空白区域直到生成密匙。

  2. 点击Save private key将私匙保存起来(假定存到X:\mykey.ppk)。弹出设定passphrase的提示可以无视。

  3. 登陆到远程节点,在~(home/username)路径下创建".ssh"文件夹,确保这个文件夹只有自己拥有操作权限:

    $ mkdir -m 700 .ssh
    
  4. 进入文件夹,创建公匙文件"authorized_keys",将PuTTYgen文本框中生成的公匙复制粘贴过来,保存:

    $ cd .ssh
    $ vi authorized_keys
    # Paste the public key and save
    
  5. 打开PuTTY,进入Connection/SSH/Auth选项卡,在Private key file for authentication:一栏中填入私匙地址(X:\mykey.ppk)。

  6. 回到PuTTY的Session选项卡,将5.的更改保存一下,搞定。



额外附送:如果已经懒到打开PuTTY再登陆节点都嫌麻烦的话,可以用快捷方式使登陆更容易,接上面第4步:

  • 新建一个PuTTY的快捷方式,右键,属性>快捷方式>目标,加入如下参数后保存:

    X:\yourpath\putty.exe -i "X:\mykey.ppk" [email protected]
    

    引号内为私匙路径,username 为用户名,123.45.67.89 为远程节点的IP,这样设置后快捷方式可直接调用PuTTY的default配置登陆目标节点。如果想要调整终端的色彩和字体,更改default配置即可。

https://segmentfault.com/a/1190000000639516

可能会遇到连接不上和乱码问题。

问题1:使用putty登录显示network error:Connection refused

解决方法:
  1.gedit /etc/ssh/sshd_config    将PermitRootLogin的注释取消,或者将no改为yes。(如果没有sshd_config文件说明linux上没有安装SSH,使用sudo apt-get install ssh安装之后,sshd-config文件中PermitRootLogin选项默认的是yes,新安装的ssh不用操作下面两部)
  2.service sshd restart
  3.setup命令进入将防火墙关闭。 

问题2:使用putty登陆之后显示乱码

解决方法:(以下方法未经过本人测试,摘录自网络)
  其实只需要一步即可: 在window-〉Translation中,character set 中,把Use font encoding改为UTF-8,其他不需要改动(按照方法一改动之后可能大写字母显示会编程乱码)。
  ###方法一:
  打开putty主程序,选择window-〉Appearance-〉Font settings-〉Change Settings,选择Fixedsys字体,字符集选择CHINESE_GB2312。在window-〉Appearance-〉 Translation中,Received data assumed to be in which character set 中,把Use font encoding改为UTF-8如果经常使用,把这些设置保存在session里面。
  保存方法:再做完以上操作的同时选中以下两项:
  在window-〉Appearance-〉 Translation中,选中:TReat CJK ambiguous characters as wide和Caps Lock acts as Cyrillic switch即可。 
 

  ###方法二:
  编辑/etc/sysconfig/i18n
  把第1句"LANG="zh_CN.UTF-8""改为"LANG="zh_CN.GB18030"",完成后保存重新登录即可。

  ##方法三:
  打开putty,登录成功后,在shell中输入
  # export LC_ALL= 'zh_CN.utf8'
  # vi ~/.bash_profile
  LANG=zh_CN.GB18030
  LANGUAGE=zh_CN.GB18030:zh_CN.GB2312:zh_CN
  export LANG LANGUAGE 

在命令行输入用户名密码即可登录系统,进行各种操作。

如果觉得默认的字体不好看,还可以对字体进行各种设置。(Window->Appearance->Font settings->Change...)

在 PuTTY 里面怎样选中,复制和粘贴?

在 PuTTY 的窗口里面复制、粘贴可不能用 Windows 里的这些 Ctrl+C, Ctrl+Ins, Ctrl+V 这些快捷键,Ctrl+C 在控制台上可是终止当前的命令执行。

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

在 Window-〉Selection 这里可以设置复制和粘贴的方式。

默认的 Action of mouse buttons (鼠标按键的功能)的选项是 Compromise,这种方式下选中有两种方式,一是直接用鼠标左键拖拉选中就可以了,二是用鼠标中键单击选中区域的开头,用滚动条拖拉到期望选中区域的末尾,再用鼠标中键单击,就可以选中了。选中以后,单击鼠标左键就把选中部分复制到剪贴板了。粘贴也很简单,单击鼠标右键。

Action of mouse buttons 的第一个选项是 Windows (Windows 方式的),鼠标中键的操作跟前面提到的一样。右键不是粘贴了,而是打开了右键菜单。

第三个选项是 xterm (xterm 方式),这个跟默认的 Compromise 方式相反的,中键和右键的操作调换了一下,就不多说了。

下面那个 Shift overrides application's use of mouse 是和 Shift 键有关的。有些 Rogue Like 的程序,比如 mc、links、Lynx、VIM 等等,都支持鼠标操作,想在用鼠标在上面选择或粘贴就不行了。这个选项默认是选中的,在支持鼠标操作的 Rogue Like 界面下,按住 Shift 键,就可以像前面的那样用鼠标来选择、复制、粘贴了。

在 Control use of mouse 里面还有个 Default selection mode (默认的选择模式),默认是 Normal,就像文字处理工具里这样的选择。

另外一个是 Rectangular block(块选择方式),至于用哪种方式就看自己的选择了。

成功登录主机后,也能正常看到中文了。这样,我们就可以完成大部分的工作。最后要关闭窗口了,该怎么办呢?很多人都是直接点击窗口上的关闭按钮,完全没有理会弹出警告窗口,直接点击了 Yes。

这样做是不对的,首先这不是正确的注销方式,应该输入命令 exit 来正常注销;其次直接关闭窗口后,你的登录其实还在服务器上,如果一连多次的这样强制关闭窗口,用命令 w 或者 who 命令查看时,可以看到很多的用户还在系统上登录,占用了系统的资源。最重要的是,你的这次登录可能只是为了启动一下 WebLogic 或者其他什么应用服务器,直接关闭窗口后,可能会导致你的业务在随后的几分钟内也被终止,这应该不是你所希望看到的吧。

如果上述的理由是每次要输入 exit 然后回车,比较麻烦。你可以用快捷键 Ctrl+d 来注销登录,一般情况下,快捷键一按窗口都直接关闭了,还省了两次鼠标点击。

在前面说道保存会话时,大家或许也注意到,下面有个 Close window on exit 有三个选项:

  • Always (不管怎样,窗口总是要关闭的)
  • Never (无论是否有程序还在运行,都不要关闭窗口)
  • Only on clear exit (这个是默认选中的,只有在本次登录中运行的程序都正常终止或者在后台运行,窗口才关闭)

有的程序在执行时,虽然在命令最后面加上"&"就能放到后台运行。但是正常注销登录后,窗口没有被自动关闭,还能看到程序的输出,这时强制关闭窗口还是可以的。为了避免这种情形,可以使用 nohup 命令。
用法: nohup 命令 命令参数,这样就可以了。

删除 PuTTY 的设置

如果只是在其他机器上临时用了一个 PuTTY,用完以后想删除 PuTTY 的配置,就在控制台里输入如下的命令:putty.exe -cleanup

pscp的使用

putty可以远程登录主机进行操作,而pscp则可以向远程主机传输文件,而且使用也十分简单。pscp不想puttty直接运行,而是通过命令提示符运行。输入pscp.exe即可看到pscp的具体用法。

可以看出 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 [email protected]:/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 [email protected]:.把主机 192.168.6.200 上的用户 taylor 主目录下的所有 *.tgz 文件拷贝到本地的 c:\backup 目录中,如果 SSH 版本是 SSH v1,那这个命令就会出错。

pscp [email protected]:*.tgz c:\backup

psftp的使用

用法与 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 会话并退出 SFTP
    这个没啥说的,close 就关闭了 SFTP 连接
  • bye/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 *.c
  • mput [-r] <filename|directory> [dest] 把一批文件/目录上传到服务器,可以用通配符,-r 的含义与 put 一样,用法举例:mput *.c
  • reget [-r] <filename|directory> 从服务器续传下载一个文件/目录,这个命令不能用通配符,-r 的含义与 get 一样
  • reput [-r] <filename|directory> [dest] 把一批文件/目录续传上传到服务器,前提是远端必须存在需要续传的文件,这个命令不能用通配符,-r 的含义与 put 一样
  • dir [directory] 列目录
  • ls 和 dir 一样
  • chmod [file|directory] 改变文件的权限,与 Unix 的 chmod 命令类似,用法举例:chmod a+x *.sh
  • del <filename> 删除文件,要注意的是 del 只能删除文件
  • rm 与 del 一样
  • mkdir <new-directory-name> 创建一个目录
  • rmdir <directory> 删除一个空目录,只有空目录才可以被删除
  • mv <source-file|source-directory> <dest-file|dest-directory> 改名/移动。如果源和目的都是文件或目录,则是改名。如果目的是目录的话,则是移动。
  • ren <source> <distination> 重命名或移动远端的文件
  • ! 在本地命令前加一个感叹号,就可以直接执

其他可选的 SFTP 客户端

FileZilla : http://filezilla.sf.net

WinSCP : http://www.winscp.net

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

看上去 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 [email protected] 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

说到这里,就会明白上面的那个命令 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 [email protected]我经常要查看 Tomcat 的运行日志

plink [email protected] tail -f ~/apache-tomcat-5.5.17/logs/catalina.out每天都要看服务器上的剩余空间,就用这个命令:

plink [email protected] 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 [email protected]结合上 PSCP 我们还可以完成文件的每天备份

plink [email protected] tar jcf $(date '+documents.%F.tar.bz2') ~/documents

pscp [email protected]:$(date '+documents.%F.tar.bz2') c:\backup\

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

https://www.cnblogs.com/CraryPrimitiveMan/p/3647742.html

发布了207 篇原创文章 · 获赞 13 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/lc11535/article/details/103350670