[命令] Linux 命令 sftp 的使用 (通过 SFTP 协议传输文件)

正文:

案例一:显示 sftp 命令在执行过程中的详细步骤

# sftp -v 192.168.0.1

(补充:这里以使用 sftp 命令连接 IP 地址 192.168.0.1 为例)

案例二:非交互式将远处的文件拷贝到本地

# sftp eternalcenter@192.168.0.1:/tmp/test.txt

(补充:这里以通过用户 eternalcenter 登录,直接将 IP 地址 192.168.0.1 的文件 /tmp/test.txt 拷贝到本地的当前目录为例)

案例三:非交互式将本地的文件拷贝到远处

# sftp eternalcenter@192.168.0.1:/tmp/ <<< $"put test.txt"

或者:

# a=test;sftp eternalcenter@192.168.0.1:/tmp/ <<< $"put $a.txt"

(补充:这里以通过用户 eternalcenter 登录,直接将本地当前目录的 test.txt 文件拷贝到 IP 地址 192.168.0.1 的 /tmp/ 目录为例)

案例四:通过代理连接

# sftp -v -o ProxyCommand='ncat --proxy 10.0.0.1:10000 --proxy-type http 192.168.0.1 22' eternalcenter@192.168.0.1:/tmp/test.txt


补充:这里以
1) 通过代理 IP 地址 10.0.0.1 的 10000 端口,代理协议是 http,连接远程 IP 地址 192.168.0.1 的 22 端口
2) 通过用户 eternalcenter 登录
3) 直接将 IP 地址 192.168.0.1 的文件 /tmp/test.txt 拷贝到本地的当前目录
为例

参考文献:

https://www.endpointdev.com/blog/2013/04/socat-and-netcat-proxycommand-ssh
https://www.man7.org/linux/man-pages/man1/ncat.1.html

[STEP] Linux Audit Log join /var/log/message

Main Content:

Step One: Modify /audit/plugins.d/syslog.conf file

# vim /audit/plugins.d/syslog.conf

Modify part content as follow:

Modify part content as follow:
......
active = no
......

Step Two: Restart auditd Service

# service auditd restart

Reference:

https://access.redhat.com/solutions/637863

[步骤] SFTP 安全 (多用户免密码登录)

注意:

在设置多用户免密码登录 SFTP 之前要先搭建 SFTP

正文:

步骤一:指定 SFTP 公钥的存放位置

1.1 修改 /etc/ssh/sshdsftp_config 配置文件

# vim /etc/ssh/sshdsftp_config

并将部分内容修改如下:

......
Subsystem       sftp    internal-sftp -l VERBOSE -f LOCAL3
Match LocalPort 2222
Match Group sftp
ChrootDirectory /%u
AuthorizedKeysFile /etc/ssh/authorized_keys/%u/.ssh/authorized_keys
ForceCommand    internal-sftp -m 770
AllowTcpForwarding no
X11Forwarding no


补充:
1) 这里以将:
SFTP 的端口设置为 2222
SFTP 用户可以进入的目录只能为 /<user>
SFTP 用户存放的公钥的文件为 /etc/ssh/authorized_keys/<user>/.ssh/authorized_keys
SFTP 上传的文件默认权限是 770 (-m 770 参数也可以使用 -u 770 替代,但是 -u 参数有时候会不起作用)
为例
2) 其它配置方案可以参考

SFTP 的配置案例

(注意:当使用 %u 参数来保证不通的用户使用不通的 SFTP 目录时,用户名为 user_a 、user_b、user_c 的用户可能会使用同一个名为 user 的目录)

1.2 让限制 SFTP 用户可以进入的目录的设置生效

# systemctl restart sshdsftp

步骤二:创建 /etc/ssh/authorized_keys 目录

2.1 进入 /etc/ssh/ 目录

# cd /etc/ssh/

2.2 创建 /etc/ssh/authorized_keys 目录

# mkdir authorized_keys

2.3 更改 /etc/ssh/authorized_keys 目录的所属主和所属组

# chown root:root authorized_keys

2.4 更改 /etc/ssh/authorized_keys 目录的权限

# chmod 755 authorized_keys

