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
(シェルを両方に設定すると/bin/false
効果はありません。シェルが接続されると、「MOTD」と表示されてから切断されます。これは予想される動作です。)ssh
sftp
nologin
ssh
ただし、sftp
メッセージは失敗しますReceived message too long 1416128883
。この失敗は、sftp
「クリーンログイン」に予想される「MOTD」(今日のメッセージ)が原因であることがわかります。次のコマンドを使用して、サーバーのすべての「MOTD」部分を無効にしようとしました(この結果):
PrintLastLog no
PrintMotd no
最後にとを追加し/etc/ssh/ssh_config
てssh
restartを使用してくださいrestart ssh
。 (効果なし。テストにはssh
「MOTD」と「最後のログイン:」が表示されます。 )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
メッセージが同時に表示されるか、またはそうではありません)?
答え1
上記のような不合理な行動が発生した理由は、私のタイプミスによるものでした。編集するのは/etc/ssh/sshd_config
(クライアント用)ではなく(デーモン用)です。他の人に役立つようにここに質問を残します。ssh
/etc/ssh/ssh_config
ssh
答え2
私のシステムでは、Pamからインポートされます。
/etc/pam.d/postlogin
正確に。
既存の行をコメントアウトし、次を追加してメッセージを削除しました。
session optional pam_lastlog.so silent
答え3
私が使用しているスクリプトから/ etc / motdをフィルタリングするために(この例はgitプログラム用です)
git pull 2>&1 | grep -vF -f ~/bin/remote.motd | egrep -v "^$|^ $"
〜/ bin / remote.motdファイルは、リモートシステムによって提供されたmotdのコピー貼り付けです。
答え4
/var/log/lastlogを削除しましたが、「最後のログイン」メッセージが永遠に消えました。テストしたすべてのディストリビューション(UbuntuとSUSE)で動作します。
私はどうやってこのアイデアを思いついたのですか?
どのログイン 文字列/bin/login最後|