putty安装和使用
1 安装
putty是一款windows上很好用的连接远程服务器的小工具。下载地址:网址。进入网址,找到如下内容下载即可:
也可以下载历史版本:历史版本下载。
也可以直接下载我上传这个安装文件:网址。下载解压后,双击.msi文件安装即可。
安装过程一路默认,最后会多出四个程序,如下图:
我们可以打开这些应用的位置,默认位置是:C:\Program Files\PuTTY,这个路径已经加入到环境变量中了,因此可以使用这个路径下的.exe作为命令,该文件夹中的内容如下:
这里简单说明一下次文件夹中6个.exe文件的作用:
putty.exe:远程连接服务器,最为常用;
puttygen.exe:生成公钥和私钥,用于免密登陆远程服务器;
psftp.exe:用于在本地、远程服务器之间相互传输文件;
pscp.exe:和psftp.exe作用一样,不过命令不同,该命令类似于linux中的scp命令;
plink.exe:用于在本地执行远程服务器的命令;
pageant.exe:用于管理秘钥。
下面介绍上图框出来的五个工具的使用方式。
2 使用
2.1 putty.exe
这是putty套件中最为常用的工具,打开的初始界面如下:
这里输入远程服务器的IP地址,以及登陆的端口号(SSH默认端口号为22),点击Open后,在弹出的界面中输入账号和密码后就可以登陆。如下图:
这里演示的登陆阿里云服务器,用户名为wxx,输入的密码会隐藏(即我们输入的密码不会显示)。
如果要登陆多台服务器,我们可以保存为session,如下图,保存了两个session(分别叫做:aliyun、django):
输入IP地址、端口、以及会话名称,最后保存即可,如下图:
可以看到上面登陆终端后,字体很小,因此需要设置终端中字体的大小,这里很可能设置完成后,下次重启又会失效,这里介绍如何避免这个问题。
我这里一共有三个session(两个自己创建的,一个默认的Default Settings),每个都需要单独设置,可以理解为每个session的配置都是独立的。
这里以设置aliyun这个session为例,主要讲解如何设置终端的字体大小,步骤如下:
(1)点击aliyun,然后点击Load按钮,如下图:
(2)点击左侧菜单栏中的Window->Appearance,并改变其中的字体大小,如下图:
(3)点击左侧菜单栏中的Session,之后点击右侧的Save按钮,如下图:
这样之后及时重启putty,对于aliyun这个session,设置都是生效的。其它的设置也是类似的步骤,只需要改变第(2)步即可。例如后面2.2节中私钥位置的配置。
注意:后面的psftp、pscp、plink命令都是针对Default Settings这个session进行操作的。这个后面还会说到。
2.2 puttygen.exe
我们每次登陆远程服务器都需要输入用户名和密码,特别是输入密码,十分麻烦,这个工具就是要解决这个问题的。
点击puttygen.exe,默认界面如下:
点击Generate按钮,鼠标在空白处随意移动,生成公钥和私钥,演示如下:
这里最终生成的界面如下:
可以看到加密算法使用的是RSA算法,关于该算法的讲解可以参考:RSA公钥加密算法。该算法会生成公钥和私钥,公钥可以公开,私钥不能公开。
需要将公钥上传到服务器上,私钥保存到本地即可。点击上图中的Save private key,如果弹出警告框,点击是即可,然后给保存的私钥命名保存即可。如下图是需要保存的私钥,和公钥(直接复制到txt中即可):
我在电脑中公钥和私钥保存位置如下(私钥是点击按钮生成的,公钥是新建txt文件,然后将内容复制进去的):
接着可以配置免密登陆,首先使用用户名和密码登陆服务器,创建.ssh文件夹,文件夹中创建authorized_keys文件,该文件用于存放之前生成的公钥(可以存放多个公钥),命令如下:
mkdir .ssh
cd .ssh
touch authorized_keys
然后将之前生成的公钥复制到文件authorized_keys中。
之后需要配置需要免密登陆的session,设置只有第(2)步操作不同,如下图:
之后记得保存设置。
然后登陆,可以发现,只需要输入用户名即可登陆远程服务器,如下图:
2.3 psftp.exe
用于在本地和服务器之间传递文件,可以在cmd窗口中直接输入命令psftp,需要输入用户名、密码进行登陆。如果在putty中配置了免密登陆,则只需要输入用户名即可。
注意:这里默认连接的远程服务器是putty中Default Settings中对应的服务器。
使用该命令进入的界面如下,可以通过help查看提供的命令:
常用命令:
pwd # 在远程服务器中显示当前所在目录
cd # 在远程服务器上切换目录
ls # 显示远程服务器文件夹中的文件
lpwd # 在本地中显示当前所在目录
lcd # 在本地切换目录
!dir # 显示本地文件夹中的文件
put # 上传本地文件到服务器
get # 下载服务器文件到本地
文件、文件夹的传输:
(1)将本地文件上传到服务器中(D:\psftp\local_file.txt --> /home/wxx/):
put d:\psftp\local_file.txt
(2)将远程服务器上的文件下载到本地(/home/wxx/.bashrc --> D:\psftp\)
lcd d:\psftp # 本地目录切换
get .bashrc
(3)将本地文件夹上传到服务器中(D:\psftp\local_test\ --> /home/wxx/):
put -r d:\psftp\local_test
(4)将远程服务器上的文件夹下载到本地(/home/wxx/.ssh/ --> D:\psftp\)
lcd d:\psftp # 本地目录切换
get -r .ssh
2.4 pscp.exe
和psftp功能基本一致,用于本地和远程之间文件传输。
这里使用另外一台服务器django演示,这台服务器是通过docker搭建的,搭建在aliyun服务器上,有端口映射,aliyun上的20000端口映射到了docker内部的22端口。
如果没指定端口,则端口是putty中Default Settings这个session对应的端口。
文件、文件夹的传输(直接在cmd中输入下面的命令即可):
(1)将本地文件上传到服务器中(D:\psftp\local_file.txt --> /home/acs/):
pscp -P 20000 d:\psftp\local_file.txt acs@112.126.78.186:/home/acs/
(2)将远程服务器上的文件下载到本地(/home/acs/.bashrc --> D:\psftp\)
pscp -P 20000 acs@112.126.78.186:/home/acs/.bashrc d:\psftp\
(3)将本地文件夹上传到服务器中(D:\psftp\local_test\ --> /home/acs/):
pscp -P 20000 -r d:\psftp\local_test acs@112.126.78.186:/home/acs/
(4)将远程服务器上的文件夹下载到本地(/home/acs/.ssh/ --> D:\psftp\)
pscp -P 20000 -r acs@112.126.78.186:/home/acs/.ssh d:\psftp\
2.5 plink.exe
用于在本地执行远程服务器的命令,直接在cmd中执行即可。
如果没指定端口,则端口是putty中Default Settings这个session对应的端口。
在本地执行aliyun上的命令:
plink -P 22 wxx@112.126.78.186 "ls -al"
在本地执行django上的命令:
plink -P 20000 acs@112.126.78.186 "ls -al"