Ssh
使用 sftp 時如何防止“上次登錄:”消息出現?
在 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_config
。home
使用者目錄的所有組件都是 -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
不適用於ssh
或sftp
。當nologin
shellssh
連接時,顯示“MOTD”,然後斷開連接,這是預期的行為。)但
sftp
消息失敗Received message too long 1416128883
。我知道此故障是由“MOTD”(每日消息)引起的,正如sftp
預期的“乾淨登錄”。我嘗試使用以下命令禁用伺服器上的所有“MOTD”片段,並帶有(這些結果):
- 使用.添加
PrintLastLog no
和PrintMotd 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.so
和session 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