PSFTP 是一个使用 SSH 协议的 SFTP 客户端,通常用来在不同的主机或者不同的操作系统之间进行文件传输。它是 PuTTY 的一个组件,下载地址: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
连接服务器
主要通过两种方式连接到服务器
使用 psftp 命令
如果是从 cmd 中启动 psftp 的话,就需要使用到 psftp 命令来连接主机
C:\Users\xxx>psftp -l user -pw password -P port host
- -l : 用来指定登录的用户名
- -pw : 登录用户的密码
- -P : 用来指定远程主机的端口号
- host : IP 地址或者域名
扩展
- 可以不通过 -l 来指定用户名,可以使用 user@host 的方式来指定用户名
psftp -pw password -P port user@host
- 你也可以暂且直接忽略用户名与密码,后面 psftp 将会提示让你输入用户名以及密码
C:\Users\xxx>psftp -P 11111 xxxxxx.com
login as:xxx
xxx@xxxxxx.com's password:(注意在输入密码的时候密码是不会显示出来的)
- 虽然也是可以直接忽略指定主机的端口号,但是建议不要这么做。如果忽略 -P 的话,它将会默认使用 putty 中 Default Settings 中所设定的端口号,但是如果此时 Default Settings 中的端口号为空的话就会抛出 ssh_init: Network error: Cannot assign requested address 的错误,如果 Default Settings 中的端口号不正确的话, 就会抛出 FATAL ERROR: Network error: Connection timed out 的错误,所以说最好还是要使用 -P 来指定主机的端口号,有关于 ssh_init: Network error: Cannot assign requested address 的内容,请移步 PSFTP 出现 ssh_init: Network error: Cannot assign requested address 错误的原因以及解决方法
使用open 命令
如果直接双击打开 psftp.exe 的话,它首先将会使用 putty 中 Default Settings 中所设定的主机名与端口号进行登录,如果此时 Default Settings z中的主机地址与端口号都为空的话,将会出现 psftp: no hostname specified; use "open host.name" to connect 的提示
psftp: no hostname specified; use "open host.name" to connect
psftp>
此时就需要使用 open 命令连接服务器
open [登录的用户名@]主机名 端口号
扩展
- 跟 psftp 命令一样,也可以暂且先不指定登录的用户名,后面 psftp 会提示你输入用户名
psftp> open xxxxxx.com 28285
login as: xxx
xxx@xxxxxx.com's password:(注意在输入密码的时候密码是不会显示出来的)
- 跟 psftp 命令一样,也可以直接忽略指定主机的端口号,如果忽略主机的端口号的话,它将会默认使用 putty 中 Default Settings 中所设定的端口号,但是如果此时 Default Settings 中的端口号为空的话就会抛出 ssh_init: Network error: Cannot assign requested address 的错误,如果 Default Settings 中的端口号不正确的话, 就会抛出 FATAL ERROR: Network error: Connection timed out 的错误,所以说最好还是要使用 -P 来指定主机的端口号,有关于 ssh_init: Network error: Cannot assign requested address 的内容,请移步 PSFTP 出现 ssh_init: Network error: Cannot assign requested address 错误的原因以及解决方法
上传文件/文件夹
上传文件/文件夹使用的命令是 put
put [ -r ] [ -- ] <filename> [ <remote-filename> ]
例如:
put temp.txt
就是将 temp.txt 的文件上传到服务器
- -r 是用来上传文件夹的,例如:
put -r temp_dir
就是将 temp_dir 文件夹上传到服务器
- 在 put 命令中,只要开头带有连字符( - )的单词就会被当成命令的选项,如 -r 等,所以如果所上传的某个文件名或者文件夹名是以连字符作为开头的话,那这个文件名或者文件夹名就会被误当成命令的选项,所以这时候就需要用到 -- 了,使用了 -- 之后,后面开头为连字符的单词就不会再被误当成是选项了,例如:
put -r -- -temp_dir
这时候就会将 -temp_dir 当成是一个文件夹名,而不是一个选项,记住 -- 得放在 -r 后面,要不然 -r 就会失效了
- 可以使用如下的方式将所上传的文件或文件夹以新的名称上传到服务器上:
put -r temp_dir new_temp_dir
这时候将会以 new_temp_dir 作为文件夹名上传到服务器上
一次性上传多个文件/文件夹
可以使用 mput 实现一次性上传多个文件/文件夹
mput [ -r ] [ -- ] <filename-or-wildcard> [ <filename-or-wildcard>... ]
例如
mput temp1.txt temp2.txt temp3.txt
这时候就会将 temp1.txt 、temp2.txt 、temp3.txt 这些文件上传到服务器上
mput -r temp_dir1 temp_dir2 temp_dir3
这时候就会将 temp_dir1、temp_dir12 、temp_dir3 这些文件夹上传到服务器上
- 文件/文件夹名可以使用通配符,例如
mput *.txt
就会将所有的 txt 文件上传到服务器上
- 需要注意的是,mput 就无法像 put 那样可以以一个新的文件名/文件夹名上传到服务器上
下载文件/文件夹
下载文件/文件夹使用的命令是 get
get [ -r ] [ -- ] <filename> [ <local-filename> ]
例如
get temp.txt
将会把 temp.txt 文件从服务器上下载到本地
- -r / -- / <local-filename> 的这些选项的用法与 put 一致,在这里就不再赘述了 :)
一次性下载多个文件/文件夹
可以使用 mget 实现一次性从服务器上下载多个文件/文件夹到本地
mget [ -r ] [ -- ] <filename-or-wildcard> [ <filename-or-wildcard>... ]
例如
mget temp1.txt temp2.txt temp3.txt
这时候就会将 temp1.txt 、temp2.txt 、temp3.txt 这些文件从服务器上下载到本地
- 剩下的部分与 mput 命令一致,在这里就不再赘述了 :)
关闭连接
主要有两种方式来关闭连接
bye / quit 命令
bye 命令与 quit 命令其实是同一个东西,它们在关闭 SFTP 会话的同时退出 PSFTP 软件
close 命令
close 命令与 bye / quit 命令不一样的地方是,它只是关闭 SFTP 会话,但不会退出 PSFTP 软件,关闭了 SFTP 会话之后,可以再使用 open 命令连接到新的主机