511

公開SSHキーをauthorized_keysファイルに追加しました。 ssh localhostパスワードを要求せずにログインする必要があります。

私はそれをして入力しようとしssh localhostましたが、それでもパスワードを入力するように求められます。それを機能させるために私が通過しなければならない別の設定はありますか?

権限を変更するための指示に従いました。

以下は私がした場合の結果ですssh -v localhost

debug1: Reading configuration data /home/john/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: Connection established.
debug1: identity file /home/john/.ssh/identity type 1
debug1: identity file /home/john/.ssh/id_rsa type -1
debug1: identity file /home/john/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.7p1 Debian-8ubuntu3
debug1: match: OpenSSH_4.7p1 Debian-8ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'localhost' is known and matches the RSA host key.
debug1: Found key in /home/john/.ssh/known_hosts:12
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: /home/john/.ssh/identity
debug1: Server accepts key: pkalg ssh-rsa blen 149
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>

次に、上記のログの後にパスフェーズを要求します。パスワードなしでログインしないのはなぜですか?

4

30 に答える 30

1238

authorized_keysファイルと、ファイルが配置されているフォルダー/親フォルダーのアクセス許可を確認する必要があります。

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

詳細については、このページを参照してください。

グループや他のユーザーの書き込みアクセスを削除するには、ホームディレクトリのアクセス許可を変更/確認する必要がある場合もあります。

chmod go-w ~
于 2011-06-16T18:55:02.133 に答える
169

SELinuxは、authorized_keysが機能しない原因にもなります。特にCentOS6および7のrootの場合。ただし、無効にする必要はありません。

権限が正しいことを確認したら、次のように修正できます。

chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
restorecon -R -v /root/.ssh
于 2014-02-07T19:42:56.597 に答える
118

sshauthorized_keysの設定は簡単なようですが、私が理解しようとしているいくつかのトラップを隠しています。

-サーバー-

/ etc / ssh / sshd_configpasswordAuthentication yesで、サーバーがパスワード認証を一時的に受け入れるように設定します

- クライアント -

CygwinをLinuxエミュレーションと見なし、OpenSSHをインストールして実行します

1.秘密鍵と公開鍵を生成します(クライアント側) # ssh-keygen

ここでを押すとEnter〜/ .ssh /にデフォルトの2つのファイル「id_rsa」と「id_rsa.pub」が表示されますが、name_for_the_keyを指定すると、生成されたファイルは現在の作業ディレクトリに保存されます。

2.your_key.pubファイルをターゲットマシンに転送します。ssh-copy-id user_name@host_name

デフォルトのキーを作成しなかった場合、これは失敗する最初のステップです...次を使用する必要があります。

ssh-copy-id -i path/to/key_name.pub user_name@host_name

3.ロギングssh user_name@host_nameはデフォルトのid_rsaファイルに対してのみ機能するため、ここに2番目のトラップがあります。あなたがする必要がありますssh -i path/to/key_name user@host

ssh -v ...オプションを使用して、何が起こっているかを確認します。)

それでもサーバーがパスワードを要求する場合は、何かを与えました。パスフレーズを入力するには:キーを作成したとき(つまり、通常のことです)。

sshがデフォルトのポート22でリッスンしていない場合は、を使用する必要がありますssh -p port_nr

-サーバー-----

4.ファイル/etc/ ssh/sshd_configを次のように変更します

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  %h/.ssh/authorized_keys

(場合はコメント解除)

これにより、sshはファイルauthorized_keysを受け入れ、ユーザーのホームディレクトリで.ssh/authorized_keysファイルに書き込まれたkey_namestingを探すように指示されます。

5ターゲットマシンに権限を設定します

chmod 755 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

また、パス認証をオフにし、

passwordAuthentication no

すべてのsshroot/ admin /....@your_domain試行へのゲートを閉じます。

6.ルート以外のすべてのホームディレクトリの所有権とグループ所有権が適切であることを確認します。

chown -R ~ usernamehere
chgrp -R ~/.ssh/ user

===============================================

7.優れたhttp://www.fail2ban.orgを検討してください

8. MySQL(bind = 127.0.0.1)サーバーにアクセスするための追加 のSSHトンネル