步骤三:创建 /etc/ssh/authorized_keys/<user>/ 目录

3.1 进入 /etc/ssh/authorized_keys 目录

# cd authorized_keys

3.2 创建 /etc/ssh/authorized_keys/<user>/ 目录

# mkdir sftpuser

3.3 更改 /etc/ssh/authorized_keys/<user>/ 目录的所属主和所属组

# chown sftpuser:sftpuser sftpuser

3.4 更改 /etc/ssh/authorized_keys/<user>/ 目录的权限

# chmod 755 sftpuser

步骤四:创建 /etc/ssh/authorized_keys/<user>/.ssh 目录

4.1 进入家目录

# cd <user name>

4.2 创建 /etc/ssh/authorized_keys/<user>/.ssh 目录

# mkdir .ssh

4.3 更改 /etc/ssh/authorized_keys/<user>/.ssh 目录的所属主和所属组

# chown sftpuser:sftpuser .ssh

(补充:这里用户名是 sftpuser 主组名是 sftpuser 为例)

4.4 更改 /etc/ssh/authorized_keys/<user>/.ssh 目录的权限

# chmod 700 .ssh

步骤五:创建 /etc/ssh/authorized_keys/<user>/.ssh/authorized_keys 文件

5.1 进入 /etc/ssh/authorized_keys/<user>/.ssh 目录

# cd .ssh

5.2 创建 /etc/ssh/authorized_keys/<user>/.ssh/authorized_keys 文件

# touch authorized_keys

5.3 更改 /etc/ssh/authorized_keys/<user>/.ssh/authorized_keys 文件的所属主和所属组

# chown sftpuser:sftpuser authorized_keys

(补充:这里用户名是 sftpuser 主组名是 sftpuser 为例)

5.4 更改 /etc/ssh/authorized_keys/<user>/.ssh/authorized_keys 文件的权限

# chmod 600 authorized_keys

(补充:在本文步骤二中的 authorized_keys 文件也可以通过使用 ssh-copy-id 命令创建以后拷贝到 /etc/ssh/authorized_keys/<user>/.ssh/ 目录下)

步骤六:复制 SSH 公钥

# vi authorized_keys

将 SSH 公匙复制于此

(步骤略)

(补充:在本文步骤五和步骤六中 authorized_keys 文件也可以通过以 ssh-copy-id 命令创建以后拷贝到 /etc/ssh/authorized_keys/<user>/.ssh/ 目录下)

参考文献:

https://access.redhat.com/solutions/3787571

[命令] SFTP 常用命令

内容一:SFTP 显示相关

1.1 显示目录或文件

1.1.1 显示远程的目录或文件
sftp> ls
1.1.2 显示本地的目录或文件
sftp> lls

1.2 显示目录路径

1.2.1 显示远程目录路径
sftp> pwd
1.2.2 显示本地目录路径
sftp> lpwd

1.3 显示协议版本

sftp> version

1.4 显示帮助信息

sftp> help

内容二:SFTP 目录相关

2.1 创建目录

2.1.1 创建远程目录
sftp> mkdir <directory>
2.1.2 创建本地目录
sftp> lmkdir <directory>

2.2 删除目录

2.2.1 删除远程目录
sftp> rmdir <directory>
2.2.2 删除本地目录
sftp> lmkdir <directory>

2.3 修改目录下

2.3.1 修改目录的所属主
sftp> chown <user> <directory>
2.3.2 修改目录的所属组
sftp> chgrp <group> <directory>
2.3.3 修改目录权限
sftp> chmod <privilege> <directory>

2.4 进入目录

2.4.1 进入远程目录
sftp> cd <directory>
2.4.2 进入本地目录
sftp> lcd <directory>

内容三:SFTP 文件相关

3.1 删除文件

3.1.1 删除远程文件
sftp> rm <file>
3.1.2 删除本地文件
sftp> lrm <file>

3.2 移动文件

移动远程文件

sftp> mv <file>

内容四:上传和下载

4.1 从远程下载文件到本地
sftp> get <file>
4.2 从本地上传文件到远程
sftp> put <file>

内容五:SFTP 管理相关

退出 SFTP

sftp> exit

或者:

sftp> quit