回覆列表
  • 1 # IT大叔Cc

    回答行業問題

    sftp是一個安全檔案傳輸協議,它的檔案傳輸是經過加密的。sftp本身沒有守護程序,它是在包含在ssh協議中的,使用的埠號也是22。所以它必須使用ssh的守護程序來完成連線和答覆操作。

    那判斷使用者是通過ssh登陸還是sftp登陸的?其實很簡單,只要我們搞清楚pts、notty這兩種連線方式的意思,就可以很容易的判斷使用者是通過如ssh或者sftp那種方式連線的。

    可通過檢視程序是否包含pts、notty字串來判斷,pts對應的ssh連線,notty是sftp連線,如下圖很清晰的能夠判斷是使用者是通過ssh或sftp登陸的,後面我簡單說下操作過程。

    檢視ssh登陸pts(虛擬終端)

    pts其實可以稱為虛擬終端,在ssh登陸成功後會有一個和使用者對應的pts終端,比如pts/0、pts1等,可以使用who命令檢視都有哪些使用者登陸。

    #who

    從圖中可以看出當前有三個使用者使用pts終端(個人隱私馬賽克),同時可看到連線的IP地址,這裡使用who命令就很簡單的判斷哪個使用者是使用ssh連線,同一個使用者可有多個登陸終端。

    檢視sftp登陸

    最開始時已經說過,sftp登陸只是藉助ssh協議來完成tcp握手連線,並沒有真正的開啟linux的pty終端,而是在ssh建立連線後,又啟動了一個子程“/usr/libexec/openssh/sftp-server”,簡單的判斷可以直接用ps檢視程序grep過濾,就能看到是否有sftp連線。

    從上圖可看到test使用者建立了sftp連線,它的父程序PID是30101,我們看下更多的程序資訊,從圖中可以看出sftp程序的對應關係,sftp->test@notty->test使用者->sshd服務,依次往上最終連線的sshd服務上,sftp的登陸方式已經很清晰了。

    總結,ssh使用的是pts虛擬終端登陸,而sftp使用的是notty登陸,可用通過ps的各種引數來最終確定使用者是使用的哪種方式登陸。

  • 中秋節和大豐收的關聯?
  • 有錢人都把錢放到哪裡了?