于 2014-07-13T15:59:24.730 に答える
40

また、ホームディレクトリが他の人に書き込めないことを確認してください。

chmod g-w,o-w /home/USERNAME

この答えはここから盗まれます。

于 2014-03-06T13:36:55.100 に答える
15

必死になって、混乱した端末からファイルid_rsa.pubのテキストをコピーするために、 authorized_keysファイルに余分な改行がないことを確認することもできます。

于 2014-10-30T03:39:08.867 に答える
8

公開鍵を.ssh/authorized_keysにリストすることは必要ですが、sshd(サーバー)がそれを受け入れるには十分ではありません。秘密鍵がパスフレーズで保護されている場合は、毎回ssh(クライアント)にパスフレーズを与える必要があります。または、 ssh-agentまたは同等のGNOMEを使用できます。

更新されたトレースは、パスフレーズで保護された秘密鍵と一致しています。ssh-agentを参照するか、を使用してssh-keygen -pください。

于 2011-06-16T18:54:02.010 に答える
8

以下では、userはユーザー名です。

mkdir -p /home/user/.ssh
ssh-keygen -t rsa
touch /home/user/.ssh/authorized_keys
touch /home/user/.ssh/known_hosts
chown -R user:user /home/user/.ssh
chmod 700 /home/user/.ssh
chmod 600 /home/user/.ssh/id*
chmod 644 /home/user/.ssh/id*.pub
chmod 644 /home/user/.ssh/authorized_keys
chmod 644 /home/user/.ssh/known_hosts
于 2015-11-14T11:55:47.663 に答える
7

すべてのパーミッションに問題がないように見えても、SELinuxがこのエラーをトリガーする可能性があることに注意してください。それを無効にすることは私にとってトリックでした(それを無効にすることについての通常の免責事項を挿入してください)。

于 2013-10-18T09:39:49.177 に答える
6

/var/log/auth.logサーバー上のファイルでsshd認証エラーを調べます。

他のすべてが失敗した場合は、sshdサーバーをデバッグモードで実行します。

sudo /usr/sbin/sshd -ddd -p 2200

次に、クライアントから接続します。

ssh user@host -p 2200

私の場合、最後にエラーセクションがあります。

    debug1: userauth_pubkey: test whether pkalg/pkblob are acceptable for RSA SHA256:6bL+waAtghY5BOaY9i+pIX9wHJHvY4r/mOh2YaL9RvQ [preauth]
==> debug2: userauth_pubkey: disabled because of invalid user [preauth]
    debug2: userauth_pubkey: authenticated 0 pkalg ssh-rsa [preauth]
    debug3: userauth_finish: failure partial=0 next methods="publickey,password" [preauth]
    debug3: send packet: type 51 [preauth]
    debug3: receive packet: type 50 [preauth]

この情報を使用して、自分のsshd_configファイルがsshグループのメンバーへのログインを制限していることに気付きました。次のコマンドで、このアクセス許可エラーを修正しました。

sudo usermod -a -G ssh NEW_USER
于 2018-10-21T21:11:56.230 に答える
5

私のために働いた「ssh-add」を試してみてください。

于 2014-03-05T00:42:39.703 に答える
5

私にとって最終的にトリックをしたのは、所有者/グループルートではなく、ユーザーであることを確認することでした:

chown -R ~/.ssh/ user
chgrp -R ~/.ssh/ user
于 2014-11-08T09:37:55.557 に答える
4

コマンドラインでこれらを発行します。

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

これを行った後、ディレクトリが次のようになっていることを確認してください。

drwx------ 2 lab lab 4.0K Mar 13 08:33 .
drwx------ 8 lab lab 4.0K Mar 13 08:07 ..
-rw------- 1 lab lab  436 Mar 13 08:33 authorized_keys
-rw------- 1 lab lab 1.7K Mar 13 07:35 id_rsa
-rw-r--r-- 1 lab lab  413 Mar 13 07:35 id_rsa.pub
于 2014-03-13T08:42:19.827 に答える
3

