日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SSH和SFTP服务分离

發布時間:2023/12/31 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SSH和SFTP服务分离 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SSH和SFTP服務分離

  • 1.原理
    • 1.1 daemon和service
    • 1.2 sftp
  • 2.分離SSH和SFTP服務
    • 2.1 復制SSH相關文件,作為sftp的配置文件
      • 2.1.1 /usr/lib/systemd/system/sshd.service
      • 2.1.2 /etc/pam.d/sshd
      • 2.1.3 /etc/ssh/sshd_config
      • 2.1.4 /usr/sbin/service
      • 2.1.5 /usr/sbin/sshd
      • 2.1.6 /etc/sysconfig/sshd
      • 2.1.7 /var/run/sshd.pid
    • 2.2 修改SFTP配置文件
      • 2.2.1 /etc/systemd/system/sftpd.service
      • 2.2.2 /etc/ssh/sftpd_config
        • 2.2.2.1 Port
        • 2.2.2.2 PermitRootLogin
        • 2.2.2.3 PidFile
        • 2.2.2.4 Subsystem
        • 2.2.2.5 添加sftpusers用戶組并創建用戶目錄
  • 3.啟動sftp服務
    • 3.1 禁用SELINUX
    • 3.1 啟動服務
    • 3.2 登錄驗證
  • 4. 22端口禁止sftpusers用戶登錄(非必須)
    • 4.1

1.原理

1.1 daemon和service

Linux操作系統提供的服務稱為Service,而提供服務的程序稱為Daemon。舉例來說,達成循環型例行性工作排程服務(service)的程序為crond這個daemon。我理解通過servie啟動特定配置的daemon。

1.2 sftp

SFTP是SSH的一部分,SFTP沒有單獨的守護進程,它必須使用SSHD守護進程(端口號默認是22)來完成相應的連接操作。
通過新建另一個‘sshd’進程,作為sftp服務的deamon,完成服務分離。

2.分離SSH和SFTP服務

系統內開啟ssh服務和sftp服務都是通過/usr/sbin/sshd這個后臺程序監聽22端口,而sftp服務作為一個子服務,是通過/etc/ssh/sshd_config配置文件中的Subsystem實現的,如果沒有配置Subsystem參數,則系統是不能進行sftp訪問的。

2.1 復制SSH相關文件,作為sftp的配置文件

2.1.1 /usr/lib/systemd/system/sshd.service

拷貝/usr/lib/systemd/system/目錄下的sshd.service文件,放到/etc/systemd/system/目錄下,命名為:sftpd.service

cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/sftpd.service

2.1.2 /etc/pam.d/sshd

cp /etc/pam.d/sshd /etc/pam.d/sftpd

2.1.3 /etc/ssh/sshd_config

cp /etc/ssh/sshd_config /etc/ssh/sftpd_config

2.1.4 /usr/sbin/service

對sshd和sftpd進行軟連接

ln -sf /usr/sbin/service /usr/sbin/rcsftpd

2.1.5 /usr/sbin/sshd

對sshd和sftpd進行軟連接

ln -sf /usr/sbin/sshd /usr/sbin/sftpd

2.1.6 /etc/sysconfig/sshd

cp /etc/sysconfig/sshd /etc/sysconfig/sftp

2.1.7 /var/run/sshd.pid

復制并清空

cp /var/run/sshd.pid /var/run/sftpd.pid > /var/run/sftpd.pid

2.2 修改SFTP配置文件

2.2.1 /etc/systemd/system/sftpd.service

vim /etc/systemd/system/sftpd.service

修改紅框中的部分

如下紅色字體部分


[Unit]
Description=sftpd server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sftp
ExecStart=/usr/sbin/sftpd -f /etc/ssh/sftpd_config
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target


2.2.2 /etc/ssh/sftpd_config

vim /etc/ssh/sftpd_config

輸入:set nu

2.2.2.1 Port

找到第17行,將

Port 22

改成

Port 2222

2.2.2.2 PermitRootLogin

找到第38行,將

#PermitRootLogin yes

改成

PermitRootLogin no

就是取消該行的注釋,并將yes改成no,這行參數的目的是拒絕root用戶登錄

2.2.2.3 PidFile

③找到116行,將

#PidFile /var/run/sshd.pid

改成

PidFile /var/run/sftpd.pid

就是取消該行的注釋,并將sshd.pid改成sftpd.pid

2.2.2.4 Subsystem

找到第132行,將

Subsystem sftp /usr/libexec/openssh/sftp-server

注釋

#Subsystem sftp /usr/libexec/openssh/sftp-server并添以下6行 Subsystem sftp internal-sftp # 指定使用sftp服務使用系統自帶的internal-sftpMatch Group sftpusers # 匹配sftp組的用戶,若要匹配多個組,可用逗號分開X11Forwarding no # 禁止用戶使用端口轉發AllowTcpForwarding no # 禁止用戶使用端口轉發ForceCommand internal-sftp # 只能用于sftp登錄ChrootDirectory /home/sftp # 限制用戶的根目錄

2.2.2.5 添加sftpusers用戶組并創建用戶目錄

groupadd sftpusers mkdir -p /home/sftp chown root:root /home/sftp chmod 755 /home/sftp mkdir -p /u01/scripts vim /u01/sftpuseradd.sh

輸入以下內容

#! /bin/bash useradd -g sftpusers -d /home/sftp/$1 $1 chown $1:sftpusers /home/sftp/$1 # 文件所屬用戶讀寫執行,屬組用戶、其他用戶無權限 chmod 700 /home/sftp/$1 echo $2 | passwd --stdin $1

增加執行權限,并添加用戶

chmod 755 /u01/sftpuseradd.sh # 第一個參數賬號,第二個參數密碼 sh /u01/sftpuseradd.sh sftpu xxxxxxxx sh /u01/sftpuseradd.sh sftpu2 xxxxxxxx

3.啟動sftp服務

3.1 禁用SELINUX

setenforce 0sed -i "s/^SELINUX\=enforcing/SELINUX\=disabled/g" /etc/selinux/config 若不設置,啟動sftp時將報錯,無法使用上面綁定的2222端口

3.1 啟動服務

systemctl daemon-reload #使修改的sshd配置生效systemctl start sftpd #啟動sftp

3.2 登錄驗證


不能訪問sftpu2用戶文件夾

上傳文件成功

4. 22端口禁止sftpusers用戶登錄(非必須)

4.1

編輯配置文件

vim /etc/ssh/sshd_config

個性化配置

#禁止指定用戶登錄,多個用戶時用空格分隔 DenyUsers sftpu sftpu2 #禁止指定用戶組登錄,多個組時用空格分隔 DenyGroups sftpusers #只允許這兩個用戶從192.168.0.101登錄 AllowUsers sftpu sftpu2@192.168.0.101

重啟sshd服務

systemctl restart sshd

參考博文: link
參考博文: link
參考博文: link

總結

以上是生活随笔為你收集整理的SSH和SFTP服务分离的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。