sshキーを削除する方法は?


154

現在、古いSSHキーをサーバーにアップロードしています。問題は、~/.sshディレクトリを失ったことです(オリジナルid_rsaid_rsa.pubファイルを含む)。

したがって、古いSSHキーをサーバーから直接削除して、新しいSSHキーをアップロードしたいと思います。

私は成功せずに次のコマンドを試しました:

$> ssh-add -D

ここに画像の説明を入力してください

SSHキーを完全に削除する方法はありますか?


何でssh-add -d
user2196728 2014

5
damnit、ssh-add -D、大文字
Alexander Mills

ssh-agent(1)が使用しているソケットを確認してください。
ドワイトスペンサー

回答:


129

キーを削除しssh-add -d/-D ないことに関する少なくとも2つのバグレポートがあることに注意してください。

正確な問題は次のとおりです。

ssh-add -d/-D手動で追加されたキーのみをgnome-keyringから削除します。
自動的に追加されたキーを削除する方法はありません。
これは元のバグであり、まだ確実に存在しています。

したがって、たとえば、2つの異なるGitHubアカウントに関連付けられた2つの異なる自動ロードされたssh IDがある場合(たとえば、仕事用と自宅用)、それらを切り替える方法はありません。GitHubは最初に一致するものを取得するため、GitHubの「ホーム」ユーザーとして常に表示され、プロジェクトに作業をアップロードする方法はありません。

自動ロードされたキーssh-add -dに適用することを許可する(および自動ロードされたキーssh-add -t Xの有効期間を変更する)と、ほとんどのユーザーが期待する動作が復元されます。


より正確には、問題について:

犯人はgpg-keyring-daemon

  • これは、ssh-agentの通常の操作を覆します。これは、暗号化されたsshキーのパスフレーズを入力できる美しいボックスをポップアップできるようにするためです。
  • そして、それはあなたの.sshディレクトリを歩き回り、あなたが見つけたキーをあなたのエージェントに自動的に追加します。
  • そして、それらのキーを削除することはできません。

これをどのように嫌うのですか?方法を数えましょう-人生は短すぎます。

新しいsshクライアントはホストに接続するときにssh-agentのすべてのキーを自動的に試行するため、失敗はさらに複雑になります。
数が多すぎると、サーバーは接続を拒否します。
そして、gnome-keyring-daemonがssh-agentに持たせたいキーの数を決定し、それらを自動ロードして、それらを削除させないので、トーストします。

このバグは、Ubuntu 14.04.4でも確認されており、最近では2日前(2014年8月21日)です。


可能な回避策:

  • 実行しssh-add -D、すべての削除するには、手動で追加のキーを。これは自動的に追加されたキーもロックしますがgnome-keyring、を実行しようとするとロックを解除するように求められるため、あまり使用されませんgit push
  • 移動あなたの~/.sshフォルダと、バックアップと呼ばれる別のフォルダにして識別したいものを除くすべてのキーファイルを移動します。必要に応じて、タツノオトシゴを開き、そこからキーを削除することもできます。
  • これでgit push問題なく実行できるはずです。

別の回避策:

本当にやりたいことは、gpg-keyring-daemon完全にオフにすることです。
に移動しSystem --> Preferences --> Startup Applications、「SSH Key Agent (Gnome Keyring SSH Agent)」ボックスの選択を解除します。これを見つけるには、下にスクロールする必要があります。

あなたはまだを取得しますが、ssh-agent今だけそれは正常に動作します:オートロードされたキーはありません。ssh-addを実行してそれらを追加します。キーを削除したい場合は、それが可能です。想像してみろ。

このコメントは実際に示唆しています:

解決策は、gnome-keyring-manager起動を継続しないことです。これは、プログラムファイルの実行権限を削除することによって最終的に達成されたため、奇妙に困難でした。


ライアンルー、コメントに別の興味深いコーナーケースを追加しています

これが誰かに役立つ場合:私はid_rsaid_rsa.pubファイルを完全に削除しようとしても、キーはまだ表示されていました。

gpg-agentそれらを~/.gnupg/sshcontrolファイルにキャッシュしていたこと判明しました。そこから手動で削除する必要がありました。

それはケースで追加された、ここのようにkeygrip


1
Ubuntu 14-16のもう1つのオプションは、GUIの「パスワードとキー」を使用することです(sshで検索して検索できます)。OpenSSキーなどを選択し、キーを右クリックして[削除]を選択します。削除されたことを確認するには、システムを再起動する必要があります。
user3257693 2016年

2
なぜこの情報ssh-agentssh-add選択した回答に関する情報があるのですか?元のポスターは彼が望んでいると述べましたremove the old SSH key directly on the server and upload a new one。それは彼が~/.ssh/authorized_keysリモートホストで編集したいようです。
H2ONaCl 2017年

1
この回答により、SSH転送が有効になっているときに発生する問題を解決することができました。Ubuntu 16.04マシンからすべてのssh資格情報が転送されるdebianシステムに移行する場合git clone、Ubuntuボックスの設定ファイルのバージョンではなく、チェーンの最初のキーを使用していました。悪いキーは自動的に吸い込まれ、Debianボックスに転送されていました。
redfive 2017

