まずはドープスラップ
この質問で思い出すルールがあるのですが、それは何ですか?そうそう...
パスワードは絶対に誰とも共有しないでください。
これもルールとよく合います。
電子メールで何か秘密を送信しないでください。
怒鳴ってごめんなさい。秘密が漏洩する可能性は、それを知っている人の数の 2 乗であるというセキュリティのルールがあります。私の結果は次のとおりです。
if ( people_who_know_secret > 1 ) {
It ain't a secret any more
}
Unix では、システム管理者であるすべての権限を持つ root でさえ、パスワードを知りません。
さらに悪いことに、パスワードをメールで送信したいと考えています。電子メールは決して安全ではありません。それは通常、少し興味のある人なら誰でも覗き見ることができる Aether を介して送信されるプレーンテキストです。
方法 1: ユーザーがパスワードを知らなくても SSH を使用できるようにする
SSH を使用しているため、SSH には秘密鍵/公開鍵と呼ばれる、ユーザーを検証するための代替メカニズムがあることを知っておく必要があります。システムによって異なりますが、公開鍵と秘密鍵のペアを作成します。ログインしたいシステムと公開鍵を共有しますが、秘密鍵は非公開にしておきます。
ssh
リモート マシンが公開鍵を取得すると、そのシステムのパスワードを知らなくても、そのシステムにログインできます。
正確なメカニズムはマシンごとに異なり、2 つの異なる ssh プロトコルがあることは役に立ちません。そのため、それを機能させる方法はシステムごとに異なります。Linux および Mac では、 ssh-keygenコマンドを使用して公開鍵と秘密鍵のペアを生成します。
デフォルトでは、 はandssh-keygen
というファイルを生成します。最初のものはあなたの公開鍵です。自分のマシンとログインしたいマシンの両方で実行します。$HOME/.ssh/id_rsa.pub
$HOME/.ssh/id_rsa
ssh-keygen
ログインしているマシンで、 というファイルを作成し、$HOME/.ssh/authorized_keys
公開鍵をコピーしてこのファイルに貼り付けます。友達にも公開鍵を送ってもらい、それもファイルに貼り付けます。各公開鍵は、ファイル内で 1 行を占めます。
すべてがうまくいけば、あなたとあなたの友人の両方がssh
、パスワードを求められることなくそのリモート マシンにログインできるようになります。公開鍵は対応する秘密鍵と一致する必要があるため、これは非常に安全です。そうでない場合、ログインできません。つまり、他のユーザーが公開鍵を見つけたとしても、そのリモート システムにログインすることはできません。
あなたとあなたの友人は、パスワードを共有することを心配することなく、そのシステムにログインできます。
方法 2: より良い解決策: SUDO を使用する
これを行うもう 1 つの方法は、sudoを使用して、友人が特定の点であなたのように振る舞えるようにすることです。Sudo には、実際にアカウントを共有するよりもいくつかの利点があります。
- SUDO の使用はすべてログに記録されるため、追跡可能です。何か問題が発生した場合、誰が責任を負うべきかを知っています。
- ユーザーが SUDO としてできることを制限できます。たとえば、友達はあなたと同じように特定のコマンドを実行する必要があり、それ以外は何も実行する必要はありません。この場合、
/etc/sudoers
友人がその特定の 1 つのコマンドのみを実行できるようにファイルで指定できます。友達がコマンドを実行するだけでよいか、またはそのコマンドを実行するために友達にパスワードの入力を要求するかを指定することもできます。
Ubuntu Linux および Macintosh では、root パスワードがロックされているため、root としてログインできません。root として何かをする必要がある場合は、自分自身を管理者として設定し (自分自身をwheel
グループに入れることであると思います)、sudo
必要な管理者機能を実行するために使用します。
Sudo の大きな欠点は、セットアップがより複雑であり、マシンでの管理者アクセスが必要なことです。
SSH を使用して公開/秘密鍵を設定してみてください。機能させるには微調整が必要かもしれませんが、機能すると美しいです。さらに良いことに、リモート コマンドを実行sep
して、あるマシンから別のマシンにファイルをコピーするために使用できます。すべてパスワード プロンプトを表示する必要はありません。これは、シェル スクリプトを記述して作業を実行できることを意味します。
ところで、リモート シェルを に設定するという卑劣なトリックがあります/bin/false
。そうすれば、そのシステムにログインすることはできません -- を使用しても、と を使用しssh
てリモート コマンドを実行し、システム間でファイルをやり取りすることができます。ssh
sep