OpenSSH中SFTP协议实现相关程序
2015-08-23 21:42
351 查看
一、OpenSSH中SFTP协议实现相关程序
OpenSSH中SFTP协议实现的相关程序有:sftp和sftp-server[2]。
sftp程序实现SFTP协议中的SFTP-Client,sftp-server实现SFTP协议中的SFTP-Server
备注:
sftp程序路径为:/usr/bin/sftp
sftp-server程序路径为:/usr/lib/openssh/sftp-server
二、工作原理
1、sftp-server是被触发运行
sftp-server跟常见的Server不太一样,不是“持续运行,监听端口”的,而是被触发运行的(比如Mysql Server“持续运行,监听3306端口”)。具体是由SSH Server(在OpenSSH中是sshd程序)触发的。
其实可以在sshd程序使用的sshd_config文件中配置需要触发运行的“SFTP协议中SFTP-Server的具体实现程序”,默认配置的就是sftp-server这个实现程序,可以改成使用internal-sftp。[3]
当sshd程序刚开始运行的时候并不需要加载sftp-server这个程序,只有在向sshd程序发送sftp请求的时候才会去加载运行sftp-server程序,这个论述可以通过以下实验证明:
1)直接加载运行sshd程序,不会产生sftp-server进程,然后向sshd发送sftp请求,发现产生了sftp-server进程
2)如果首先将"/usr/lib/openssh/sftp-server"移除,然后重新加载运行sshd程序,发现不会产生任何错误,能够正常工作,也没有产生sftp-server进程,然后向sshd发送sftp请求,发现会出现如图1错误:
图1
2、安全数据通道
在sftp和sftp-server的程序实现中,安全的数据通道由SSH连接提供。
3、整个SFTP连接示意图
整个过程的示意图如图2所示:
图2
三、用法介绍
3.1、sftp-server程序
由sshd负责调用,一般不需要特殊配置
3.2、sftp程序
我们主要来介绍sftp程序的使用用法。
sftp是一个具有交互运行模式的命令,主要工作都可在交互运行模式中进行。
1、进入交互运行模式
-P:选项值被直接传递给底层调用的ssh程序,作为ssh程序中"-p"选项的值
user:选项值被直接传递给底层调用的ssh程序,作为ssh程序中"-l"选项的值
remoteHost:被直接传递给底层调用的ssh程序,等价于ssh程序中"hostname"
以上这些选项都可在ssh_config文件中配置,以"~/.ssh/config"文件为例,其中增加如下配置内容后,命令可简化为:
备注:
另外还有两个比较有用的选项
-D sftp-server-path:表示不是由sshd进程打开sftp-server,而是直接根据sftp-server-path路径打开sftp-server。
这样子得到的sftp-server进程的父进程是执行命令的bash进程;如果是由sshd进程打开sftp-server,那么得到的sftp-server进程的父进程是sshd进程
-v:表示打印日志信息,这有助于我们进行调试,解决遇到的问题。"-v"选项越多,表示打印的日志信息越详细。
2、交互模式中的命令
进入交互模式中,可以运行一些文件管理命令,这些文件管理命令由sftp进程进行解析运行。(sftp交互模式中的这些文件管理命令跟通常的文件管理命令,比如sftp交互模式中的cd命令和通常的cd命令,功能相近,因而为了减少学习成本,sftp交互模式中的这些文件管理命令跟相对应的通常的文件管理命令“名称相近,用法相似”)
这些文件管理命令可以分为3个类别:
2.1、针对远端主机来说
2.2、针对本地机器来说
2.3、其他
参考文献:
[1]man sftp
[2]man 8 sftp-server
[3]man 5 sshd_config
OpenSSH中SFTP协议实现的相关程序有:sftp和sftp-server[2]。
sftp程序实现SFTP协议中的SFTP-Client,sftp-server实现SFTP协议中的SFTP-Server
备注:
sftp程序路径为:/usr/bin/sftp
sftp-server程序路径为:/usr/lib/openssh/sftp-server
二、工作原理
1、sftp-server是被触发运行
sftp-server跟常见的Server不太一样,不是“持续运行,监听端口”的,而是被触发运行的(比如Mysql Server“持续运行,监听3306端口”)。具体是由SSH Server(在OpenSSH中是sshd程序)触发的。
其实可以在sshd程序使用的sshd_config文件中配置需要触发运行的“SFTP协议中SFTP-Server的具体实现程序”,默认配置的就是sftp-server这个实现程序,可以改成使用internal-sftp。[3]
当sshd程序刚开始运行的时候并不需要加载sftp-server这个程序,只有在向sshd程序发送sftp请求的时候才会去加载运行sftp-server程序,这个论述可以通过以下实验证明:
1)直接加载运行sshd程序,不会产生sftp-server进程,然后向sshd发送sftp请求,发现产生了sftp-server进程
2)如果首先将"/usr/lib/openssh/sftp-server"移除,然后重新加载运行sshd程序,发现不会产生任何错误,能够正常工作,也没有产生sftp-server进程,然后向sshd发送sftp请求,发现会出现如图1错误:
图1
2、安全数据通道
在sftp和sftp-server的程序实现中,安全的数据通道由SSH连接提供。
3、整个SFTP连接示意图
整个过程的示意图如图2所示:
图2
三、用法介绍
3.1、sftp-server程序
由sshd负责调用,一般不需要特殊配置
3.2、sftp程序
我们主要来介绍sftp程序的使用用法。
sftp是一个具有交互运行模式的命令,主要工作都可在交互运行模式中进行。
1、进入交互运行模式
sftp -i identify_file -P port user@remoteHost-i:选项值被直接传递给底层调用的ssh程序,作为ssh程序中"-i"选项的值
-P:选项值被直接传递给底层调用的ssh程序,作为ssh程序中"-p"选项的值
user:选项值被直接传递给底层调用的ssh程序,作为ssh程序中"-l"选项的值
remoteHost:被直接传递给底层调用的ssh程序,等价于ssh程序中"hostname"
以上这些选项都可在ssh_config文件中配置,以"~/.ssh/config"文件为例,其中增加如下配置内容后,命令可简化为:
sftp RemoteHostAlias
Host RemoteHostAlias #指定配置匹配条件 HostName remoteHost User user Port port IdentityFile identify_file
备注:
另外还有两个比较有用的选项
-D sftp-server-path:表示不是由sshd进程打开sftp-server,而是直接根据sftp-server-path路径打开sftp-server。
这样子得到的sftp-server进程的父进程是执行命令的bash进程;如果是由sshd进程打开sftp-server,那么得到的sftp-server进程的父进程是sshd进程
-v:表示打印日志信息,这有助于我们进行调试,解决遇到的问题。"-v"选项越多,表示打印的日志信息越详细。
2、交互模式中的命令
进入交互模式中,可以运行一些文件管理命令,这些文件管理命令由sftp进程进行解析运行。(sftp交互模式中的这些文件管理命令跟通常的文件管理命令,比如sftp交互模式中的cd命令和通常的cd命令,功能相近,因而为了减少学习成本,sftp交互模式中的这些文件管理命令跟相对应的通常的文件管理命令“名称相近,用法相似”)
这些文件管理命令可以分为3个类别:
2.1、针对远端主机来说
cd chgrp grp path[grp是数字形式] chmod mode path chown own path[own是数字形式] ln ls mkdir pwd rename rm rmdir
2.2、针对本地机器来说
lcd lls(支持的选项跟通常的ls命令一样) lmkdir lpwd
2.3、其他
get -r:从远端主机复制文件到本地,加了r选项表示允许递归复制目录,不会解析遇到的软符号链接 progress:切换是否显示进度条 put -r:从本地复制文件到远端主机,加了r选项表示允许递归复制目录,不会解析遇到的软符号链接 exit:退出
参考文献:
[1]man sftp
[2]man 8 sftp-server
[3]man 5 sshd_config
相关文章推荐
- 每天一个Linux命令-22(关闭防火墙)
- UVA 10801 - Lift Hopping (Dijkstra算法/最短路)
- Centos6.5下MySQL5.5.45数据库迁移
- Linux的一些基本命令
- Linux命令详解(3):cd
- HBase-1.0.1学习笔记(二)HBase Shell工具使用
- Linux基础知识--4.LInux用户和用户组以及权限管理
- Linux基础--/etc/shadow中字段的分支和操作
- nginx nginx.conf配置文件
- Ubuntu学习之Linux文件和目录管理
- CentOS6.5实现PXE+Kickstart无人值守安装操作系统
- hdu 5420 Victor and Proposition 线段树建图+强连通分量
- Nginx开发从入门到精通十三
- linux时间命令date、clock、hwclock
- 六种微服务架构的设计模式
- Nginx开发从入门到精通十二
- Linux下复制粘贴快捷键
- Nginx开发从入门到精通十一
- Nginx开发从入门到精通十
- Nginx开发从入门到精通九