SSHキー経由でroot
にログインしているVPSがあります。
ここで、コマンドadduser
を使用して別のユーザーuser1
を作成し、それにパスワードを割り当てました。ただし、user1
を使用してwinSCP
を介してサーバーにログインしようとすると、秘密キーを入力する必要があり、ユーザー1のパスワードを使用してログインできないというエラーが表示されます。
私の質問は次のとおりです。
この回答の最後の例のように、/etc/ssh/sshd_config
ファイルに特定のユーザーのルールを追加できます。しかし、が警告される前に、SSHを介したパスワードログインを許可することは、サーバーに対して可能な総当たり攻撃の観点からやや安全ではありません。そのため、最も安全な方法は、VPSまたは別のLinuxマシンで次の行を使用して別のSSHキーを作成することです。最良の方法は、su - user1
で次のコマンドを使用する前に、そのマシンでuser1に切り替えることです。 (注:-f
はパスに苦労するため、キーペアを作成するディレクトリに移動する必要があります):
ssh-keygen -t rsa -C "[email protected]" -f user1_key
ユーザーは、自分のキーペアを短時間でVPSまたは別のLinuxマシンにコピーすることで、パスフレーズを後で変更できます。
ssh-keygen -p -f user1_key
次に、秘密鍵(user1_key
)をuser1に渡し、VPSのuser1_key.pub
の下のユーザーのホームディレクトリに公開鍵(~/.ssh/authorized_keys
)を配置し、所有権をuser1に変更するか、su - user1
これを実行する前に、user1のホームディレクトリ内の望ましくない誤った所有権を防止します。
mkdir -p /home/user1/.ssh
cat user1_key.pub >> /home/user1/.ssh/authorized_keys
# The next line is only needed if you have done the two above as 'root'
chown -Rv user1:user1 /home/user1/.ssh
キーペアの作成プロセスは、WindowsでもWinScpを使用して実行できます。参照用に here を参照してください。次に、公開キーと秘密キーに適切なアクセス許可が設定されていることを確認する必要があります。これは、ユーザーの秘密キーの場合は0600
、ユーザーの公開キーの場合は0644
です。 (注:キーをWindowsでフォーマットされたUSBスティックまたはドライブにコピーすると、キーの設定権限が失われるため、再確認してください。
ただし、このユーザーがパスワードでログインできるようにしたい場合は、/etc/ssh/sshd_config
の次の行を変更できます。
AllowUsers mainuser user1
最後に次を追加します。
パスワードのみを有効にする場合:
Match User user1
PubkeyAuthentication no
PasswordAuthentication yes
両方を有効にするには:
Match User user1
PubkeyAuthentication yes
PasswordAuthentication yes
Sshのみを有効にするには、その部分を削除するか、次のように設定します。
Match User user1
PubkeyAuthentication yes
PasswordAuthentication no
質問に必ずしも関連するわけではないかもしれないが、一般的にSSHに関連するより多くの読み物は、 here を見つけることができます。 ssh-keygen
コマンドのマンページ および ssh
コマンドのマンページ も参照してください。
@ Eliah-Kagan に感謝し、校正と修正と追加を提案してくれました。