sftp命令和ftp命令的区别

FTP/SFTP/SSH命令登陆

背景: 有一台Windows OS,两台CentOS,由于业务需求Windows上不能安装File Zilla等软件,但又必须要传输文件,查找发现可以采用SFTP的方式连接CentOS来传输文件。CenOS之间SSH登陆经常需要输入密码,偷懒点可以考虑免密码方式登陆。

首先复习下常用协议端口:

FTP 默认端口21/TCPTFTP 默认端口 69/UDPSSH/SFTP 默认端口22/TCPSMTP Simple Mail Transfer Protocol (E-mail) 默认端口25/TCPPOP3 Post Office Protocol (E-mail) 默认端口110/TCPWindows 远程登陆默认端口 3389

本文研究方向: ftp -> sftp -> ssh -> 密钥分析

FTP登陆

FTP和SFPT两者登陆方式类似,因为当前没有ftp server只有sftp server,所以暂时不做ftp测试,但使用方式和sftp基本相同,这里主要简单介绍下。

先简单介绍下FTP的使用情况。

命令格式:ftp [-v][-d][-i][-n][-g][-s:filename][-a][-w:windowsize][computer]

-v 不显示远程服务器响应-n 禁止第一次连接的时候自动登陆-i 在多个文件传输期间关闭交互提示-d 允许调试、显示客户机和服务器之间传递的全部ftp命令-g 不允许使用文件名通配符,文件名通配符的意思是说允许在本地文件以及路径名中使用通配字符-s:filename 指定包含ftp命令的文本文件。在ftp命令启动后将自动运行这些命令。在加的参数里不能有空格。-a 绑定数据连接时,使用任何的本地端口-w:windowsize 忽略默认的4096传输缓冲区computer 指定要连接的远程计算机的ip地址

常用方式:

     # C:UsersAdministrator>ftp    // 开启ftp     # ftp> open 169.254.210.111    // 使用用户名和密码登陆,然后就可以正常使用了     # ftp> ls     # ftp> quit

主要命令:

     ftp> bye                                              //结束与远程计算机的 FTP 会话并退出 ftp    bye         ftp> cd RemoteDirectory                   //更改远程计算机上的工作目录     ftp> dir [RemoteDirectory]                //显示远程计算机上的目录文件和子目录列表         ftp> get RemoteFile [LocalFile]          //使用当前文件传输类型将远程文件复制到本地计算机。如果没有指定 LocalFile,文件就会赋以 RemoteFile 名     ftp> ls [RemoteDirectory]                  //显示远程目录上的文件和子目录的简短列表     ftp> open Computer [Port]               //与指定的 FTP 服务器连接。     ftp> put LocalFile [RemoteFile]        // 使用当前文件传输类型将本地文件复制到远程计算机上, 和send一样

ftp也可以操作本地目录,在命令前加上!或l, 例如lcd等。

SFTP登陆

登陆方式: > sftp userid@ip [-P port] // 后续需要输入密码

C:Usershuanxy>sftp root@100.240.211.103The authenticity of host '100.240.211.103 (100.240.211.103)' can't be established.RSA key fingerprint is SHA256:BOvQeMRTjTPdae73JciktVc8odpXouwck3P/YJNjYuI.Are you sure you want to continue connecting (yes/no)?Warning: Permanently added '100.240.211.103' (RSA) to the list of known hosts.******************************************************This interface is not for user or customer usage.  i1nLogin to this interface is not permitted.******************************************************root@100.240.211.103's password:Connected to root@100.240.211.103.sftp> lsbootprompt              edgeServiceSSHKey.sh    lsyncd.conf             ovfEnv.txt              swap.action             z.hostfix.action

命令:

ascii                           Set transfer mode to ASCIIbinary                          Set transfer mode to binarycd path                         Change remote directory to 'path'lcd path                        Change local directory to 'path'detail remote-path          Display system information about remote file or folderldetail local-path             Display system information about local file or folderchgrp group path            Change group of file 'path' to 'group'chmod mode path          Change permissions of file 'path' to 'mode'chown owner path          Change owner of file 'path' to 'owner'exit                            Quit sftphelp                            Display this help textinclude filename             Include commands from 'filename' Alternate: < filenameget [-r][-a | -b] remote-path  Download file                                  -r downloads directory recursively                                  force ascii (-a) or binary (-b) modeln [-s] existingpath linkpath  Hardlink / symlink remote filels [options] [path]             Display remote directory listinglls [options] [path]            Display local directory listingmkdir path                      Create remote directorylmkdir path                     Create local directorymv oldpath newpath             Move remote filelmv oldpath newpath            Move local fileopen [user@]host[:port]        Connect to remote hostput [-r][-a | -b] local-path   Upload file                                  -r uploads directory recursively                                  force ascii (-a) or binary (-b) modepwd                             Display remote working directorylpwd                            Print local working directoryquit                            Quit sftprename oldname newname         Rename remote filelrename oldname newname        Rename local filermdir path                     Remove remote directorylrmdir path                    Remove local directoryrm path                         Delete remote filelrm path                        Delete local filesu username                    Substitutes the current user                                   This is only supported with VShell for                                 Windows 3.5 or later.type [transfer-mode]           Display or set file transfer modeview remote-path               Download and open fileversion                         Display protocol version

