Sshdサービスを実行しているローカルホスト。 ssh-keygenを使用して、root
とuser1
の2組のrsaキーを作成しました。 root/.ssh/id_rsa.pubからuser1/.ssh/id_rsa.pubにコピーしました。権限を600に変更しました。ssh -l user1 localhost
とssh -l root localhost
を試しましたが、どちらもPermission denied(publickey、keyboard-interactive)。で失敗しました。両方のユーザーの公開鍵を~/.ssh
フォルダにコピーする必要がありますか?構成の何が問題になっていますか? localhostに接続できないのはなぜですか?
ファイル/etc/ssh/sshd_config
:
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication yes
UsePAM no
AllowUsers user1 root
PermitRootLogin yes
ファイル/etc/ssh/ssh_config
には、コメント化されていない行があります。
RSAAuthentication yes
PasswordAuthentication no
ForwardX11 no
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
GSSAPIDelegateCredentials no
PubkeyAuthentication yes
編集1
Localhostに接続しようとしています。公開鍵のみを使用してuser1にログインできなければなりませんが、公開鍵および/またはパスワードを使用してrootとしてログインできます。
編集2
cp ~/.ssh/id_rsa.pub /home/user1/.ssh/authorized_keys
をコピーしました。権限chmod -R 700 ~/.ssh
およびchmod -R 700 /home/user1/.ssh
を変更しました。 sshd「service ssh restart」を再起動しました。しかし、それは機能していないようです。
編集4
root@ubuntu:~# ssh-copy-id user1@localhost
The authenticity of Host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is 34:29:b6:1b:fe:84:eb:82:85:77:87:f6:25:39:61:5a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
Permission denied (publickey,keyboard-interactive).
root@ubuntu:~# ssh-copy-id root@localhost
Permission denied (publickey,keyboard-interactive).
ログ:
# tail /var/log/auth.log
... ubuntu sshd[8476]: User root not allowed because account is locked
良いSSHトラブルシューティング記事: 問題と解決策
SSHキーペア認証を使用し、パスワードログインをオフにしても、パスワードのないアカウントにログインしようとすると、この問題が発生しました。解決策は、私のrootアカウントを使用してパスワードを設定することでした:
passwd user1
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
サーバーへのssh処理で問題が発生した場合は、常に-v
フラグを追加することをお勧めします。
$ ssh -v Host -l user
上記のどちらの場合も、公開キー(id_rsa.pub
)を「リモートユーザーの.ssh/authorized_keys」ファイルに追加する必要があります。上記のケースでは、rootとuser1の両方に。これは ssh-copy-id コマンドで簡単に実行できます。
/var/log/secure
は、ログインが成功しなかった理由についての手掛かりを保持します。
ディレクトリの権限は700 [rwx](600ではない)[rw-]である必要があります
私はしばらく前に同じような問題に遭遇しました
chmod -R 600 ~/.ssh
どうやらファイルのアクセス許可は正しいが、ディレクトリのアクセス許可が同じ種類のアクセス許可ではない場合、エラーが発生する可能性があります。
また、ファイルの名前をid_rsa.pubからauthorized_keysに変更する必要があると思います。
注意事項:パスワード認証を無効にしたため、パスワードでログインできません。許可されたユーザーを他のユーザーと一緒に構成する必要があると思います(一致するユーザーがおそらく前進するための最良の方法です)。また、特にrootユーザーを許可する必要があります(PermitRootLoginをyesに設定します)。
_/etc/ssh/sshd_config
_、特にStrictModes
(_grep StrictModes /etc/ssh/sshd_config
_)の設定に関する詳細情報を提供することは理にかなっています。 StrictModes
は、各ユーザーのそれぞれの_~/.ssh
_および_~/.ssh/authorized_keys
_のファイルおよびフォルダーのアクセス許可に対するsshd
の反応を制御する設定です。また、_sshd_config
_のAuthorizedKeysFile
の設定も提供されていません。 SSHサーバーがファイルを置く場所以外の場所でファイルを探している場合は、非常に重要です。
しかし、これまでの答えは別として、これには多くの理由が考えられます。問題は、あなたが試しましたが、何が悪いのかを確実に推測するのに十分な情報がないということです。
もう1つは、PAMの制限です(UsePAM
in _sshd_config
_)。 Ubuntuはある時点でそれを使用していました。ユーザーアカウントにパスワードが設定されていない場合(公開キーのみの認証)、そのアカウントは許可されません。
しかし、そのような問題をデバッグするための一般的な方法を紹介しましょう。
sshd
の一般的なトラブルシューティングこのような場合に一般的に非常に便利だと思うのは、デーモン化せずにsshd
を起動することです(「バックグラウンドに移動して端末から切り離す」)。多くの場合、特に構成エラーが発生した場合(少なくとも明らかなケースではありません)、ログはあまり役に立ちません。
あなたはそのようなターミナルからそれを開始します:
_# $(which sshd) -Ddp 10222
_
これにより、他の方法では表示されない(_-d
_がない場合)、運が良ければログに出力される、多くのデバッグ出力が得られます。
NB:$(which sshd)
は、絶対パスのsshd
要件を満たす最良の方法です。そうしないと、次のエラーが発生します:_sshd re-exec requires execution with an absolute path
_。 _-p 10222
_はsshd
をその代替ポートでリッスンさせ、構成ファイルをオーバーライドします。これは、実行中のsshd
インスタンスと競合しないようにするためです。 必ずここで空きポートを選択してください。
この方法は、認証の問題、パフォーマンスの問題、その他の種類の問題など、問題を見つけるのに何度も役立ちました。本当に詳細な出力をstdout
に取得するには、$(which sshd) -Ddddp 10222
を使用します(詳細度を上げるためにdd
が追加されていることに注意してください)。デバッグの詳細については、_man sshd
_を確認してください。
クライアント側では、ssh
は_-v
_(最大_-vvv
_)を取り、何をしているのかについて本当に冗長になる可能性があります。
ログ行
_... ubuntu sshd[8476]: User root not allowed because account is locked
_
それが問題であることを示唆しているので、実行してください:
_Sudo passwd -u root
_
CentOSでは、selinuxが認証をブロックすることがあります。コマンドを使用して問題を解決するには:
restorecon -Rv ~ /. ssh