Ubuntu Serverで新しいSSHユーザーを作成する


104

新しい仮想Ubuntuサーバーを作成したばかりで、私は本番用に強化しています。現在、rootアカウントを持っています。私は次のことをしたい:

  • 新しいユーザーを作成します(jimこれ以降は呼び出します)。私は彼らが持っているしたい/home/ディレクトリを。
  • 与えるjimSSHアクセスを。
  • ルート化を許可jimsuますが、sudo操作は実行しません。
  • ルートSSHアクセスをオフにします。
  • SSHdを標準以外のポートに移動して、総当たり攻撃を阻止します。

私の問題は最初の2つの項目にあります。すでに見つけましたuseraddが、何らかの理由で、SSHで作成されたユーザーとしてログインできません。これを可能にするためにSSHdを破る必要がありますか?


こんにちは!私はサーバーであなたを助けることができます、私はデフォルトの設定で私の接続を決して拒否しないので、私はSSHに関するあなたの問題が何であるかわかりません。man 5 nologinが表示される場合がありますが、これは、/ etc / nologinが存在する場合、rootでのみログインできることを示しています。通常どおりログインして、結果を書き込みます。
antivirtel

ユーザーのシェルは何ですか?/ bin / bashですか?/ etc / passwordで確認してください。/ dev / nullまたは/ bin / falseでないことを確認してください。
LFC_fan

はい、LFC_fan、または/ etc / nologinも。(sudo)cat / etc / passwdを使用します| grepのジム
antivirtel

1
@B。ローランド私は/etc/nologinファイルを持っていますが、空です。私はそれを削除したとsshを再起動するが、それはまだちょうど応答だPermission denied, please try again.私がしようとすると、ログイン時。
オリは

@LFC_fanそれは/ bin / bash
オリ

回答:


99

(ルートとして)編集し/etc/ssh/sshd_configます。次を追加します。

Port 1234
PermitRootLogin no
AllowUsers jim

Port 1234SSHはポート1234でリッスンします。1〜65535の未使用ポートを使用できます。rootのみが使用できる特権ポート(ポート1〜1024)を選択することをお勧めします。SSHデーモンが何らかの理由で動作を停止した場合、不正なアプリケーションは接続を傍受できません。

PermitRootLogin ルートへの直接ログインを許可しません。

AllowUsers jimユーザーjimがSSH経由でログインできるようにします。どこからでもログインする必要がない場合は、jimをIPアドレスに制限することで、これをより安全にすることができます(実際のIPアドレスで1.2.3.4を置き換えます)。

AllowUsers jim@1.2.3.4

構成ファイルへの変更/etc/ssh/sshd_configはすぐには適用されません。構成を再ロードするには、次を実行します。

sudo service ssh reload

10
+1:注:これらの手順は、Ubuntuの新しいバージョン(13.04など)にも適用されます。あなたが希望した場合はroot、ログインを(おそらくあなたはまだサーバーを設定している)、しかし、あなたが設定しなければならないPermitRootLoginyesしても追加rootしますAllowUsers
JRG開発者

4
このユーザーのパスワードは何ですか?
Wolfpack'08

VPSには、ポート22でのSSHログイン用のルートパスワードが付属しています。sshd_configに答えを追加すると、rootがログインできなくなります。これは、jimにもポート22を使用したためですか。
ウルフパック

1
@Lekensteyn Ubuntuに新しいユーザーを追加するだけで、そのユーザーのsshアカウントが作成されることがわかりました。... useradd -m -G sudo,adm -s /bin/bash mecharokおよびpasswd mecharok
Wolfpack'08

3
@ Wolfpack'08 AllowUsers username1,username2これらのユーザーへのSSHログインを制限するために使用します。sshd再ロードされていることを確認してください。それでも解決しない場合は、新しい質問を作成してください。
Lekensteyn

96

SSHは、ディレクトリとファイルのアクセス権について非常に慎重です。以下を確認してください:

  1. ディレクトリ/home/username/.sshにはパーミッション「700」があり、ユーザー(rootではない!)が所有しています。
  2. / home / username / ssh / authorized_keysにはパーミッション「600」があり、ユーザーが所有しています

公開鍵をauthorized_keysファイルにコピーします。

sudo chown -R username:username /home/username/.ssh
sudo chmod 0700 /home/username/.ssh
sudo chmod 0600 /home/username/.ssh/authorized_keys

ありませんNOは/ etc / sshを/ ssh_configのにユーザーを追加する必要が。


1
私の問題はchownで、~./sshrootとして作成し、ユーザーに所有権を与えませんでした。
Gerve

1
私の問題は、私が/root/.ssh/authorized_keys代わりに使用しようとしていたことでした/home/bob/.ssh/authorized_keys
アレックスW

確認できます:VPSホスティングでは編集する必要はありませんでしたssh_config。そのディレクトリとファイルを設定するだけで十分でした。
スーパージョス