覚えておくべきもう1つのヒント:v7.0以降、 OpenSSHは、継承の弱点のために、デフォルトでDSS /DSASSHキーを無効にします。したがって、OpenSSH v7.0 +を使用している場合は、キーがではないことを確認してくださいssh-dss

DSAキーで行き詰まっている場合は、次のような行sshd_config~/.ssh/configファイルを更新することにより、ローカルでサポートを再度有効にすることができます。PubkeyAcceptedKeyTypes=+ssh-dss

于 2016-04-29T12:04:12.320 に答える
3

注意しなければならないもう1つの問題:生成されたファイル名がデフォルトid_rsaではない場合id_rsa.pub

.ssh / configファイルを作成し、接続で使用するIDファイルを手動で定義する必要があります。

例はここにあります:

Host remote_host_name
    HostName 172.xx.xx.xx
    User my_user
    IdentityFile /home/my_user/.ssh/my_user_custom
于 2017-02-02T09:41:59.480 に答える
3

私の場合、authorized_keysファイルをに入れる必要がありました.openssh

この場所は/etc/ssh/sshd_config、オプションの下で指定されますAuthorizedKeysFile %h/.ssh/authorized_keys

于 2017-02-22T18:00:53.293 に答える
2

ターゲットユーザーにパスワードが設定されていることを確認してください。実行passwd usernameして設定します。これは、パスワードSSHログインが無効になっている場合でも必要でした。

于 2014-11-15T06:17:55.640 に答える
2

サーバー上のファイル/var/log/auth.logを確認するだけです。サーバーが攻撃者に多くの情報を提供する可能性は低いため、クライアント側で-vvを使用して追加の冗長性を設定しても効果はありません。

于 2018-01-19T16:19:33.377 に答える
1

以前の回答から発行sudo chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keysて、 Samba共有を機能させようとしているときにアクセス許可を台無しにしていたCentOS7ボックスの問題を修正しました。chmod go-w $HOME $HOME/.ssh

于 2015-05-01T00:53:12.590 に答える
1

許可の問題のようです。通常、一部のファイル/ディレクトリの権限が正しく設定されていない場合に発生します。ほとんどの場合、それらは~/.ssh~/.ssh/*です。私の場合、彼らは/home/xxxです。

sshdのログレベルを変更するには、ファイルを変更し/etc/ssh/sshd_config(を検索しLogLevel、に設定しDEBUGます)、ファイルの出力をチェックして、/var/log/auth.log正確に何が起こったかを確認します。

于 2015-05-08T01:09:59.390 に答える
1

これは私の問題を解決します:

ssh-agent bash

ssh-add
于 2015-06-21T14:57:57.503 に答える
1

私の問題は、/ etc / ssh/authorized_keysにデータを設定する自動化がまだ実行されていないときに変更されたAuthorizedKeysFileでした。

$sudo grep AuthorizedKeysFile /etc/ssh/sshd_config
#AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile  /etc/ssh/authorized_keys/%u
于 2016-03-28T19:07:21.680 に答える
1

authorized_keys公開鍵全体を;にコピーしたことを確認してください。キーが機能するにはssh rsaプレフィックスが必要です。

于 2018-01-09T08:15:46.193 に答える
1

ファイルのプロパティを確認する必要があります。

必要なプロパティを割り当てるには、次を使用します。

$ chmod 600 ~/.ssh/sshKey
$ chmod 644 ~/.ssh/sshKey.pub
于 2018-05-03T23:29:59.430 に答える
0

その点で、sshd構成に次の行があることを確認してください。

PermitRootLogin without-password

上記のように設定し、 sshd( )を再起動し/etc/init.d/sshd restartます。

ログアウトして、もう一度ログインしてみてください。

デフォルトは次のとおりです。

PermitRootLogin no
于 2015-02-03T09:59:15.937 に答える
0

私の場合、ユーザーのグループが構成ファイル/ etc / ssh/sshd_configのAllowGroupsに設定されていないためです。追加すると、すべて正常に動作します。

于 2016-01-26T06:39:19.100 に答える
0

非標準の場所にホームディレクトリがあり、sshdログには、すべてのアクセス許可が正常であったとしても、次の行があります(他の回答を参照)。

許可されたキーを開けませんでした'/data/home/user1/.ssh/authorized_keys':許可が拒否されました

私はここで解決策を見つけました:RHEL6.5へのssh公開鍵認証の問題

私の特定のケースでは:

  • に新しい行を追加しました/etc/selinux/targeted/contexts/files/file_contexts.homedirs

  • これは、通常のホームディレクトリの元の行です。

    /home/[^/]*/\.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0

  • これは私の新しい行です:

    /data/home/[^/]*/\.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0

  • restorecon -r /data/その後にaと再起動が続きsshdます。

