〜/.ssh/authorized_keysに公開キーを追加すると、自動的にログインしません
-
28-10-2019 - |
質問
authorized_keysファイルにpublic sshキーを追加しました。 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>
次に、上記のログの後にPassPhaseを要求します。パスワードなしでログインしないのはなぜですか?
解決
の許可を確認する必要があります authorized_keys
ファイルとそれが配置されているフォルダー /親フォルダー。
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
詳細については、参照してください このページ.
また、グループなどの書き込みアクセスを削除するには、ホームディレクトリの権限を変更/検証する必要があります。
chmod go-w ~
他のヒント
Selinuxは、承認された_Keysを機能させない可能性があります。特にCentos 6および7のRootの場合は、それを無効にする必要はありません。許可が正しいことを確認したら、これを修正できます。
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
restorecon -R -v /root/.ssh
設定 ssh authorized_keys シンプルのようですが、私が把握しようとしているいくつかのトラップを隠しています
- サーバー -
の /etc/ssh/sshd_config 設定 passwordAuthentication yes
サーバーにパスワード認証を一時的に受け入れるようにします
- クライアント -
検討 Cygwin Linuxエミュレーションとして、OpenSSHをインストールして実行します
1. プライベートキーとパブリックキー(クライアント側)を生成する# ssh-keygen
ここで押すだけで入ります デフォルト2つのファイル」ID_RSA" と "id_rsa.pub" の 〜/.ssh/ しかし、あなたが与えるなら name_for_the_key 生成されたファイルはあなたに保存されます PWD
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 ... 何が起こっているかを見るためのオプション)
もしも サーバーは引き続きパスワードを要求します それからあなたはSMTHを与えました。に PassPhraseを入力してください: キーを作成したとき(それが正常です)
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_name stingのユーザーホームディレクトリを見るように指示します
5 ターゲットマシンにアクセス許可を設定します
chmod 755 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
また、Pass Authをオフにします
passwordAuthentication no
すべてのsshルート/admin /..../ your_domainの試行にゲートを閉じる
6 すべての非ルートホームディレクトリの所有権とグループの所有権が適切であることを確認してください。
chown -R ~ usernamehere
chgrp -R ~/.ssh/ user
===============================================
7. 卓越したを考えてみましょう http://www.fail2ban.org
8. 追加SSHトンネル mysqlにアクセスするには(bind = 127.0.0.1)sever
必死の人は、混乱した端末からID_RSA.PUBテキストをコピーしているため、authorized_keysファイルに追加の新しいラインがないことを確認する場合があります。
.ssh/authorized_keysに公開キーをリストすることは必要ですが、SSHD(サーバー)がそれを受け入れるのに十分ではありません。秘密鍵がPassPhraseで保護されている場合、毎回SSH(クライアント)にパスフレーズを与える必要があります。または、SSH-Agent、またはGNOME同等物を使用することもできます。
更新されたトレースは、パスフレーズで保護された秘密鍵と一致しています。 SSH-Agent、またはSSH-KeyGen -Pを参照してください。
すべてのアクセス許可が問題ないように見える場合でも、Selinuxもこのエラーをトリガーできることに注意してください。それを無効にすると、私のためにトリックがありました(それを無効にすることについての通常の免責事項を挿入します)。
ユーザーはユーザー名です
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
私のためにトリックをしたことは、ついに オーナー/グループ ルートではなくユーザーでした:
chown -R ~/.ssh/ user
chgrp -R ~/.ssh/ user
書き込みコマンド:
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
私のために働いた「SSH-ADD」を試してみてください。
覚えておくべき別のヒント。 v7.0 openssh以来 無効にします DSS/DSA SSHキーは、継承の弱さのためにデフォルトでキーします。したがって、openssh v7.0+がある場合は、キーがないことを確認してください ssh-dss
.
DSAキーにこだわっている場合、あなたのサポートをローカルで再び可能にすることができます
sshd_config
と~/.ssh/config
そのような行を持つファイル:PubkeyAcceptedKeyTypes=+ssh-dss
私の場合、私は私を置く必要がありました authorized_keys
file in .openssh
.
この場所はで指定されています /etc/ssh/sshd_config
オプションの下 AuthorizedKeysFile %h/.ssh/authorized_keys
.
ターゲットユーザーにパスワードセットがあることを確認してください。走る passwd username
1つを設定します。パスワードSSHログインが無効になった場合でも、これは私に必要でした。
これは私の問題を解決します
ssh-agent bash
ssh-add
注意しなければならない別の問題。生成されたファイルがデフォルトでない場合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.pub
私は発行しました sudo chmod 700 ~/.ssh
と chmod 600 ~/.ssh/authorized_keys
と chmod go-w $HOME $HOME/.ssh
上から、Sambaの株式を機能させようとしている間に許可を台無しにしたCentos7ボックスに問題を修正しました。ありがとう
許可の問題のようです。通常、何らかのファイル/ディレクトリの許可が正しく設定されていない場合に発生します。ほとんどの場合、それらはそうです ~/.ssh
と ~/.ssh/*
. 。私の場合、彼らはそうです /home/xxx
.
SSHDのログレベルを変更することで変更できます /etc/ssh/sshd_config
(探す LogLevel
, 、それを設定します DEBUG
)、出力を確認します /var/log/auth.log
何が起こったのかを正確に見るために。
私の問題は、/etc/ets/ssh/authorized_keysを埋める自動化がまだ実行されていない場合の変更された承認キーファイルでした。
$sudo grep AuthorizedKeysFile /etc/ssh/sshd_config
#AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile /etc/ssh/authorized_keys/%u
見てください /var/log/auth.log に サーバ. 。追加の冗長性を設定します -vv クライアント側では、サーバーが攻撃者にあまりにも多くの情報を提供する可能性は低いため、役に立ちません。
公開キー全体をコピーしていることを確認してください authorized_keys
; ssh rsa
キーが機能するには、プレフィックスが必要です。
ファイルのプロパティを確認する必要があります。必要なプロパティを割り当てるには:
$ chmod 600 ~/.ssh/sshKey
$ chmod 644 ~/.ssh/sshKey.pub
そのメモでは、sshd configがあることを確認してください - ;
PermitRootLogin without-password
上記のように設定してから、sshd(/etc/init.d/sshd restart)を再起動します
ログアウトして、もう一度ログインしてみてください!
デフォルトは - ;
PermitRootLogin no
私の場合、それはユーザーのグループがconfig file/etc/ssh/sshd_configの許可グループに設定されていないためです。追加した後、すべてが正常に機能します。
私は標準以外の場所とでホームディレクトリを持っています sshd
ログ私はこの行を持っています:
Could not open authorized keys '/data/home/user1/.ssh/authorized_keys': Permission denied
たとえすべての許可が問題なくても(他の回答を参照)。
ここで解決策を見つけました: http://arstechnica.com/civis/viewtopic.php?p=25813191&sid=0876f069EC2AA5FDCD691A2E2E7242C2#P25813191
私の特定の場合:
に新しいラインを追加しました
/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
続いてa
restorecon -r /data/
そしてasshd
再起動
私はこの問題を抱えていました、そして他の答えはそれを解決しませんでしたが、もちろん他の答えは それは 正しい。
私の場合、それが判明しました /root
ディレクトリ自体(例:ではありません /root/.ssh
)間違った権限がありました。必要だった:
chown root.root /root
chmod 700 /root
もちろん、それらの許可はそのようなものでなければなりません(多分 chmod 770
) 関係なく。ただし、特に防止されました sshd
でも、仕事から /root/.ssh
と /root/.ssh/authorized_keys
どちらにも正しい許可と所有者がいました。
見る /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
ログインユーザーのグループを別のユーザーに追加したとき、この問題が発生しました。 useraと呼ばれるSSH-Loginユーザーと非SSH-LoginユーザーユーザーBがいるとしましょう。 useraにはグループユーザーもあります。 userbを変更して、Group useraも持っています。 useraがプロンプトなしでログインすることができなかったため、説明されている動作につながりました。 userbからグループuseraを削除した後、プロンプトのないログインが再び機能しました。