「システムユーザー」のためのパスワードなしのSSH、ログインシェルは不要

「システムユーザー」のためのパスワードなしのSSH、ログインシェルは不要

私は今日RSAを使用してsshを操作し、パスワードやログインなしでシステムユーザーアカウントを作成するなど、多くのことを学びました。私がしたいのは、ホームディレクトリを持つユーザーを作成することです。~/.ssh/必須とパスワード(初期SSH設定に必要)

しかし、正しく設定できないようです。

私は使用することを知っています

ssh-keygen
ssh-copy-id user@remotehost

RSAの場合、これは簡単です。

ユーザーを作成する方法を知っています。

useradd -r newuser

または

adduser newuser --system --shell=/bin/false
passwd newuser
passwd -d newuser
  • 最終目標

    シェルを持たないユーザーであるか、少なくともリモートシステムからログインすることはできませんが、まだ他のシステムでsshを使用してコマンドを実行できます。可能ですか?

  • 理由/目標

    これにより、ユーザーはUPSの電力が低いときにSSHを介して接続されている他のコンピュータをシャットダウンし、プライマリコンピュータをシャットダウンできます。 (統計を監視するために、USB経由で一度に1台のコンピュータしかUPSに接続できません。)

ユーザーはユーザー名upsを使用してSSH経由でログインしたくありませんが、パスワードなしでリモートホストにSSHでアクセスできるようにするにはUpsが必要です。

答え1

暗号化フィールドを*次に設定します!!/etc/shadow

例えば

# adduser tst  
# passwd -l tst
Locking password for user tst.
passwd: Success
# grep tst /etc/passwd
tst:x:1000:1000::/home/tst:/bin/bash
# grep tst /etc/shadow
tst:!!:17030:0:99999:7:::

現在有効なパスワードがないため、ユーザーはログインできません。

次に、ファイルcommand="/thing/to/do"の公開鍵の先頭にaを追加します。authorized_keys

例えば

# ls -l $PWD/authorized_keys 
-rw-r--r-- 1 tst tst 431 Aug 17 17:54 /home/tst/.ssh/authorized_keys

# cat $PWD/authorized_keys
command="/bin/echo hello" ssh-rsa AAAAB3NzaC1yc2E....etcetc

これでキーは機能しますが、このキーが実行する唯一の作業はforceコマンドです。

$ ssh -i ~/.ssh/id_rsa tst@test1
hello
Connection to test1 closed.

他の操作を試みると失敗し、同じコマンドがまだ実行されます。

$ ssh -i ~/.ssh/id_rsa tst@test1 reboot 
hello
$

答え2

認証鍵ファイルで指定された公開鍵に関連する必須コマンドを指定できます。 「AUTHORIZED_KEYSファイルの種類」セクションを参照してください。man sshd

command="command"
    Specifies that the command is executed whenever this key is used for authentication. The command supplied by the user (if any) is ignored....

no-ptyキーのオプションを使用してpty展開を無効にすることもできます。

答え3

nologin「ホーム」コンピュータでシェルを使用してアカウントを作成しました。このアカウントでは、シャットダウンする必要があるシステムにリモートでログインするために使用できるSSHキーを生成する必要があります。

nologinシェルはそのアカウントがログインするのを防ぎますが、他のシステムでリモートログインに使用できます。

シェルを使用してユーザーとしてログインするには、nologin以下を使用する必要があります。su - user_name -s /bin/bash

私のポイントは、「マスター」システムが人の介入なしにリモートサーバーを自動的にシャットダウンすることです。

答え4

逆の場合もあります。 USB経由でUPSに接続されているデバイスがオンラインであるか、シャットダウンする必要がある場合は、UPSに接続されているデバイスが一定時間オフラインになっていることを確認するスケジュールされたタスクを設定してください。 。行。コンピュータはローカルアカウントを使用してスケジュールされたタスクを実行するため、タスクを実行するためにパスワードや証明書は必要ありません。端末が ping に応答した場合は、ping 応答を受け取ったことを確認してください。

もう1つの方法は、電源ボタンを押すのと同じようにKVMを使用してシャットダウンを開始することです。コンピュータの設定に応じて電源ボタンを押すと、通常のシャットダウンのみが開始されるか、コンピュータがディスクに一時停止します。

アカウントを公開したままにしておくか、セキュリティホール(バックドア)を使用せずに何らかの認証なしでリモートコンピュータにログインする方法がわかりません。

これはタスクを達成するために要求する方法ではありませんが、目標を達成するのに役立ちます。

関連情報