常用命令:

cd 路径                         更改远程目录到“路径”lcd 路径                        更改本地目录到“路径”ls [选项] [路径]                显示远程目录列表lls [选项] [路径]               显示本地目录列表put 本地路径                   上传文件get 远程路径                   下载文件

例如:

sftp> lcd C:\sftp> lcd InstallToolssftp> lcd baidusftp> lls驱动器 C 中的卷没有标签。卷的序列号是 C6BD-5CF5C:InstallToolsbaidu 的目录2021/03/04  14:33    <DIR>          .2021/03/04  14:33    <DIR>          ..2021/01/29  21:36    <DIR>          BaiduNetdisk2021/03/04  14:33                 6 test.txt               1 个文件              6 字节               3 个目录 16,666,349,568 可用字节sftp> put test.txtUploading test.txt to /home/root/test.txttest.txt                                                                              100%    6     0.6KB/s   00:00sftp> lsbootprompt              edgeServiceSSHKey.sh    lsyncd.conf             ovfEnv.txt              swap.action             test.txt                z.hostfix.actionsftp> get ovfEnv.txtFetching /home/root/ovfEnv.txt to ovfEnv.txt

SFTP协议:

SFTP协议能够进行“远程文件获取,文件内容传输,文件管理”等操作,它的控制信号和数据信号的传输通过安全数据通道进行。一般情况下,这个安全数据通道由SSH连接提供,即SSH连接隧道作为安全数据通道。跟只能进行简单文件内容传输的SCP协议相比,SFTP协议更像是一个远程文件系统协议。SFTP协议工作于OSI七层体系的应用层。

SFTP协议分为两个端,分别是SFTP Client和SFTP Server。SFTP Client和SFTP Server之间的控制信号和文件内容的传输得通过安全数据通道进行,安全数据通道可由“Transport Layer Security(TLS)”,“SSH”等协议提供,一般情况下是由SSH协议提供。 一旦SFTP Client和SFTP Server之间的连接得以建立,就可以通过二者之间的控制信号和文件内容的传输实现远程文件系统的功能。

sftp工作模式

它是作为SSH2的一个子服务工作。

sftp工作原理

sftp-server 跟常见的server不太一样,不是持续运行,监听端口的,而是被动触发,只有当ssd接受sftp请求的时候,才会加载sftp-server。

SSH登陆

SSH: Secure Shell缩写

SSH协议框架

* 传输层协议(The Transport Layer Protocol)提供服务器认证,数据机密性,信息完整性 等的支持;

* 用户认证协议(The User Authentication Protocol) 则为服务器提供客户端的身份鉴别

* 连接协议(The Connection Protocol) 将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用; 各种高层应用协议可以相对地独立于SSH基本体系之外,并依靠这个基本框架,通过连接协议使用SSH的安全机制。

SSH的工作过程?

在整个通讯过程中,为实现 SSH的安全连接,服务器端与客户端要经历如下五个阶段:

* 版本号协商阶段,SSH目前包括 SSH1和SSH2两个版本, 双方通过版本协商确定使用的版本

* 密钥和算法协商阶段,SSH支持多种加密算法, 双方根据本端和对端支持的算法,协商出最终使用的算法

* 认证阶段,SSH客户端向服务器端发起认证请求, 服务器端对客户端进行认证

* 会话请求阶段, 认证通过后,客户端向服务器端发送会话请求

* 交互会话阶段 ,会话请求通过后,服务器端和客户端进行信息的交互

1 . 版本号协商阶段

1. 服务器打开端口 22,等待客户端连接。

2.客户端向服务器端发起TCP初始连接请求,TCP连接建立后,服务器向客户端发送第一个报文,包括版本标志字符串,格式为“SSH-<主协议版本号>.<次协议版本号>-<软件版本号>”,协议版本号由主版本号和次版本号组成,软件版本号主要是为调试使用。

3.客户端收到报文后,解析该数据包,如果服务器端的协议版本号比自己的低,且客户端能支持服务器端的低版本,就使用服务器端的低版本协议号,否则使用自己的协议版本号。