于 2016-11-25T09:00:05.697 に答える
0

私はこの問題を抱えていましたが、もちろん他の答え正しかったのですが、他の答えはどれもそれを解決しませんでした。

私の場合、/rootディレクトリ自体(たとえば/root/.ssh)が間違った権限を持っていることがわかりました。必要だった:

chown root.root /root
chmod 700 /root

もちろん、それらの権限は(多分chmod 770)関係なくそのようなものでなければなりません。ただし、両方に正しい権限と所有者があったとしても、それは特に機能しsshdませんでした。/root/.ssh/root/.ssh/authorized_keys

于 2018-09-02T15:24:11.937 に答える
0

ログインユーザーのグループを別のユーザーに追加したときに、この問題が発生しました。

userAというSSHログインユーザーと非SSHログインユーザーuserBがいるとしましょう。userAにはグループuserAもあります。userBを変更して、グループuserAも作成しました。説明されている動作につながるため、userAはプロンプトなしでログインできませんでした。

グループuserAをuserBから削除した後、プロンプトなしのログインが再び機能しました。

于 2019-05-27T16:52:22.003 に答える
0

私はそれをこのように使用します。

cat ~/.ssh/id_rsa.pub| ssh user@remote-system 'umask 077; cat >>~/.ssh/authorized_keys'
于 2020-06-22T08:36:57.233 に答える
0

以前から同じ問題が発生していましたが、今日は1台の新しいサーバーをセットアップする必要がありました。今回学べたこと…

パスワードなしで認証を許可する基本的なプロセスは次のとおりです。

  1. サーバーで、ホームフォルダーにフォルダーがあるかどうかを検証し.sshます。存在しない場合は、mkdirコマンドを使用して手動で作成してから、で正しいアクセス許可を割り当てるchmodことができます。そうでない場合は、同じユーティリティを使用ssh-keygenして秘密鍵/公開鍵を作成できますが、ユーザーのサーバー上にあります。このプロセスにより、必要な.sshフォルダーが作成されます。

  2. ローカルマシンでは、ユーティリティを使用して秘密鍵/公開鍵も作成する必要がありssh-keygenます。

  3. 公開鍵をファイルに移動してサーバーに移動する必要があり.ssh/authorized_keysます。これを実現するには、ユーティリティを使用するか、およびコマンドssh-copy-idを使用して手動で実行できます。catscp

  4. 最良の場合、これにより、パスワードなしでサーバーに接続できるようになります。

さて、今日私が見つけた問題:最初にいくつかのキー生成アルゴリズムがあります:、、rsaそしてOpenSSHの多くのリリースがあります(ローカルマシンに1つのバージョンを、サーバーに古いバージョンを置くことができます):dsaecdsaed25519

ヒント:を使用ssh -vすると、サーバーに接続しているときに追加情報を確認できます。

OpenSSH_8.2p1 Ubuntu-4, OpenSSL 1.1.1f 31 Mar 2020

debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3

今日の私の場合のエラーは、サーバーにインストールされているバージョンのOpenSSHでサポートされていない「新しい」生成アルゴリズムでキーを使用しようとしたことでした。サポートされているアルゴリズムを確認したところ、サーバーがアルゴリズムを拒否しているという別のエラーが見つかりました。

debug1: Skipping ssh-dss key /home/user/.ssh/id_dsa - not in PubkeyAcceptedKeyTypes

その後、キーのアルゴリズムを変更する必要があり、サーバーに正常に接続できました。

OpenSSHリリースノート:リンク

于 2020-07-17T19:16:05.620 に答える