[命令] 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

[DEBUG] Linux resolve df command is stuck

Error phenomenon:

Input df command and the command is stuck
Can not us cd / command to access /(root) directory
Can not us ls / command to display /(root) directory

Analysis:

There may be some network storage disconnected

Solution:

Step One: Use mount command to check if there is any disconnected network storage here

# mount

(Add: At this moment, we can see at least one remote storage mount to local directory. If we cd to this directory, system command prompt will output target is busy)

Step Two: Use unmount command to unmount this disconnected network storage

# umount -f <nfs storage which is stuck>

Or:

# umount -l <nfs storage which is stuck>

Or:

# umount -f -l <nfs storage which is stuck>

[步骤] 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