RHEL4-SFTP配置
RHEL4-SFTP配置手冊(cè)
目標(biāo):
在RHEL4上面配置SFTP服務(wù)器,實(shí)現(xiàn)用戶SFTP登錄,禁止SSH登錄,并實(shí)現(xiàn)目錄鎖定,避免用戶登錄后跳出自己的HOME目錄。
為達(dá)到以上功能,RHEL4自帶openssh版本無法實(shí)現(xiàn)目錄鎖定,需要下載openssh 4.8p1以上版本!
1)軟件下載
從http://download.chinaunix.net/下載zlib:
zlib-1.2.7.tar.gz
# ls -l zlib-1.2.7.tar.gz
-rw-r--r--? 1 root root 560351 Jul 26 09:59 zlib-1.2.7.tar.gz
從http://www.openssh.com/下載openssh:
openssh-4.9p1.tar.gz
# ls -l openssh-4.9p1.tar.gz
-rw-r--r--? 1 root root 1011434 Jul 26 09:56 openssh-4.9p1.tar.gz
說明:openssh-4.9p1需要zlib 1.2.3及以上版本,否則安裝會(huì)報(bào)以下錯(cuò)誤:
configure: error: *** zlib too old - check config.log ***
...
If you are in doubt, upgrade zlib to version 1.2.3 or greater.
2)軟件安裝
為避免與默認(rèn)安裝的SSH沖突,我們安裝到自定義的目錄。
安裝ZLIB:
# tar -zxvf zlib-1.2.7.tar.gz
# cd zlib-1.2.7
# ./configure --prefix /usr/local/zlib
# make
# make install
安裝OPENSSH:
# tar zxvf openssh-4.9p1.tar.gz
# cd openssh-4.9p1
# ./configure --prefix /usr/local/openssh --with-zlib=/usr/local/zlib
# make
# make install
3)配置并啟動(dòng)服務(wù)
為避免與默認(rèn)安裝的SSH沖突,修改監(jiān)聽端口為2222:
# vi /usr/local/openssh/etc/sshd_config
-----------
Port 2222
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
-----------
添加鎖定目錄的配置:
# vi /usr/local/openssh/etc/sshd_config
-----------
# override default of no subsystems
#Subsystem????? sftp??? /usr/local/openssh/libexec/sftp-server
Subsystem?????? sftp??? internal-sftp
# Example of overriding settings on a per-user basis
#Match User anoncvs???# 匹配單個(gè)用戶
#?????? X11Forwarding no
#?????? AllowTcpForwarding no
#?????? ForceCommand cvs server
Match group sftponly???# 匹配sftponly組的所有用戶。解釋一下:當(dāng)sshd匹配到sftponly組中的用戶,就會(huì)強(qiáng)制使用sftp(ForceCommand的作用),并將用戶限定在/sftphome/下相應(yīng)用戶的目錄下(ChrootDirectory的作用)。
ChrootDirectory %h???# 鎖定目錄為用戶的home目錄
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp??# 強(qiáng)制使用sftp,不能使用ssh
-----------
啟動(dòng)ssh服務(wù):
# /usr/local/openssh/sbin/sshd &
此時(shí)可以看到2222端口已經(jīng)監(jiān)聽:
# netstat -tnlp |grep 2222
tcp??????? 0????? 0 0.0.0.0:2222????????????????? 0.0.0.0:*?????????????????? LISTEN????? 7180/sshd????????????
tcp??????? 0????? 0 :::2222?????????????????????? :::*??????????????????????? LISTEN????? 7180/sshd???
4)用戶創(chuàng)建及權(quán)限調(diào)整
創(chuàng)建組:
# groupadd -g 801 sftponly
創(chuàng)建用戶:
# useradd -d /opt/sftp/sftpuser01 -s /sbin/nologin -g sftponly sftpuser01
# passwd sftpuser01
此時(shí)用戶使用sftp登錄時(shí),messages日志會(huì)報(bào)以下錯(cuò)誤,說明用戶認(rèn)證通過,chroot失敗:
sshd[6944]: Accepted password for sftpuser01 from 192.168.164.30 port 2347 ssh2
sshd[6946]: fatal: bad ownership or modes for chroot directory "/opt/sftp/sftpuser01"
因?yàn)槿绻猚hroot,則需要將home目錄的owner修改為root,如下:
# ls -ld /opt/sftp/sftpuser01/
drwx------? 3 sftpuser01 sftponly 4096 Jul 26 10:14 /opt/sftp/sftpuser01/
# chown root /opt/sftp/sftpuser01/
# ls -ld /opt/sftp/sftpuser01/
drwx------? 3 root sftponly 4096 Jul 26 10:15 /opt/sftp/sftpuser01/
此時(shí)用戶使用sftp登錄時(shí),messages日志會(huì)報(bào)以下錯(cuò)誤,因?yàn)閔ome目錄的組權(quán)限為空:
Could not chdir to home directory /opt/sftp/sftpuser01: Permission denied
# chmod 755 /opt/sftp/sftpuser01/
# ls -ld /opt/sftp/sftpuser01/
drwxr-xr-x? 3 root sftponly 4096 Jul 26 10:17 /opt/sftp/sftpuser01/
OK,現(xiàn)在用戶就可以正常sftp登錄了,不過從以上目錄權(quán)限發(fā)現(xiàn)一個(gè)問題是,用戶是不能在home目錄下寫文件的!
所以我們是否可以把home目錄權(quán)限設(shè)置為775呢?試過之后發(fā)現(xiàn)認(rèn)證通過,登錄還是失敗,messages日志報(bào)錯(cuò)如下:
Accepted password for sftpuser01 from 192.168.164.30 port 2963 ssh2
fatal: bad ownership or modes for chroot directory "/opt/sftp/sftpuser01"
顯然還是權(quán)限的問題!
看來,我們只能在home目錄下再創(chuàng)建一個(gè)目錄,比如data:
# mkdir /opt/sftp/sftpuser01/data
# chown sftpuser01:sftponly /opt/sftp/sftpuser01/data
這樣,sftp用戶登錄后,就可以在data目錄下進(jìn)行讀寫操作了。
5)切換SSH服務(wù)
最終,我們需要把系統(tǒng)自帶SSH服務(wù)停掉,將新SSH的端口修改為默認(rèn)22,并啟動(dòng)新的SSH服務(wù)。
如果機(jī)器是遠(yuǎn)程,使用SecureCRT登錄后,可以把原SSH服務(wù)停掉(此時(shí)連接不會(huì)中斷,我用的SecureCRT5.1.3),關(guān)閉開機(jī)自啟動(dòng)。再啟動(dòng)新SSH服務(wù),并加入/etc/rc.local,實(shí)現(xiàn)開機(jī)自啟動(dòng)。具體操作如下:
# vi /usr/local/openssh/etc/sshd_config
-----------
Port 2222
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
-----------
# /etc/init.d/sshd stop?? #如果沒有正常關(guān)閉,就kill進(jìn)程
chkconfig sshd off
# chkconfig sshd --list
sshd??????????? 0:off?? 1:off?? 2:off??? 3:off??? 4:off??? 5:off??? 6:off
# /usr/local/openssh/sbin/sshd &
# netstat -tnlp |grep 22
tcp??????? 0????? 0 0.0.0.0:22????????????????? 0.0.0.0:*?????????????????? LISTEN????? 7399/sshd??????????????
tcp??????? 0????? 0 :::22?????????????????????? :::*??????????????????????? LISTEN????? 7399/sshd
# echo -e "#start sshd\n/usr/local/openssh/sbin/sshd &" >>/etc/rc.local
# cat /etc/rc.local
-----------
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
#start sshd
/usr/local/openssh/sbin/sshd &
-----------
轉(zhuǎn)載于:https://blog.51cto.com/makert/948779
總結(jié)
以上是生活随笔為你收集整理的RHEL4-SFTP配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大三时候实现的,关于大整数(超过long
- 下一篇: FPS含义