服务端环境搭建
配置ssh-sftp
在服务器上开通SFTP文件服务,允许某些用户上传及下载文件。但是这些用户只能使用SFTP传输文件,不能使用SSH终端访问服务器,并且SFTP不能访问系统文件(即所谓的“Jail(监狱)”)。系统管理员则既能使用SFTP传输文件,也能使用SSH远程管理服务器。
安装OpenSSH服务器
1sudo apt-get install openssh-server为SFTP访问创建用户组,便于管理权限
1sudo addgroup sftp-users创建SFTP用户,并配置相应权限
1234sudo adduser austinsudo usermod -G sftp-users -s /bin/false austin//将austin从所有其他用户组中移除并加入到sftp-users组,并且关闭其Shell访问// -s /bin/false 指定登录shell,这里不允许ssh登录创建SSH用户组,并把管理员加入到该组
123sudo addgroup ssh-userssudo usermod -a -G ssh-users admin \\-a参数的意思是不从其他用户组用移除sudo usermod -a -G ssh-users root \\额外增加root用户ssh访问准备“监狱”的根目录及共享目录
1234sudo mkdir /home/sftp_rootsudo mkdir /home/sftp_root/sharedsudo chown admin:sftp-users /home/sftp_root/sharedsudo chmod 770 /home/sftp_root/shared“监狱”的根目录必须满足以下要求:所有者为root,其他任何用户都不能拥有写入权限。因此,为了让SFTP用户能够上传文件,还必须在“监狱”根目录下再创建一个普通用户能够写入的共享文件目录。为了便于管理员通过SFTP管理上传的文件,我把这个共享文件目录配置为:由admin所有,允许sftp-users读写。这样,管理员和SFTP用户组成员就都能读写这个目录了。
修改SSH配置文件
sudo nano /etc/ssh/sshd_config
在sshd_config文件的最后,添加以下内容:123456AllowGroups ssh-users sftp-usersMatch Group sftp-usersChrootDirectory /home/sftp_rootAllowTcpForwarding noX11Forwarding noForceCommand internal-sftp这些内容的意思是:
只允许ssh-uers及sftp-users通过SSH访问系统;
针对sftp-users用户,额外增加一些设置:将“/home/sftp_root”设置为该组用户的系统根目录(因此它们将不能访问该目录之外的其他系统文件);禁止TCP Forwarding和X11 Forwarding;强制该组用户仅仅使用SFTP。service sshd reload
问题记录
> SFTP – subsystem request failed on channel X
修改:
You are using sftp to connect your server in a chrooted environment and you met the error below.
subsystem request failed on channel 0
Couldn’t read packet: Connection reset by peer
This causes because of wrong external library configured in your sshd_config. So, edit your sshd_config and use internal-sftp
. Because openssh already has internal sftp functionality and you dont need any external libraries
.
Find the line beginning with “Subsystem”. Comment out and add the following line.
12
#Subsystem sftp /usr/lib/openssh/sftp-serverSubsystem sftp internal-sftp
配置定时任务
crontabl命令
123456789crontab: invalid option -- 'h'crontab: usage error: unrecognized optionusage: crontab [-u user] filecrontab [ -u user ] [ -i ] { -e | -l | -r }(default operation is replace, per 1003.2)-e (edit user's crontab)-l (list user's crontab)-r (delete user's crontab)-i (prompt before deleting user's crontab)
编辑添加定时任务 crontabl -u root -e
123* * * * * php /home/forge/default/artisan schedule:run >> /dev/null 2>&1//下面是crontab的格式://分 时 日 月 星期 要运行的命令
确保cmd能够正常执行
1php /home/forge/default/artisan schedule:run
查看cron服务
12345//查看状态/etc/init.d/cron status//重启cron服务/etc/init.d/cron restart