sftp

sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。

参考文档: https://www.cnblogs.com/liangml/p/5969145.html

参考文档: https://blog.csdn.net/qq_35440678/article/details/52788808

连接到test1.alv.pub 并下载文件/tmp/1.txt

$ sftp alvin@test1.alv.pub
get /tmp/1.txt

设置了sftp用户shell为/bin/false后,允许其使用sftp

默认情况下,设置了用户的shell为/bin/false之后,该用户就不能登录也不能使用sftp了。

我们需要让一个用户能使用sftp但不能通过ssh登录,需要做如下配置

vim /etc/ssh/sshd_config
#Subsystem  sftp    /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp

sftp命令

 1. sftp user@ip

     你要用sftp, 当然得登录到sftp服务器啊, 在linux的shell中执行上面的命令后, linux shell会提示用户输入密码, 我们就输入password吧。 这样就成功建立了sftp连接。

2. help

    建立连接后, linux shell中的$编程了sftp>,  这也对。 现在执行以下help, 可以看看sftp支持哪些命令。



3. pwd和lpwd

    pwd是看远端服务器的目录, 即sftp服务器默认的当前目录。  lpwd是看linux本地目录。


4. ls和lls

    ls是看sftp服务器下当前目录下的东东, lls是看linux当前目录下的东东。


5. put a.txt

    这个是把linux当前目录下的a.txt文件上传到sftp服务器的当前目录下。


 6. get b.txt

   这个是把sftp服务器当前目录下的b.txt文件下载到linux当前目录下。

  7. !command

     这个是指在linux上执行command这个命令, 比如!ls是列举linux当前目录下的东东, !rm a.txt是删除linux当前目录下的a.txt文件。

     这个命令非常非常有用, 因为在sftp> 后输入命令, 默认值针对sftp服务器的, 所以执行rm a.txt删除的是sftp服务器上的a.txt文件, 而非本地的linux上的a.txt文件。

  8. exit和quit

配置sftp之后的报错

这里我们配置了 如下两行之后,执行sshd -t就可以看到报错,

Subsystem sftp internal-sftp
Match Group sftp

报错 :Directive ‘Ciphers’ is not allowed within a Match block

因为下面还有一行Ciphers aes128-ctr,aes192-ctr,aes256-ctr,

解决方案就是将 Ciphers aes128-ctr,aes192-ctr,aes256-ctr, 放在UseDNS no后面。