GNU/Linux >> Linux の 問題 >  >> Linux

ssh ログインでクライアントから motd が出力されないようにしますか?

解決策 1:

なぜあなたがこれを正しく行うことに嫌悪感を抱いているのかわかりません-サーバー上でも.

PrintMotd no
PrintLastLog no

そして

#/etc/pam.d/ssh
# Print the message of the day upon successful login.
# session    optional     pam_motd.so

または、ユーザーごとに ~/.hushlogin を追加します。

ヒント、~/.hushlogin については、/etc/skel に追加して、新しいユーザー ホーム ディレクトリがファイルと共に作成されるようにします。

更新:

バックアップ cron ジョブに関する詳細情報がなければ、コマンドの出力をファイルにリダイレクトし (または cron に電子メールでキャプチャさせる)、ssh セッションの出力を /dev/null にリダイレクトすることをお勧めします。次のようなもの:

0 0 * * * ssh backuphost "backup_script_that_writes_to_a_log" >/dev/null

または

0 0 * * * ssh backuphost "backup_command 2>&1" >/dev/null

コマンドを少しいじる必要がありますが、それで始められるはずです。

解決策 2:

ユーザーごとにこれが必要な場合は、 touch ~/.hushlogin を実行してください これで OpenSSH の準備は完了です。

更新 :他の場所で指摘されているように、 pam_motd ユーザーごとの .hushlogin を使用しないように構成できます; /etc/login.defs をチェック HUSHLOGIN_FILE の場合 .すべてのユーザーを /etc/hushlogins にリストするように構成できます

解決策 3:

@note すべての例は、変数 connectionString を設定したことを前提としています [email protected] のようなもので .

解決策にたどり着いた方法

ssh -T の使用 単純なコマンドで機能するはずです。たとえば、これは追加情報を出力しません:

ssh -T $connectionString "echo 'blah'"

問題は、here-doc を使用して多くのコマンドを実行しようとする場合です。たとえば、以下は機能しません。今日のメッセージ (MoTD) がエコーされ、「stdin:is not a tty」と表示される場合もあります。

somethingLocal='something local'
ssh -T $connectionString <<EOC
    echo 'blah'
    echo "blah $somethingLocal"
EOC

この問題を回避するには、最初にコマンドをローカル変数に保存し、それらをリモート サーバーに送信する必要があります。

somethingLocal='something local'
read -r -d '' commands <<EOC
    echo 'blah'
    echo "blah $somethingLocal"
EOC
ssh -T $connectionString "$commands"

しかし、それは厄介です...

最終的な解決策

汎用関数を作成します (コマンドとして文字列または HEREDOC を使用できることに注意してください)。

function silentSsh {
    local connectionString="$1"
    local commands="$2"
    if [ -z "$commands" ]; then
        commands=`cat`
    fi
    ssh -T $connectionString "$commands"
}

次のように使用します:

somethingLocal='something local'
silentSsh $connectionString <<EOC
    echo 'blah'
    echo "blah $somethingLocal"
EOC

またはそのように:

silentSsh $connectionString "echo 'blah'"

またはそのように:

silentSsh $connectionString <<'EOC'
    echo 'blah'
    somethingRemote=`echo 'whatever'`
    echo "blah $somethingRemote"
EOC

またはそのように:

silentSsh $connectionString < getlines.sh

解決策 4:

このハックはどうですか?;-P

ssh -t [email protected] '/bin/bash'

以下はではない 有効:

-T を渡す ssh に接続して tty 割り当てを無効にします:

ssh -T machineName 'echo foo'

解決策 5:

これはどのオペレーティング システムですか?一部のシステム (ubuntu など) では、motd は ssh サーバー (/etc/ssh/sshd_config の PrintMotd) ではなく、pam_motd を使用した pam によって出力されます。この場合、おそらくクライアントから制御することはできません。


Linux
  1. Linux – SshからTtyにユーザーをログインさせる方法は?

  2. ログイン時にOrcaが起動しないようにするにはどうすればよいですか?

  3. 公開鍵認証のみでの root ssh ログインを許可する

  1. Linux コマンドラインからの SHA-256 ハッシュの生成

  2. 標準出力からの出力の最後の 4 文字を取得する

  3. EC2 から ssh の known_hosts への IP の追加を停止するには?

  1. 壊れたNfs接続がクライアントシステムをフリーズするのを防ぎますか?

  2. Linux サーバーから Windows クライアントに SCP する方法

  3. LibreOffice、lprコマンドを使用してコマンドラインから印刷しますか?