1. 程式人生 > >教你如何配置linux使用者實現禁止ssh登陸機器但可用sftp登入!

教你如何配置linux使用者實現禁止ssh登陸機器但可用sftp登入!

構想和目標

最近有個這樣的訴求:基於對線上伺服器的保密和安全,不希望開發人員直接登入線上伺服器,因為登入伺服器的許可權太多難以管控,如直接修改程式碼、系統配置,並且也直接連上mysql。因此希望能限制開發人員ssh登入機器,但是通過ftp/sftp上傳程式碼檔案。
在網上找個各種各樣的方法,經過試驗做個彙總:

方法一

這篇帖子的方法是搜尋到的最通用的方法,方法是否可能呢,直接做個測試。

建立禁止登陸的使用者:

useradd test -M -s /sbin/nologin

試試ssh登陸:登陸失敗

[[email protected] app]# ssh [email protected]
[email protected]172.19.194.30's password: Last login: Tue Oct 11 15:28:07 2016 from 172.18.135.185 This account is currently not available. Connection to 172.19.194.30 closed.

試試sftp登陸:同樣也提示登陸失敗!!!

[[email protected] app]# sftp [email protected]172.19.194.30
[email protected]172.19.194.30
's password: Received message too long 1416128883 [[email protected] app]#

可以看到,方法一,雖然限制了ssh登陸,但是同時也限制了sftp的連線,結論是此方法行不通。

方法二

  1. 首先修改sshd的配置檔案:
#vim /etc/ssh/sshd_config
#該行(上面這行)註釋掉
#Subsystem sftp /usr/lib/openssh/sftp-server

# 新增以下幾行
Subsystem sftp internal-sftp 
Match group sftp
#Match user test
#匹配sftp組,如為單個使用者可用:Match user 使用者名稱;  設定此使用者登陸時的shell設為/bin/false,這樣它就不能用ssh只能用sftp
ChrootDirectory /home/test #指定使用者被鎖定到的那個目錄,為了能夠chroot成功,該目錄必須屬主是root,並且其他使用者或組不能寫 X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
  1. 新增使用者組和使用者

#新增使用者組
groupadd sftp

#新增使用者
useradd -d /home/test -m -s /bin/false -g sftp test

#修改密碼
passwd test

  1. 重啟SSH服務

service sshd restart

或者

/etc/init.d/ssh reload

  1. 測試ssh
[[email protected] etc]# ssh [email protected]172.19.194.30
[email protected]172.19.194.30's password: 
Write failed: Broken pipe

登陸失敗,提示Write failed: Broken pipe錯誤

  1. 再測試sftp
[root@localhost etc]# sftp [email protected]
test@172.19.194.30's password: 
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer

同樣提示Write failed: Broken pipe

  1. 按理說此方法應該是靠譜的為什麼會提示失敗呢,通過查詢發現是目錄許可權配置導致的:

目錄許可權設定上要遵循2點:
ChrootDirectory設定的目錄許可權及其所有的上級資料夾許可權,屬主和屬組必須是root;
ChrootDirectory設定的目錄許可權及其所有的上級資料夾許可權,只有屬主能擁有寫許可權,許可權最大設定只能是755。

修改/home/test 目錄許可權為755

chmod 755 /home/test -R

  1. 再次測試
[[email protected] etc]# ssh [email protected]
[email protected]172.19.194.30's password: 
Could not chdir to home directory /home/test: No such file or directory
This service allows sftp connections only.
Connection to 172.19.194.30 closed.

和預期一致:ssh嘗試連線失敗。

[[email protected] etc]# sftp test@172.19.194.30
test@172.19.194.30's password: 
Connected to 172.19.194.30.
sftp> ls
a                a.log            authorized_keys  mysql.sh         
sftp>

sftp測試連線成功!

總結

這個東西雖然沒有太大的技術含量,但是通過網上查詢的大多是雷同且行不通的,又或者是不完整的,過程中耽誤和浪費了不少時間,希望寫這篇部落格做個驗證和彙總的作用。

參考:

相關推薦

如何配置linux使用者實現禁止ssh登陸機器可用sftp登入

構想和目標 最近有個這樣的訴求:基於對線上伺服器的保密和安全,不希望開發人員直接登入線上伺服器,因為登入伺服器的許可權太多難以管控,如直接修改程式碼、系統配置,並且也直接連上mysql。因此希望能限制開發人員ssh登入機器,但是通過ftp/sftp上傳程式碼檔案。 在

蛙蛙推薦:蛙蛙配置linux+mysql+.net環境

三、安裝配置mysql 有了apt,安裝mysql也很簡單,下面一個命令搞定 sudo apt-get install mysql-server mysql伺服器大約有100多M,不過咱們的源的速度快,每秒100多K,我洗了澡出來就裝好了,中間需要輸入mysql root賬戶的密碼,別的啥也不用管,因為

ShopNC B2B2C最新版 手把手配置全文搜尋linux教程

今天本站就教你如何在linux環境裡配置Shopnc B2B2C全文檢索功能! 強大的檢索引擎幫助你減輕伺服器索引壓力!一:首先我們需要下載ShopNC B2B2C內建的訊搜客戶端1.執行下面指令下載訊搜和解壓訊搜 wget http://www.xunsearch.c

手把手安裝Linux(CentOS 7)系統及網路配置

準備工作 做U盤啟動 安裝系統 配置網路 檢視本地ip相關資訊

配置windows上的windbg,linux上的lldb,打入clr內部這一篇就夠了

## 一:背景 ### 1. 講故事 前幾天公眾號裡有位兄弟看了幾篇文章之後,也準備用windbg試試看,結果這一配就花了好幾天,(づ╥﹏╥)づ,我想也有很多躍躍欲試的朋友在配置的時候肯定會遇到這樣和那樣的問題,所以我覺得有必要整理一下,讓大家少走彎路。 ## 二:一些基礎概念 ### 1.

