web-dev-qa-db-ja.com

ログインシェルのない「システムユーザー」用のパスワードなしのSSH

私は今日、RSAでsshをいじり、パスワードやログインなしでシステムユーザーアカウントを作成するなど、多くのことを学びました。私がやろうとしていたことは、ホームディレクトリが必要なユーザーを作成することでした。 /.ssh/とパスワード(最初のsshセットアップに必要)

しかし、私はそれを正しく設定しているようには見えません。

使用について知っています

ssh-keygen
ssh-copy-id user@remotehost

これはRSAにとって簡単です

私は言うことでユーザーを作成する方法を知っています

useradd -r newuser

OR

adduser newuser --system --Shell=/bin/false
passwd newuser
passwd -d newuser
  • エンドゴール

    シェルを持たないユーザー、または少なくともリモートコンピューターからログインできませんが、別のコンピューターにSSHで接続してコマンドを実行するために引き続き使用できます。これは可能ですか?

  • 理由/目標

    PSの電力が低下したときに、メインコンピューターをシャットダウンする前に、sshを介して接続されている他のコンピューターをシャットダウンするユーザーがいます(USBを介してUPSに接続できるコンピューターは一度に1つだけです。 stats)

ユーザー名UPSでSSH経由でログインできるようにしたくないのですが、パスワードなしでリモートホストにsshできるようにするにはupsが必要です。

5

Cryptフィールドを*または!!/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"ファイルの公開鍵の先頭に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

これでこのキーを使用できますが、使用できるのはその強制コマンドのみです。

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

他のことをしようとすると失敗し、同じコマンドを強制します

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

その「メイン」マシンにnologin Shellを使用してアカウントを作成しました。そのアカウントについては、シャットダウンする必要があるマシンでのリモートログインに使用できるsshキーを生成する必要があります。

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

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

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

1
HubertS

承認済みの鍵ファイルで、特定の公開鍵に関連付けられた強制コマンドを指定できます。 man sshd の「AUTHORIZED_KEYS FILE FORMAT」のセクションを参照してください。

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の割り当てを禁止することもできます。

1
user4556274

UPSに接続されたマシンが一定時間オフラインである場合、シャットダウンする必要があるマシンから、USBでUPSに接続されたマシンがオンラインであるかどうかを確認するスケジュールされたタスクを設定します行。マシンはローカルアカウントを使用してスケジュールされたタスクを実行するため、タスクを実行するためにパスワードや証明書は必要ありません。マシンがpingに応答する場合、pingからの応答を確認するのと同じくらい簡単です。

別の方法は、KVM=を使用して、電源ボタンが押されたかのようにシャットダウンを開始することです。マシンの設定によっては、電源ボタンを押すだけで通常のシャットダウン操作が開始されるか、ディスクに一時停止するマシン。

アカウントを風にさらしたままにしたり、セキュリティ上の欠陥やバックドアを使用したりしない限り、なんらかの認証なしにリモートマシンにログインする方法はわかりません。

これは、タスクを実行するように要求した方法ではありませんが、目標を達成するために機能する方法です。

0
Zulgrib