web-dev-qa-db-ja.com

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

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

  • 新しいユーザーを作成します(これ以降はjimと呼びます)。 /home/ディレクトリが必要です。
  • jim SSHアクセスを許可します。
  • jimからsuへのルートを許可しますが、Sudo操作は実行しません。
  • ルートSSHアクセスをオフにします。
  • SSHdを非標準ポートに移動して、総当たり攻撃を阻止します。

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

104
Oli

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

Port 1234
PermitRootLogin no
AllowUsers jim

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

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

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

AllowUsers [email protected]

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

Sudo service ssh reload
99
Lekensteyn

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にユーザーを追加する必要があります。

95
dh1tw

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

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

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

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

12
Kees Cook

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

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

Sudo apt-get install openssh-server

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

/etc/ssh/sshd_config

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

Sudo service ssh restart

11
Matt Mootz

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

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

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

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

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

7
Tok

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

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

usermod -a -G sshusers jim

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

3
Joshua Fricke

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

AllowUsers existingUser,newUser

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

0
ptjetty

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

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

0
Aldee