jsch连接服务器执行命令时遇到的问题记录

目录

创建sftp用户

创建SFTP组

 创建SFTP用户

设置SFTP用户的密码

设置SFTP用户的主目录和权限

配置SSH服务以允许SFTP登录

重启ssh服务

用户权限不足

打开sudoers文件

添加用户

新用户使用docker-compose报错

sudo执行问题

打开sudoers文件

更改命令搜索路径

 总结

创建sftp用户

创建SFTP组

sudo groupadd sftp_users

 创建SFTP用户

sudo useradd -g sftp_users -s /bin/false -d /home/sftp_user1 sftp_user1

其中,-g表示指定用户组,-s表示指定shell为/bin/false,因为SFTP用户不需要使用shell,如果需要使用shell则可以不写-s或者写-s /bin/bash。-d指定用户的主目录。

设置SFTP用户的密码

sudo passwd sftp_user1

设置SFTP用户的主目录和权限

sudo mkdir -p /home/sftp_user1/upload
sudo chown root:sftp_users /home/sftp_user1
sudo chmod 755 /home/sftp_user1
sudo chown sftp_user1:sftp_users /home/sftp_user1/upload
sudo chmod 755 /home/sftp_user1/upload

 其中,/home/sftp_user1/upload是SFTP用户的主目录,chown命令用于更改文件或目录的所有者和所属组,chmod命令用于更改文件或目录的访问权限。

配置SSH服务以允许SFTP登录

编辑SSH配置文件/etc/ssh/sshd_config

找到Subsystem sftp internal-sftp并取消注释

在下边新增

Match Group sftp_users
        ChrootDirectory %h
        ForceCommand internal-sftp
        X11Forwarding no
        AllowTcpForwarding no

 Match Group sftp_users表示为sftp_users组中的用户应用以下设置,ChrootDirectory %h表示将用户锁定在其主目录中,ForceCommand internal-sftp表示强制使用SFTP协议,X11Forwarding no表示禁止X11转发,AllowTcpForwarding no表示禁止TCP转发。

重启ssh服务

sudo systemctl restart sshd

用户权限不足

在使用过程中,因为很多文件是比较隐私的,所以对改用户的权限不够,这样的文件会比较多,所以一一改是不太现实的,最终我决定让该用户可以使用sudo命令

打开sudoers文件

sudo visudo

添加用户

先找到

root    ALL=(ALL)       ALL

然后在下边添加 

sftp_user1    ALL=(ALL)      NOPASSWD:ALL

 注意要使用NOPASSWD,否则客户端执行sudo命令时不会成功

保存退出即可

新用户使用docker-compose报错

错误:Couldn't connect to Docker daemon at http+docker://localhost - is it running?

先确定docker是否启动,一般都会没问题
然后检查新用户是否加入docker用户组

sudo执行问题

服务器上有庞大的脚本,而很多脚本引入了一些相对路径的问题,一一更改是不现实的,但是sudo命令会改变当前工作目录,导致相对路径失效。这个时候我们又要对sudo进行配置

打开sudoers文件

sudo visudo

更改命令搜索路径

找到

Defaults    secure_path 

在后边添加路径,以冒号分隔案例

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/path/to/your/dir" 

 总结

这些东西对于老运维来说肯定是很简单的,对于开发者来说可能还要找寻答案,记录以便日后使用

猜你喜欢

转载自blog.csdn.net/wai_58934/article/details/129724096
今日推荐