use*_*743 121 git ssh git-svn ssh-keys ssh-keygen
我目前在服务器上上传了一个旧的SSH密钥.问题是我丢失了我的~/.ssh
目录(原始文件id_rsa
和id_rsa.pub
文件).
因此,我想直接在服务器上删除旧的SSH密钥并上传新的密钥.
我尝试了以下命令但没有成功:
$> ssh-add -D
Run Code Online (Sandbox Code Playgroud)
有没有办法完全删除SSH密钥?
Von*_*onC 107
请注意,至少有两个错误报告ssh-add -d/-D
没有删除密钥:
ssh-add -D
不从gnome-keyring-daemon
内存中删除SSH密钥 "ssh-add -D
删除所有身份不起作用.此外,为什么所有身份都会自动添加? "确切的问题是:
ssh-add -d/-D
仅从gnome-keyring中删除手动添加的密钥.
无法删除自动添加的密钥.
这是最初的错误,它仍然存在.因此,例如,如果您有两个不同的自动加载的ssh身份与两个不同的GitHub帐户相关联 - 比如工作和家庭 - 那么就无法在它们之间切换.GitHubtakes匹配的第一个,所以你总是作为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中得到确认,就在两天前(2014年8月21日)
可能的解决方法:
- 难道
ssh-add -D
要删除所有手动添加键.这也锁定了自动添加的键,但没有多大用处,因为gnome-keyring
当你尝试做时,它会要求你解锁它们git push
.- 导航到您的
~/.ssh
文件夹,将除您要识别的密钥文件之外的所有密钥文件移动到名为backup的单独文件夹中.如有必要,您也可以打开海马并从那里删除密钥.- 现在你应该
git push
没有问题了.
另一种解决方法:
你真正想做的就是
gpg-keyring-daemon
完全关闭.
转到System --> Preferences --> Startup Applications
,取消选中"SSH Key Agent (Gnome Keyring SSH Agent)
"框 - 您需要向下滚动才能找到它.你仍然会得到一个
ssh-agent
,只是现在它会表现得很明智:没有密钥自动加载,你运行ssh-add来添加它们,如果你想删除密钥,你可以.设想.
这条评论实际上表明:
解决方案是
gnome-keyring-manager
永远不要启动,这最终通过删除程序文件的执行权限实现了奇怪的困难.
Jig*_*sar 25
在删除身份之前您需要先使用ssh-agent
此命令
eval `ssh-agent -s`
Run Code Online (Sandbox Code Playgroud)
删除所有身份
ssh-add -D
Run Code Online (Sandbox Code Playgroud)
删除特定身份
ssh-add -d ~/.ssh/sshkeynamewithout.pub
Run Code Online (Sandbox Code Playgroud)
对于使用此命令查找可用标识的列表
ssh-add -l
Run Code Online (Sandbox Code Playgroud)
如果您尝试执行与ssh相关的操作并收到以下错误:
$ git fetch
no such identity: <ssh key path>: No such file or directory
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法从ssh代理中删除丢失的ssh密钥:
$ eval `ssh-agent -s` # start ssh agent
$ ssh-add -D <ssh key path> # delete ssh key
Run Code Online (Sandbox Code Playgroud)
除非我误解,否则.ssh
您在本地计算机上丢失了包含私钥的目录,因此您希望删除服务器上的公钥,并允许基于密钥的登录.在这种情况下,它将存储在.ssh/authorized_keys
服务器上主目录的文件中.您可以使用文本编辑器编辑此文件,如果可以识别它,则删除相关行(如果它是唯一的条目,则更容易!).我希望密钥不是您访问服务器的唯一方法,并且您还有其他一种登录和编辑文件的方法.您可以手动将新公钥添加到authorised_keys
文件或使用ssh-copy-id
.无论哪种方式,您都需要在服务器上为您的帐户设置密码身份验证,或者使用其他身份或访问方法来访问authorized_keys
服务器上的文件.
ssh-add
将身份添加到您的ssh代理,该代理在本地处理您的身份管理,并且"通过SSH远程登录转发与代理的连接,因此用户可以安全地使用网络中任何位置的身份提供的权限." (手册页),所以我认为这不是你想要的.据我所知,如果没有您通过ssh登录访问所述服务器,它无法将您的公钥发送到服务器上.
检查文件夹.ssh是否在您的系统上
如果没有,那么
在终端粘贴
删除现有的 SSH 密钥
rm ~/.ssh/github_rsa.pub
创建新的
创建新的 SSH 密钥? ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
公钥已保存在“/Users/administrator/.ssh/id_ed25519.pub”中。
打开公钥保存路径。
复制 SSH 密钥?亚搏体育app帐户?环境 ?SSH 密钥?添加密钥
从终端再次测试?ssh -T git@gitlab.com
我在Unity中打开了“密码和密钥”应用程序,并从安全密钥 -> OpenSSH密钥中删除了不需要的密钥, 并且它们也自动从ssh-agent -l中删除。
归档时间: |
|
查看次数: |
297074 次 |
最近记录: |