4. 客户端回应服务器一个报文,包含了客户端决定使用的协议版本号。服务器比较客户端发来的版本号,决定是否能同客户端一起工作。

5. 如果协商成功,则进入密钥和算法协商阶段,否则服务器端断开 TCP连接。

Note: 版本号协商阶段报文都是采用明文方式传输的。

2. 密钥和算法协商阶段

1. 服务器端和客户端分别发送算法协商报文给对端,报文中包含自己支持的公钥算法列表、加密算法列表、MAC(Message Authentication code,消息验证码)算法列表、压缩算法列表等;

2. 服务器端和客户端根据对端和本端支持的算法列表得出最终使用的算法。

3. 服务器端和客户端利用 DH交换(Diffie-Hellman Exchange)算法、主机密钥对等参数,生成会话密钥和会话 ID。

通过以上步骤,服务器端和客户端就取得了相同的会话密钥和会话ID。

* 对于后续传输的数据,两端都会使用会话密钥进行加密和解密,保证了数据传送的安全

* 在认证阶段,两端会使用会话 ID用于认证过程。

Note:在协商阶段之前,服务器端已经生成 RSA或 DSA密钥对,他们主要用于参与会话密钥的生成。

3. 认证阶段

1. 客户端向服务器端发送认证请求,认证请求中包含用户名、认证方法、与该认证方法相关的内容(如:password认证时,内容为密码)

2. 服务器端对客户端进行认证,如果认证失败,则向客户端发送认证失败消息,其中包含可以再次认证的方法列表。

3. 客户端从认证方法列表中选取一种认证方法再次进行认证。

4. 该过程反复进行, 直到认证成功或者认证次数达到上限, 服务器关闭连接为止。

SSH提供两种认证方式:

1. password认证:客户端向服务器发出 password认证请求,将用户名和密码加密后发送给服务器;服务器将该信息解密后得到用户名和密码的明文,与设备上保存的用户名和密码进行比较,并返回认证成功或失败的消息。

2. publickey 认证:采用数字签名的方法来认证客户端。目前,设备上可以利用RSA和 DSA两种公共密钥算法实现数字签名。客户端发送包含用户名、公共密钥和公共密钥算法的 publickey 认证请求给服务器端。服务器对公钥进行合法性检查,如果不合法,则直接发送失败消息;否则,服务器利用数字签名对客户端进行认证,并返回认证成功或失败的消息

SSH2.0还提供了 password-publickey 认证和 any 认证:

1. password-publickey 认证:指定该用户的认证方式为 password 和 publickey认证同时满足。客户端版本为 SSH1的用户只要通过其中一种认证即可登录;客户端版本为 SSH2的用户必须两种认证都通过才能登录。

2. any认证:指定该用户的认证方式可以是 password,也可以是 publickey。

4.会话请求阶段

1. 服务器等待客户端的请求;

2. 认证通过后,客户端向服务器发送会话请求;

3. 服务器处理客户端的请求。请求被成功处理后, 服务器会向客户端回应 SSH_SMSG_SUCCESS包,SSH进入交互会话阶段;否则回应 SSH_SMSG_FAILURE包,表示服务器处理请求失败或者不能识别请求。

5.交互会话阶段

在这个模式下,数据被双向传送:

1. 客户端将要执行的命令加密后传给服务器;

2. 服务器接收到报文,解密后执行该命令,将执行的结果加密发还给客户端;

3. 客户端将接收到的结果解密后显示到终端上;

SSH的两种登陆方式介绍

(1) 口令验证登录,这个比较常用。

FTP/SFTP/SSH命令登陆

(2) 密钥验证登录,密钥验证的前提需要登陆主机生成一对密钥(公钥和私钥),并将公钥放置在目标机上。

FTP/SFTP/SSH命令登陆

其基本流程: 当客户机输入ssh root@hostip时,首先客户机查看本地公钥,如果有会将客户机本地的公钥一起发送到目标机上。 目标机收到客户端公钥后会去check authorized_keys文件中是否有这个公钥,如果没有就把目标机上的公钥传输给客户机,这种就是口令验证方式。如果查找到这个公钥,就生成一段challenge并用这个公钥加密回送到客户端,客户端收到后用私钥解密,然后将解密的内容返回给目标机,目标机再验证两端challenge是否相同,如果相同就建立连接,这个就是免密码登陆。

公私钥简介与原理

公钥和私钥都属于非对称加密算法的一个实现,这个加密算法的信息交换过程是:

1) 持有公钥的一方(甲)在收到持有私钥的一方(乙)的请求时,甲会在自己的公钥列表中查找是否有乙的公钥,如果有则使用一个随机字串使用公钥加密并发送给乙。

