ssh-copy-idにもかかわらずsshがパスワードを要求する


28

リモートシェルでの使用とsshfsマウントのために、リモートサーバーで公開鍵認証をしばらく使用しています。sshfsディレクトリのumountを強制した後、sshがパスワードの入力を求め始めたことに気付きました。ローカルマシンに関する記述からリモートの.ssh / authorized_keysをパージし、リモートマシンへの参照からローカルマシンを削除しました。次にssh-copy-idを繰り返し、パスワードの入力を求められ、正常に戻りました。しかし、驚いたことに、リモートサーバーにsshするとき、パスワードの入力を求められます。私は問題が何であるかについて少し混乱しています、何か提案はありますか?


1
serverfault.com/questions/208181/...私がサイト間で重複のStackExchange政策が何であるかわからないんだけど、それは質問をクロス掲示することに役立つだろうと私には思えません。
ephemient

あなただけが書き込みできることを確認した場合~~/.sshおよび~/.ssh/authorized_keys、実行ssh -vvv server.example.comして出力を報告(あなたがしたい場合は、ホスト名とユーザ名を匿名)。サーバーにルートアクセスがある場合は、公開キーログインを試行したときに作成されたログエントリを確認します。
ジル 'SO-悪であるのをやめる'

回答:


32

sshdは、$ HOME、$ HOME / .ssh(両方のディレクトリ)、および$ HOME / .ssh / authorized_keysのパーミッションについて奇妙になります。

私のLinuxボックスの1つは、$ HOMEディレクトリに対するdrwxrwxrwxパーミッションで終わりました。Arch Linuxボックスは、$ HOMEディレクトリにあるグループの 'w'パーミッションを削除するまで、公開鍵を使用して絶対にログインしませんでした。

$ HOMEと$ HOME / .ssh /にグループやその他のアクセス許可を制限してみてください。それがsshdにそれをさせないかどうか見てください。


4
うん。ssh-copy-id権限の世話をしているはず~/.ssh~/.ssh/authorized_keys、また、あなたのホームディレクトリ自体はグループ書き込み可能でないことを確認してください。
ジル「SO-悪であるのをやめる」

7
私にとってはこれでした。ssh-copy-idを使用してRSAキーを送信しましたが、まだプロンプトが表示されていました。chmod g-w homedirリモートサーバーでの実行は魅力的なものでした。
ベンクリーガー

9

次の権限が必要です。

  • .sshフォルダ:700 (drwx------)
  • 公開鍵: 644 (-rw-r--r--)
  • 秘密鍵: 600 (-rw-------)

5

私も最近この問題を経験しました。

$HOMEディレクトリの権限を変更することで修正されました。ただし、単に実行chmod g-w ~/しても問題は修正されませんでした。さらにchmod g-w ~/、次のコマンドを実行othersして、$HOMEディレクトリのアクセス許可を変更する必要もありました。chmod o-wx ~/

一緒に:

chmod g-w ~/
chmod o-wx ~/

o-x必要かどうかはわかりませんが、予防策として単に実行しただけです。



0

並列ログインでも問題が発生しますか。つまり、sshセッションを開いている間にsshfsをマウントしようとした場合ですか。そうでない場合は、ホームディレクトリが暗号化されていると思いますか?この場合$HOME/.ssh/authorized_keys、最初のログイン後に(パスワードを使用して)リモートマシンでのみ使用可能になります。

チェックアウトhttps://help.ubuntu.com/community/SSH/OpenSSH/Keys#Troubleshooting説明し、必要な対応策については。


0

これをコメントとして投稿しますが、おそらく長すぎるでしょう。フォルダー内ssh-copy-id/.ssh場所から公開キーを送信しようとするものを追加したかっただけ$HOMEです。

ssh公開鍵を使用してルートとして(セキュリティ関連のコメントを保存)ssh-copy-idしようとしている場合、$HOME変数が/root(通常のユーザーのホームディレクトリに設定されているなど)以外に設定されていると、間違った公開鍵でログインしようとしている可能性があります)したがって、ルートの公開キーがリモートシステムにインストールされていないため、ルートユーザーにプロンプ​​トが表示されます。

次のワンライナーを使用して、正確な公開キーを指定できます。

pub="$(cat /root/.ssh/id_rsa.pub)"; ssh user@remotehost "echo $pub >> .ssh/authorized_keys; chmod 700 .ssh; chmod 600 .ssh/authorized_keys"

私はこのシナリオに何度か遭遇し(今朝を含む)、誰かが同じ状況に陥った場合に備えて、2セントを投入しようと考えました。


0

言及された他の貢献者のように、これはおそらく許可の問題です。

これを診断する最善の方法は、デバッグオプションをオンにしてリモートサーバーでSSHデーモンを再起動することです。通常は「-d」オプションです。OpenSSHデーモンのメッセージは非常に明確です。たとえば、次のようなメッセージが表示されます。

Authentication refused: bad ownership or modes for directory /some/path

そのメッセージを「非常に明示的」とは呼びません。探しているもの(所有権とアクセス許可が正しくない)を漠然と教えてくれますが、どのディレクトリまたはファイルをチェックするか、正しい設定を何にするべきかを教えてくれません。
Urhixidur

0

再起動後に公開キーが存続しなかったのは、サーバーのホームディレクトリが暗号化されていたためです。(サーバーのインストール中にこれを行います)


0

別の考えられる問題は、サーバーがキーアルゴリズムをサポートしていないことです。私の場合、sshdログに次のメッセージが見つかりました(/var/log/auth.log私の場合)。

userauth_pubkey: unsupported public key algorithm: ssh-ed25519 [preauth]

その場合は、sshd構成でそのアルゴリズムのサポートを有効にする必要があります(最新sshdバージョンへの更新が必要になる場合があります)、またはsshd接続しようとしているものがサポートするアルゴリズムにキーを切り替える必要があります。


0

この動作をグーグルで検索すると、最初の検索結果にこの質問が表示されるため、ソリューションも追加します。

私の場合、許可に関連するものは何もありませんでした。sshコマンドを実行するときに、何らかの理由で(実際に簡単な修正を見つけたので、その理由をわざわざ調べる必要はありませんでした)、プログラムは正しいIDファイルを探しませんでした。1つの解決策は、SSHプログラムが使用しようとしたSSHキーをリモートサーバーに手動で追加することでした。コマンドに-vを追加すると、コマンドを実行するときにSSHプログラムが何を行うかを観察できます。

ssh -v username@your-host-ip-or-domain 

次に、SSHプログラムがMacでIDファイル/秘密鍵を見つけようとする公開鍵をローカルマシンで取得します。

cat ~/.ssh/id_rsa.pub

...そして、次のリモートのauthorized_keysファイルに追加します。

~/.ssh/authorized_keys

別の、私の場合のより良い解決策は、ローカルssh構成ファイルにカスタムホストを追加することでした。私のMacでは次のとおりです。

/Users/my-user-name/.ssh/config

ここでは、たとえば次のようなものを追加できます。

Host mynewserver
        HostName some.IP.number.or.domain
        Port 20000 #if custom port is used and not the default 22
        User the_root
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa_for_my_new_server

次に、実行する必要があります:

ssh mynewserver

...そしてVoilà

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.