web-dev-qa-db-ja.com

sftpの使用時に「最終ログイン:」メッセージが表示されないようにするにはどうすればよいですか?

Ubuntu GNU/Linux 12.04では、johndoeグループの一部であるsftponlyというユーザーがいます。sftpchroot jailに設定すると、

Subsystem sftp internal-sftp

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

/etc/ssh/ssh_configの末尾。ユーザーのhomeディレクトリのすべてのコンポーネントは、rootが所有するディレクトリであり、man sshd_configChrootDirectoryの下)で説明されているように、他のユーザーまたはグループは書き込みできません。彼の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に設定すると、sshsftpも機能しませんでした。nologinをシェルとして使用すると、sshが接続し、「MOTD」を表示してから切断します。これは、予期される動作です。)

しかし、sftpReceived message too long 1416128883というメッセージで失敗します。 sftpが「クリーンなログイン」を期待しているため、この失敗の原因は「MOTD」(今日のメッセージ)であることを知っています。 (これらの結果)で、以下を使用してサーバー上のすべての「MOTD」部分を無効にしてみました:

  • PrintLastLog noの最後にPrintMotd no/etc/ssh/ssh_configを追加し、restart sshを使用してsshを再起動します。 (影響なしsshを使用したテストでは、「MOTD」と「最終ログイン:」の両方が表示されます。)

  • 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のログインの場合はできませんが、sftpsshを使用していると想像すると、メッセージは両方またはどちらかに表示されますなし)?

10
Omid

私の誤植は、私が上で経験している不合理な行動の原因でした。編集する必要があるのは/etc/ssh/sshd_configsshデーモンに対応)であり、/etc/ssh/ssh_configsshクライアントに対応)ではありません。他の人の役に立つかもしれないので、この質問はここに残します。

3
Omid

私が使用するスクリプトで/ etc/motdをフィルタリングするために(この例はプログラムgit用です)
git pull 2>&1 | grep -vF -f ~/bin/remote.motd | egrep -v "^$|^ $"
ファイル〜/ bin/remote.motdは、リモートシステムから提供されたmotdのコピーと貼り付けです。

0
Walter A

/ var/log/lastlogを削除しましたが、「最終ログイン」メッセージが永久に消えてしまいました。私がテストしたすべてのディストリビューション、UbuntuとSUSEで動作しました。

どのようにしてこのアイデアを思いついたのですか?

どのログイン
 strings/bin/login |最後のgrep 
0
Thorsten Staerk

私のシステムでは、Pamからのものです。

/etc/pam.d/postlogin正確に。

既存の行をコメント化して追加することにより、メッセージを取り除きました:

session     optional      pam_lastlog.so silent
0
Larry N.