2) 乙收到加密的字串使用自己的私钥进行解密,并将解密后的字串发送给甲。

3) 甲接收到乙发送来的字串与自己的字串进行对比,如过通过则验证通过,否则验证失败

公钥私钥

密钥:一般就是一个字符串或数字,在加密或者解密时传递给加密/解密算法。

对称加密算法:加密和解密都是使用的同一个密钥。因此对称加密算法要保证安全性的话,密钥要做好保密,只能让使用的人知道,不能对外公开。

非对称加密算法:加密使用的密钥和解密使用的密钥是不同的。 公钥密码体制就是一种非对称加密算法。 公钥:用于加密(写信时,信件的内容),以达到保密的效果

私钥:用于解密(收到的信件的内容)

使用环境两台CentOS :

客户机 CentOS A: 100.240.211.242

目标机 CentOS B: 100.240.211.103

密钥登陆的大概步骤

ssh使用私钥登录大致步骤就是:主机A(客户端)创建公钥私钥,并将公钥复制到主机B(目标机)的指定用户下,然后主机A使用保存私钥的用户登录到主机B对应保存公钥的用户。

1) 客户端(登录主机)生成一对密钥:# ssh-keygen -t rsa

2) 将客户机的公钥复制到服务端(目标机)要登录的用户的 ~/.ssh/authorized_keys 文件中:# ssh-copy-id -i ~/.ssh/id_rsa.pub root@100.240.211.103

注意:如果使用自己复制的方法,一定要注意.ssh目录和authorized_keys文件的权限,前者是700,后者是600

将公钥复制到被登陆机上的~/.ssh/authorized_keys文件中

# cat id_rsa.pub >> authorized_keys

# chmod 600 authorized_keys ##修改文件权限为600

# scp authorized_keys root@100.240.211.242:/home/root/.ssh/

如果目标机上没有.ssh文件,需要先创建。

# mkdir .ssh

# chmod 700 .ssh ##将目录权限改为700该目录的权限必须是700才有效

3)然后ssh登陆即可。

root@localhost:~/.ssh# ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key (/home/root/.ssh/id_rsa):Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /home/root/.ssh/id_rsaYour public key has been saved in /home/root/.ssh/id_rsa.pubThe key fingerprint is:SHA256:W78Qh/dn0nUCESCK8eZZurLPr3H+9lRadDlECJ4uJh0 root@localhostThe key's randomart image is:+---[RSA 3072]----+|    .   . .o+.oo ||     + . .. .o. .||    . + .E o. .o.||     o +. o. o ..||      +.S++.o + o||       .oo.= = oo||    . o o . + o +||     + +  .o . + ||    ..+ooo..o    |+----[SHA256]-----+root@localhost:~/.ssh# lsid_rsa  id_rsa.pubroot@localhost:~/.ssh# cat id_rsa.pub >> authorized_keysroot@localhost:~/.ssh# chmod 600 authorized_keysroot@localhost:~/.ssh# scp authorized_keys root@100.240.211.103:/home/root/.ssh/The authenticity of host '100.240.211.103 (100.240.211.103)' can't be established.RSA key fingerprint is SHA256:BOvQeMRTjTPdae73JciktVc8odpXouwck3P/YJNjYuI.Are you sure you want to continue connecting (yes/no/[fingerprint])? yesWarning: Permanently added '100.240.211.103' (RSA) to the list of known hosts.******************************************************This interface is not for user or customer usage.  i1nLogin to this interface is not permitted.******************************************************root@100.240.211.103's password:authorized_keys                               100%  568     1.0MB/s   00:00root@localhost:~/.ssh#root@localhost:~/.ssh# ssh root@100.240.211.103******************************************************This interface is not for user or customer usage.  i1nLogin to this interface is not permitted.******************************************************Last login: Wed Mar  3 21:45:03 2021 from 100.106.238.141DEVELOPMENT USE ONLY - Command line access is not intended for the user or consu       mer.root@localhost:~#

后续再继续深入研究密钥原理。

参考:

***blogs.com/zmlctt/p/3946860.html

***blogs.com/henkeyi/p/10487553.html

***/aliaichidantong/article/details/86242540

***/liuno0/article/details/100552564

原创文章,作者:芒小种,如若转载,请注明出处:http://www.fhgg.net/shenghuobaike/43888.html

本文来自投稿,不代表【食趣网】立场,如若转载,请注明出处:http://www.fhgg.net/

(0)
上一篇 2023年3月24日 下午5:58
下一篇 2023年3月25日 上午9:01

相关推荐

发表回复

登录后才能评论