1
これは後部の本当の痛みです。私は会社のプロジェクトに取り組んでおり、別の会社の下で働くように契約しています。これは、両方の管理に無駄な時間を追加するだけです。すぐに修正されることを願っています!
joshlsullivan

1
これが誰かに役立つ場合:私はid_rsaid_rsa.pubファイルを完全に削除しようとしても、キーはまだ表示されていました。gpg-agentがそれらを~/.gnupg/sshcontrolファイルにキャッシュしていたことが判明しました。そこから手動で削除する必要がありました。
Ryan Lue

10

ssh関連の操作を実行しようとすると、次のエラーが発生します。

$ git fetch
no such identity: <ssh key path>: No such file or directory

以下を使用して、sshエージェントから欠落しているsshキーを削除できます。

$ eval `ssh-agent -s`  # start ssh agent
$ ssh-add -D <ssh key path>  # delete ssh key

9

私が誤解していない限り.ssh、ローカルマシン上の秘密鍵を含むディレクトリを失ったため、サーバー上にあり、キーベースのログインを許可した公開鍵を削除したいと考えています。その場合、.ssh/authorized_keysサーバーのホームディレクトリにあるファイルに保存されます。このファイルをテキストエディタで編集し、特定できる場合は関連する行を削除できます(エントリが1つだけの場合はさらに簡単です)。キーがサーバーへの唯一のアクセス方法ではなく、ログインしてファイルを編集する他の方法があることを願っています。新しい公開鍵を手動でauthorised_keysファイルに追加するか、を使用できますssh-copy-id。どちらの方法でもauthorized_keys、サーバー上のファイルにアクセスするには、サーバー上のアカウントにパスワード認証を設定するか、その他のIDまたはアクセス方法が必要です。

ssh-addは、ローカルでIDの管理を処理するsshエージェントにIDを追加し、「エージェントへの接続はSSHリモートログインを介して転送されるため、ユーザーはIDによって付与された権限をネットワーク内のどこにでも安全に使用できます。」(manページ)なので、この場合はあなたが望むものではないと思います。私の知る限り、sshログインを介してサーバーにアクセスしなければ、サーバーに公開鍵を取得することはできません。


このファイルを削除しても接続できます。したがって、ここには含まれていません...自動的に追加されたキーですが、まだどこにも存在していません。
ラリー

5

Unityで「パスワードとキー」アプリケーションを開き、セキュアキー -> OpenSSHキーから不要なキーを 削除しました。また、ssh-agent -lからも自動的に削除されました。


2
これによりディレクトリからも削除されることに注意してください~/.ssh
Peter V.MørchDec

1

このバグがUbuntu 19.04にも存在することを確認できます。@VonCによって提案された回避策は完全に機能し、私のバージョンを要約すると:

  • 左上の[アクティビティ]タブをクリックします
  • 表示される検索ボックスで、「スタートアップアプリケーション」と入力し始めます
  • 「起動アプリケーション」アイコンをクリックします
  • ポップアップするボックスで、gnomeキーリングマネージャーアプリケーションを選択し(GUIでは正確な名前を思い出せませんが、十分に区別できます)、それを削除します。

私は次のやったことは試してみましたssh-add -D再び、そして再起動後にssh-add -l私に言った、エージェントが何のアイデンティティを持っていません。私はまだでssh-agentデーモンを実行していることを確認しましたps aux | grep agent。そこで、GitHub(ssh-add ~/.ssh/id_ecdsa)で最も頻繁に使用するキーを追加しました。

これで、最も頻繁に使用するリポジトリを使用して通常の操作を行うことができます。RSAキーを使用する他のリポジトリへのアクセスが必要な場合は、1つのターミナルをで専用に割り当てますexport GIT_SSH_COMMAND="ssh -i /home/me/.ssh/id_rsa.pub"。解決しました!バグと解決策を指摘してくれたクレジットは@VonCに送られます。


1

システムで.sshキーを確認するかどうか

  1. フォルダに移動-> /Users/administrator/.ssh/id_ed25519.pub

そうでない場合

  1. ターミナルを開きます。

ターミナルでの過去

  1. ユーザーをチェック-> ssh -T git@gitlab.com

既存の.sshキーを削除

  1. 既存の.sshキーを削除-> rm〜/ .ssh / github_rsa.pub

新しく作る

  1. 新しい.sshキーを作成-> ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

  2. 公開鍵は「/Users/administrator/.ssh/id_ed25519.pub」に保存されています。

  3. 公開鍵の保存済みパスを開きます。
  4. .sshキーをコピー -> GitLabアカウント->設定-> SSHキー->キーを追加
  5. 端末からもう一度テストします-> ssh -T git@gitlab.com

0

私(OpenSuse Leap 42.3、KDE)の解決策は、~/.gnupg明らかにキャッシュされたキーとプロファイルを含むフォルダーの名前を変更することでした。KDEのログアウト/ログオン後、ssh-add / agentが再び実行され、フォルダーが最初から作成されますが、古いキーはすべてなくなります。

他のアプローチでは成功しませんでした。

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