2
私にとっては、それはchmod 755 /home/username/.sshでなければなりませんでした。そうしないと動作しません。
ジムW

ユーザー(またはsudo su --login {user})としてログインして実行するのがはるかに簡単ですssh-keygen-> ".ssh"フォルダー、キー+証明書、およびアクセス許可が完了しました。指示に従ってauthorized_keysを作成してください。
bshea

13

/var/log/auth.logSSH(またはPAM)がログイン試行を拒否する理由についての手がかりがあります。sshクライアントで-vオプションを使用すると、追加の手がかりが見つかる場合があります。いくつかの一般的な状況、他の回答で言及されたもの:

  • ユーザーアカウントにパスワードがないか、無効になっています(を参照してください。man passwdパスワードのリセットまたはの内容を確認してください/etc/shadow)。
  • /etc/ssh/sshd_configログインを許可しないように設定されている(DenyUsersAllowUsersPasswordAuthenticationPubkeyAuthenticationUsePAMなど、参照man sshd_config)。
  • ユーザーのシェルはにリストされていません/etc/shells
  • :SSHの操作に関連するディレクトリやファイル上のさまざまなパーミッションの問題/etc/ssh/home/jim/.ssh/home/jim/.ssh/*、など

また、新しいユーザーを追加するために(useraddではなく)adduserを使用することをお勧めします。さまざまなデフォルトのアカウント設定についてもう少しわかりやすいです。

ユーザーがadminグループに属していない限り、root にsudoできません。彼らがsuを使用するには、rootパスワード(passwd root)を設定する必要があります。その後、で設定PermitRootLogin=noすることをお勧めします/etc/ssh/sshd_config


すばらしい回答をありがとう-特に「adduser」は大いに役立ちました!
vishal.biyani

11

私は間違っている可能性がありますが、接続する前に常にサーバーデーモンをインストールする必要があります(少なくともデスクトップでは)デフォルトでsshがインストールされていますが、それは単なるクライアントです

このコマンドはサーバーをインストールします

sudo apt-get install openssh-server

編集してポートを変更し、rootログインを停止できます

/etc/ssh/sshd_config

ただし、これにはサービスの再起動が必要です。

sudo service ssh restart


これは仮想サーバー(VPS)であるため、デフォルトでSSHがインストールされます。サーバーへの唯一のインターフェイスです。そしてsudo /etc/init.d/ssh reload、代わりに設定をリロードできますが、それでも良い情報です。
オリ

8

パスワードを設定するまで、ジムはSSHアクセスできません。rootとして実行:

grep -i "jim" /etc/shadow | awk -F':' '{ print $2 }'

このコマンドが「!」を返す場合 文字を入力すると、このアカウントのログインは無効になります。passwd jimrootとして実行すると、新しい確認済みのパスワード文字列の入力が求められます。その後、上記のgrepコマンドは、jimのパスワードを表すハッシュ文字列を返します。

また、jimにデフォルトで設定されたログインシェルと、存在するホームディレクトリがあることを確認してください。

SSHサーバー設定の変更については、lekensteynの投稿に注意してください。


「このコマンドが「!」文字を返す場合、このアカウントのログインは無効になっています」これは、SSHができないという意味ではないことに注意してください。パスワードを使用して(公開キーを使用して)それを行うことができないということだけです。
bfontaine

3

私の場合、アクセスを許可されたグループがあり、ユーザーはそのグループに属していませんでした。これで解決しました。

ユーザーで上記の例を使用し、jimグループのメンバーをjimそれが唯一のグループであると想定groupsします(ログインしてjimいる間に、自分が所属しているグループを見つけるためにコマンドを発行します)。私の/etc/ssh/sshd_configファイルにはAllowGroups sshusersエントリがあったjimため、sshusersグループに追加する必要がありました。以下は、これを達成する方法です。

usermod -a -G sshusers jim

構成に応じてグループとユーザーを置き換えます。


1
例をよりよく説明するソースを参照するか、OPの元の質問に基づいて関連情報を追加することにより、回答を改善する必要があります。たとえば、jimコンテキストを提供するためにダミーのユーザーとして指定されたユーザー。こちらの記事説明しています。

0

PasswordAuthenticationデフォルトで無効になっている場合があります。

属性がに設定され/etc/ssh/sshd_configていることを確認してください。PasswordAuthenticationyes


0

@Lekensteyn私は評判がないので質問の答えにコメントを残すことができません-しかし、私は追加しようとしました

AllowUsers existingUser,newUser

/ etc / ssh / sshd_configファイルに追加すると、existingUserとnewUserの両方でsshができなくなりました。


私はあなたの痛みを理解しています:DIは一度同じ問題を抱えていました。ソリューション: AllowUsers existingUser@* newUser@*
イスマイルAtkurt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.