Ubunt配置Sftp-ssh免密碼登錄

之前都是用的Ftp,今天有兩個客戶要求用Sftp沒用過,今天研究了一下,記錄備忘
SFTP其實就是加密的FTP 可以通過ssh密匙 免密碼連接

  • 系統:Ubuntu 16.04
  • 軟件:openssh
安裝openssh
sudo apt-get install openssh-server
為SFTP訪問創建用戶組,便于管理權限
sudo addgroup sftp-users
創建用戶加入組,不允許登錄系統
sudo adduser alice 
sudo usermod -G sftp-users -s /bin/false alice
創建SSH用戶組,并把管理員加入到該組(注意usermod中的-a參數的意思是不從其他用戶組用移除)
sudo addgroup ssh-users 
sudo usermod -a -G ssh-users root

準備“監獄”的根目錄及共享目錄。這里解釋一下,“監獄”的根目錄必須滿足以下要求:所有者為root,其他任何用戶都不能擁有寫入權限。因此,為了讓SFTP用戶能夠上傳文件,還必須在“監獄”根目錄下再創建一個普通用戶能夠寫入的共享文件目錄。為了便于管理員通過SFTP管理上傳的文件,我把這個共享文件目錄配置為:由admin所有,允許sftp-users讀寫。這樣,管理員和SFTP用戶組成員就都能讀寫這個目錄了。

sudo mkdir /home/sftp_root
sudo mkdir /home/sftp_root/shared
sudo chown root:sftp-users /home/sftp_root/shared
sudo chmod 770 /home/sftp_root/shared

修改SSH配置文件

sudo vi/etc/ssh/sshd_config

文件底部添加
AllowGroups ssh-users sftp-users    #只允許ssh-uers及sftp-users組的用戶通過SSH訪問系統
Match User sftp-ly            #針對單個用戶設置
    ChrootDirectory /sftp/sftp_root_ly/        # 根目錄
    AllowTcpForwarding no
    X11Forwarding no
    ForceCommand internal-sftp
Match User sftp-siemens
    ChrootDirectory /sftp/sftp_root_siemens/
    AllowTcpForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

# 針對組進行額外設置
Match Group sftp-users
    .....

可以針對組或用戶,額外增加一些設置:將“/home/sftp_root”設置為該組用戶的系統根目錄(因此它們將不能訪問該目錄之外的其他系統文件);禁止TCP Forwarding和X11 Forwarding;強制該組用戶僅僅使用SFTP

到這sftp就算配置完成了

驗證

  • linux
    隨便找一臺linux主機
sftp root@172.16.1.100

如果提示輸密碼,連接成功可以上傳文件 表示成功!


配置ssh免密登錄

  • 生成密匙
    在服務器上執行以下命令生成密匙
ssh-keygen -t rsa

默認生成的路徑是  /root/.ssh
  • id_rsa 是私鑰 一般用于客戶端
  • id_rsa.pub 是公鑰 一般用于服務器端

服務器上注冊公鑰

在/root/.ssh 目錄下
cat id_rsa.pub >> authorized_keys

將私鑰放到客戶端

  • linux
scp id_rsa root@172.16.1.11:/root/.ssh

也可以直接vim打開后復制私鑰后在客戶端.ssh文件夾下建立同名文件黏貼私鑰

  • windows
    直接通過復制黏貼獲取私鑰 id_rsa

免密連接SFTP

  • linux
sftp root@172.16.1.100

不用輸密碼能直接連接成功表示成功

  • Windows
    打開WinSCP客戶端-編輯站點-高級-驗證-添加私鑰
image.png
image.png

添加私鑰文件根據提示 將openssh格式的私鑰轉換為putty格式

!!!不用輸入密碼,能連接成功!!成功啦!

服務器端提供多用戶服務

如果要在SFTP服務器上建立多個用戶 分別提供服務
只需要在 相應用戶的 /home/用戶/.ssh 下放置正確的公鑰并注冊
即可用相應的私鑰 來連接

一個共享提供多個客戶端連接

一個sftp用戶共享提供多個客戶端連接
只需要在相應用戶的.ssh文件下的 authorized_keys 文件夾內添加多個公鑰即可

cat id_rsa.pub >> authorized_keys         多來幾次就行
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容