第一節:學會Java前提-手把手配置JDK環境變量

ini 按鈕 download 鏈接 理解 驗證 rac win鍵 當前 前言 大家好,今天寫一遍學會Java前提-手把手教你配置JDK環境變量的概述,希望你們喜歡 下載地址 下載jdk,和eclipse就比較簡單了,提供JDK 9 地址: http://www.oracl

Linux環境搭建 | 手把手安裝Linux虛擬機

界面 rup 對話 rtu 發行版 所在 兼容性 運維 編輯 前言 作為一名Linux工程師,不管是運維、應用、驅動方向,在工作中肯定會需要Linux環境。想要獲得Linux環境,一個辦法就是將電腦系統直接換成Linux系統,但我們平常用慣了Windows系統,直接切換為L

手把手配置Hbase完全分散式環境

HBase配置相對比較簡單,下面的教程也是基於我上面2篇Hadoop配置的環境下繼續往下新增HBase的分散式配置,這次我的HBase安裝目錄放在跟Hadoop同一目錄下面,節點資訊跟我前一篇Hadoop完全分散式配置完全一樣,不清楚的話可以參考我那篇文章。 HBase根目錄:/usr/mywi

一些Linux中隱藏bash歷史命令的小技巧

導讀 如果你登入過 Linux 系統,並敲過一些命令,那你應該知道,bash history 會記錄你輸入的所有命令。這個操作其實是有一定風險的。 我個人經常使用 Linux,所以我想著研究一番,看看如何隱藏 bash history。下

【Zabbix】搭建elasticsearch與實現zabbix對接

一.  搭建elasticsearch 1.      上傳jdk-8u181-linux-x64.tar.gz和elasticsearch-6.1.4.tar.gz檔案到系統任意目錄, 安裝java 解壓jdk-8u181-l

手把手Linux環境下安裝Python3

在上一篇文章《手把手教你啟用Win10的Linux子系統(超詳細)》我們已經學瞭如何在Win10環境下裝Linux子系統了,那麼這一篇文章我們將學習如何在該Linux系統下安裝Python3。 首先是按Win+R鍵調出cmd命令視窗,然後輸入輸入bash指令進

SpringBoot搭建Activiti整合流程設計器(一步一步配置

轉載請註明出處:猿小雷,https://blog.csdn.net/qq_34638225 1、框架搭建 在IDE裡新建SpringBoot專案,在pom.xml裡引入如下依賴 pom.xml <?xml version="1.0" e

大牛如何用Python 實現 Python 直譯器

1. Python直譯器 這裡的Python直譯器具體是指什麼呢?有時候我們會把Python的REPL(命令列下Python的互動環境)當作直譯器,有時候Python直譯器這一說法可以指代整個Python,它會將原始碼編譯為位元組碼並執行。本課程實現的直譯器只完成最後一部分執行位元組碼的工作,也就相當於一個跑

大神Linux中查詢和刪除重複檔案

導讀 在Linux系作業系統中查詢並刪除重複檔案的方法的確有很多,不過這裡介紹的是一款非常簡單實用的軟體FSlint。FSlint是一個重複檔案查詢工具,可以使用它來清除不必要的重複檔案,筆者經常使用它來釋放Linux系統中的磁碟空間。 FSlint同時具有GUI和

Android下拉重新整理完全解析 如何一分鐘實現下拉重新整理功能

                最近專案中需要用到ListView下拉重新整理的功能,一開始想圖省事,在網上直接找一個現成的,可是嘗試了網上多個版本的下拉重新整理之後發現效果都不怎麼理想。有些是因為功能不完整或有Bug,有些是因為使用起來太複雜,十全十美的還真沒找到。因此我也是放棄了在網上找現成程式碼的想法,

三行命令解決linux系統下U盤只讀檔案系統問題

Ubuntu插入U盤為只讀檔案系統,無法新建檔案,資料夾或者向U盤中複製檔案 1.問題: 使用linux不管是centos還是ubuntu的小夥伴都難免遇到插入U盤的時候,不能對U盤進行操作。提示許可權不足或者是隻讀檔案系統。 現在教你三行命令教你解決U盤

手把手配置Ubuntu server伺服器_1

手把手教你配置Ubuntu server伺服器 近期實驗室來了臺新的伺服器,第一次從頭到尾把配置過程走了一遍,特來此總結一番,希望可以幫助到想入坑的童鞋。我將從以下幾個方面來總結配置伺服器的過程(系統版本為Ubuntu server 16.04) Ubun

手把手配置Ubuntu server伺服器_5

手把手教你配置Ubuntu server伺服器 安裝遠端圖形介面x2go Ubuntu server 安裝完成只有命令列介面,一般的工作在Windows下用 xshell 和 winscp ,一個輸命令列,一個進行介面化檔案管理,還是挺方便的, 但部分使

手把手移植linux核心---------OK6410(一)

配置資訊: 移植核心:linux-3.3.5       可以從  http://www.kernel.org/     下載純正的版本    編譯環境:vmware下ubuntu11.04 交叉編譯版本:4.3.2 準備工作: 一塊OK6410開發板,交叉網線,串列埠線

同一臺電腦配置多個Tomcat的環境變數

裝兩個tomcat 分別是6.0和7.0 可想執行tomcat6.0 但是實際上卻執行tomcat7.0 兩個版本都是用解壓縮包 其實就是不能執行tomcat6.0 只能執行7.0 兩個環境變數都配置了。埠也改了 還是不行我遇到這種情況了,不知大家遇到沒有,如下是