現在、古いSSHキーをサーバーにアップロードしています。問題は、~/.ssh
ディレクトリを失ったことです(オリジナルid_rsa
とid_rsa.pub
ファイルを含む)。
したがって、古いSSHキーをサーバーから直接削除して、新しいSSHキーをアップロードしたいと思います。
私は成功せずに次のコマンドを試しました:
$> ssh-add -D
SSHキーを完全に削除する方法はありますか?
現在、古いSSHキーをサーバーにアップロードしています。問題は、~/.ssh
ディレクトリを失ったことです(オリジナルid_rsa
とid_rsa.pub
ファイルを含む)。
したがって、古いSSHキーをサーバーから直接削除して、新しいSSHキーをアップロードしたいと思います。
私は成功せずに次のコマンドを試しました:
$> ssh-add -D
SSHキーを完全に削除する方法はありますか?
回答:
キーを削除しssh-add -d/-D
ないことに関する少なくとも2つのバグレポートがあることに注意してください。
ssh-add -D
からSSHキーが削除されないgnome-keyring-daemon
"ssh-add -D
すべてのIDを削除しても機能しません。また、なぜすべてのIDが自動的に追加されるのですか?」正確な問題は次のとおりです。
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_rsa
とid_rsa.pub
ファイルを完全に削除しようとしても、キーはまだ表示されていました。
gpg-agent
それらを~/.gnupg/sshcontrol
ファイルにキャッシュしていたことが判明しました。そこから手動で削除する必要がありました。
ssh-agent
とssh-add
選択した回答に関する情報があるのですか?元のポスターは彼が望んでいると述べましたremove the old SSH key directly on the server and upload a new one
。それは彼が~/.ssh/authorized_keys
リモートホストで編集したいようです。
git clone
、Ubuntuボックスの設定ファイルのバージョンではなく、チェーンの最初のキーを使用していました。悪いキーは自動的に吸い込まれ、Debianボックスに転送されていました。
id_rsa
とid_rsa.pub
ファイルを完全に削除しようとしても、キーはまだ表示されていました。gpg-agentがそれらを~/.gnupg/sshcontrol
ファイルにキャッシュしていたことが判明しました。そこから手動で削除する必要がありました。
私が誤解していない限り.ssh
、ローカルマシン上の秘密鍵を含むディレクトリを失ったため、サーバー上にあり、キーベースのログインを許可した公開鍵を削除したいと考えています。その場合、.ssh/authorized_keys
サーバーのホームディレクトリにあるファイルに保存されます。このファイルをテキストエディタで編集し、特定できる場合は関連する行を削除できます(エントリが1つだけの場合はさらに簡単です)。キーがサーバーへの唯一のアクセス方法ではなく、ログインしてファイルを編集する他の方法があることを願っています。新しい公開鍵を手動でauthorised_keys
ファイルに追加するか、を使用できますssh-copy-id
。どちらの方法でもauthorized_keys
、サーバー上のファイルにアクセスするには、サーバー上のアカウントにパスワード認証を設定するか、その他のIDまたはアクセス方法が必要です。
ssh-add
は、ローカルでIDの管理を処理するsshエージェントにIDを追加し、「エージェントへの接続はSSHリモートログインを介して転送されるため、ユーザーはIDによって付与された権限をネットワーク内のどこにでも安全に使用できます。」(manページ)なので、この場合はあなたが望むものではないと思います。私の知る限り、sshログインを介してサーバーにアクセスしなければ、サーバーに公開鍵を取得することはできません。
Unityで「パスワードとキー」アプリケーションを開き、セキュアキー -> OpenSSHキーから不要なキーを 削除しました。また、ssh-agent -lからも自動的に削除されました。
~/.ssh
このバグがUbuntu 19.04にも存在することを確認できます。@VonCによって提案された回避策は完全に機能し、私のバージョンを要約すると:
私は次のやったことは試してみました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に送られます。
システムで.sshキーを確認するかどうか
そうでない場合
ターミナルでの過去
既存の.sshキーを削除
新しく作る
新しい.sshキーを作成-> ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
公開鍵は「/Users/administrator/.ssh/id_ed25519.pub」に保存されています。
ssh-add -d
?