「システムユーザー」のためのパスワードなしの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
$

おすすめ記事