说明:putty常用于连接远程的linux服务器。此博文分享在复习过程中,实战遇到的问题,具体的细节和术语准确度别纠结。(使用putty的主要原因它是免费的,SecureCRT,Xshell,说实话比它好用多了!但是收费。。。)
随着移动终端大行其道,linux系统越来越火,作为一个爱好者或码员学会linux势在必行。
@Author:拈花为何不一笑
1.简介
(1.1)putty官网:
https://www.putty.org/
(1.2).Putty官方定义
PuTTY is an SSH and telnet client, developed originally by Simon Tatham for the Windows platform.
PuTTY is open source software that is available with source code and is developed and supported by a group of volunteers.
(1.3).民间定义
Putty是一个免费的、Windows平台下的telnet、rlogin和ssh客户端,在各种远程登录工具中,Putty是出色的工具.
2.下载与安装
https://www.putty.org/ #在浏览器中输入此网址, 进主首页,版本putty-0.70-installer.msi
在跳转后的页面找到内容 putty-0.70-installer.msi,进行下载, #点击or by FTP下载然后像普通软件一样安装,不要点signature这个要解密什么的。。。
3.Putty基本使用
3.1连接远程linux机器
Win键 打开PuTTY, 如下图
下面的操作,记得点save按钮,保存会话设置,下次再连接192.168.179.129机器时就不需要再配置一遍了。
提示,建立与192.168.179.129的服务器进行会话(Session)时输入的信息(用户名和密码),进行保存。(通常笔者的习惯是不喜欢保存的,鉴于安全。)
看看Putty(发音’爬梯’ 呵呵)这屏幕真是短小精悍(男子),小巧可爱(萝莉)。呵呵……
查看一下有哪些终端(客户端)连接到这台linux服务器,输入w命令,紧接着输入tty命令
可以发现有两个终端连接了linux服务器,其中pts/1是笔者使用Putty连接的。另外一个
是使用SecureCRT连接linux服务器的。(当然这两个连接都是笔者在操纵)
3.2 Putty工具中鼠标使用复制、粘贴功能。
按照下图进行设置后,
左键选中内容的同时单击一下,就完成复制,再右键–>>>弹出对话框:选择”paste”进行粘贴。
3.3 Putty 上传和下载
**前言: 这里遇到的问题可触类旁通ssh登陆时延迟和认证被拒绝等问题**
(1) 概念说明:
PSCP (PuTTY Secure Copy client)与 PSFTP (PuTTY SFTP client) PSCP 通过 SSH 连接,
在两台机器之间安全的传输文件。
(2) 本地windows 使用putty的pscp.exe进行文件上传,使用linux的root用户登陆linux
时遇到问题:
==>>>成功输入密码后报GSSAPI authentication request refused。
解决方案:在linux服务器中修改两个参数:
GSSAPIAuthentication设置成no
UseDNS设置成no
顺便把这个也改了,改成:UsePAM yes
[root@jtxdsh-129 ~]# cat -n /etc/ssh/sshd_config | grep -i GSSAPIAuth
79 GSSAPIAuthentication no
80 #GSSAPIAuthentication yes
[root@jtxdsh-129 ~]# cat -n /etc/ssh/sshd_config | grep -i UseDNS
121 #UseDNS yes
122 UseDNS no
通过比较上图与下面的图,发现GSSAPI authentication request refused错误提示没有了。但是本地windows使用linux的root用户还是不能够上传文件至linux中,同样还卡在:”Connected to 192.168.179.129”处,本人通过查看远程的linux系统中的sshd服务,有两个,其中是一个就是此处进行文件上传时开启的(通过查询系统安全日志” cat /var/log/secure” 找到以下信息: jtxdsh-129 sshd[2991]: subsystem request for sftp” 正是卡住的地方发射出去的sftp来进行文件传输,但是传输不成功卡住了。说明sftp是依附于sshd服务的,它不是一个单独的进程,netstat –tupln | grep sshd时进行了验证。)
转换思路,换了一个用户:guestus,此用户却能够实现本地与远程linux之间进行上传和下载文件。
改成guestus用户后就能够使用pscp.exe进行文件传输了(上传和下载),如下
(a)从本地windows中上传一个文件abc.txt 至远程的linux服务器中
(b)上传一个目录 test_upload(上传目录加一个参数-r, 这个目录下只有一个图片文件)
( c ) 从linux中下载一个目录和一个文件到本地windows中
下载目录/home/guestus/c_code
下载文件/home/guestus/hellobbk
==>>>那么问题来了,为什么换个用户putty的pscp.exe就可以进行文件的上传和下载了?
原因: /etc/profile 和 ~/.profile ~/.bashrc等中的脚本, 影响到了pscp.exe发射的sftp进行文件传输(上传和下载)
解决方案,本人这里是由于/root/.bashrc脚本文件影响到了pscp.exe。(这不是猜的,推理+实践验证的!),相应的修改
/root/.bashr脚本文件,问题解决。
===>>>解决问题的过程或思路(供其他迷茫之人参考),首先本人尝试使用pscp –scp 选项进行文件上传,发现
与前面guestus上传成功的的信息进行比较,发现root用户,
在调用sftp时执行了/root/.bashr脚本文件(因为里面有日志输出,所以本人知道)
D:\Program Files\PuTTY>pscp -l root -pw 12826ybb -v -scp e:\abc.txt 192.168.179.129:/home
pscp -v输出信息分析(前面guestus用户上传成功的信息图),如图:
这张图箭头指向的框,这段,在执行pscp -l root -pw 12826ybb -v -scp e:\abc.txt 192.168.179.129:/home 没有输出。
但是输出了“WARNING: devtoolset-2 is enabled!”(这东西,本人熟悉是设置一个gcc4.8.2的环境来支持c++11语法)
紧接着输出,Send EOF message(表示结束了,意思在期间根据没有Sending file…信息)
然后,去修改/root/.bashr脚本文件,经过验证,上传成功,如图:
===>>> pscp传输文件(上传和下载)时,windows系统中目录中含有空格的要用双引号引起来,否则报错:” More than one remote source not supported”
D:\Program Files\PuTTY> pscp [email protected]:/usr/local/src/nginx-1.1.10.tar.gz “F:\2.c\linux操作系统学习\0 VM开启黑客之门\linux中常用软件”
[email protected]’s password:
nginx-1.1.10.tar.gz | 685 kB | 685.1 kB/s | ETA: 00:00:00 | 100%
D:\Program Files\PuTTY>
===>>> pscp传输文件(上传和下载)时,linux系统用户名@ip:/usr/local/src中的冒号两边不要有空格,否则报错” More than one remote source not supported”
===>>> pscp pscp传输文件(上传和下载)时,要求内存约300M以上,否则报”Out of memory”
@Author:拈花为何不一笑
若有不清楚的可以留言,笔者看到后会解答。谢谢!