別のユーザーのsshキーをどのように作成しますか?


89

別のユーザーのsshキーを作成しようとしています。私はルートとしてログインしています。ssh-keygenで生成されたファイルを編集し、rootを希望のユーザーに変更するだけでいいですか?


5
ユーザーのキーを生成する場合、秘密キーとユーザーへのパスフレーズを取得する安全な方法も必要です。ユーザーがキーを生成し、公開キーをメールで送信するだけの方がはるかに優れています。
user9517

しかし、パスワードによるログインを許可しないのはそれほど難しくありませんか?私がキーオンリーで、新しいユーザーをセットアップした場合、ユーザーはログインしてキーをセットアップできません。
LVLAaron

回答:


79

あなたがそれを行うことができssh-keygen、しかし、秘密鍵は、あなたはそれがユーザーのパスワードと同様に安全safe-保つために非常に注意しなければならないので、ユーザーにプライベートであることを意味していることを覚えておいてください。または、ユーザーは最初のログイン時に変更する必要がないため、さらに安全です。

ssh-keygen -f anything現在のディレクトリに2つのファイルを作成します。anything.pubは公開鍵であり~/.ssh/authorized_keys、任意の宛先サーバー上のユーザーに追加できます。

呼び出されたばかりのファイルanythingは秘密鍵であるため、ユーザーが安全に保存する必要があります。デフォルトの場所は~username/.ssh/id_rsaid_rsarsaキーのデフォルトの名前です)です。ことを忘れないでください.sshディレクトリは誰もが、ユーザーが読み取り可能か、書き込み可能でないことができ、ユーザのホームディレクトリは、誰が、ユーザーによって書き込み可能にすることはできません。同様に、秘密キーに対するアクセス許可も厳しくする必要があります。ユーザーのみの読み取り/書き込み、および.sshディレクトリと秘密キーファイルはユーザーが所有する必要があります。

技術的には、キーをどこにでも保存できます。ssh -i path/to/privatekey接続しているとき、その場所を指定することもできます。繰り返しますが、適切な所有権と権限は重要であり、適切な権限がないとsshは機能しません。


4
+1が秘密(!)キーであることを表すために
mailq

51
ユーザーは実在の人物であると想定しています。ログインがユーティリティタスクの実行に使用される非対話型ユーザーである場合(リモートサーバーでメインスクリプトの実行など)、はい、おそらくそのユーザーのキーを手動で生成します。もちろん、それは独自のセキュリティの意味を持っていますが、それは別の話です。
リリンド

2
ssh -i非特権プロセスの秘密キーへの@Rilindo は、いくつかの自動化されたrsyncバックアッププロセスを処理する方法です。:)
シャダー

9
「そうすべきではない」というような答えは好きではありませんが、質問には答えません。これは元の質問の文脈にとっては正しいと思われるかもしれませんが、他の人は異なる状況で同じ質問をしているかもしれません。「sshキーを別のユーザー用に生成することはできません」:単純な場合はそうです。しかし、たとえば、同じ肉体の複数のIDを検討してください。複数のシステム上に複数のアカウントが存在する場合がありますが、それらのすべてでキーを生成したり、秘密キーを適切に保護したりすることはできません。
ギュスターヴ

usersまたはuser's
ユーザー

135

SSHキーにはユーザー情報がありません

公開キーの最後のフィールドはコメントです(次のコマンドを実行して変更できますssh-keygen -C newcomment)。

別のユーザーのキーを作成するために特別なことをする必要はありません。適切な場所にキーを置き、許可を設定するだけです。


5
それが正しい答えです。
sebnukem

1
私はただテストして確認しました。コメントだけでなく、削除してもキーは機能します。私はいつもそれが重要だと思っていました!正しい答えをくれてありがとう。上記のコメントと同様に、他のユーザー用のキーを作成する理由がありますが、その理由を説明しませんので、議論はありません。
FreeSoftwareServers

18

suを使用してユーザーになり、そのユーザーとしてキーを実行します。

[root@kvm0001 ~]# su - joeuser
[joeuser@kvm0001 ~]$ ssh-keygen -t dsa (or rsa1 or rsa, depending on your security requirements)
Generating public/private dsa key pair.
Enter file in which to save the key (/home/joeuser/.ssh/id_dsa):

DSAを指定する理由
ラム

おっと、習慣の力。更新させてください。
リリンド

4
rsa(または楕円曲線バリアントの1つ)を使用する必要があります。dsaは、安全でないキーサイズに制限されています。rsa1はssh1のレガシー形式であり、誰ももう使用すべきではありません。
ピーターグリーン

joeuserはサービスユーザーであるため、ログインできません。サービスユーザー(プロセスを実行するだけ)にsshキーを持たせるにはどうすればよいですか?
ジョナサン

@JonathanLeadersそのユーザーになるときに、そのユーザーのシェルを指定します。次のようなもの: `` `[root @ ip-10-254-41-211〜]#grep ftp / etc / passwd ftp:x:14:50:FTP User:/ var / ftp:/ sbin / nologin [root @ ip-10-254-41-211〜]#su-ftp su:警告:ディレクトリを/ var / ftpに変更できません:そのようなファイルまたはディレクトリはありませんこのアカウントは現在利用できません。[ルート@ IP-10-254-41-211〜]#suコマンド-s / binに/ bashののftpのbash-4.2 $ whoamiはFTPのbash-4.2 $ `` `
Rilindo

6

ここに見られるよう、chmodを使用して、SSHキーを追加するユーザーのフォルダーの読み取り許可を変更できます。

vim /home/username/.ssh/authorized_keys

次に、そのファイルの最後にある新しい行にキーを貼り付けます。


1
リンクは死んでいます...
Nyxynyx
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.