Ssh

使用 sftp 時如何防止“上次登錄:”消息出現?

  • September 21, 2016

在 Ubuntu GNU/Linux 12.04 中,我有一個johndoe屬於某個組sftponly的使用者,使用sftp``chroot

Subsystem sftp internal-sftp

Match Group sftponly
       ChrootDirectory %h
       ForceCommand internal-sftp
       AllowTcpForwarding no

在結束時/etc/ssh/ssh_confighome使用者目錄的所有組件都是 -root擁有的目錄,任何其他使用者或組都不能寫入,如man sshd_config(下ChrootDirectory)中所述。在他的chroot監獄裡,有一個可寫目錄files

sudo groupadd sftponly    
sudo mkdir -p /home/sftponly/johndoe/files
sudo useradd -d /home/sftponly/johndoe -g sftponly -s /usr/sbin/nologin johndoe
sudo chmod go-w /home/sftponly/{,johndoe}
sudo chown johndoe:sftponly /home/sftponly/johndoe/files
sudo chmod ug+rwX /home/sftponly/johndoe/files

(將 shell 設置為/bin/false不適用於sshsftp。當nologinshellssh連接時,顯示“MOTD”,然後斷開連接,這是預期的行為。)

sftp消息失敗Received message too long 1416128883。我知道此故障是由“MOTD”(每日消息)引起的,正如sftp預期的“乾淨登錄”。我嘗試使用以下命令禁用伺服器上的所有“MOTD”片段,並帶有(這些結果):

  • 使用.添加PrintLastLog noPrintMotd no到末尾/etc/ssh/ssh_config並重新啟動。(無效。測試同時顯示“MOTD”和“Last Login:”。)ssh``restart ssh``ssh
  • session optional pam_motd.so中註釋掉/etc/pam.d/sshd。(防止 MOTD。但是“LastLog”沒有相應的條目,因此,使用ssh“Last Login:”進行測試仍然會出現,因此**sftp仍然失敗**。)
  • 註釋掉session optional pam_lastlog.sosession optional pam_motd.so輸入/etc/pam.d/login。(無效。測試同時ssh顯示 MOTD 和“上次登錄:”。)
  • 使用在客戶端上創建.hushlogin文件touch ~/.hushlogin。(沒有效果。)

我沒主意了。此“上次登錄:”消息可能來自何處以及如何禁用它(理想情況下僅用於登錄sftp而不用於ssh登錄,但是,我想作為sftp使用ssh,消息將同時存在或不存在)?

我的錯字是我在上面遇到的不合理行為的原因。必須編輯的是/etc/ssh/sshd_config(對應於守護程序),而不是(對應於客戶端)。我把這個問題留在這裡,以防它可以幫助別人。ssh``/etc/ssh/ssh_config``ssh

在我的系統上,它來自 Pam。

/etc/pam.d/postlogin確切地說。

我通過註釋掉現有行並添加:

session     optional      pam_lastlog.so silent

引用自:https://unix.stackexchange.com/questions/125531