我的帐户中有 github.com 上的 ssh 密钥。现在我重新安装了操作系统,如何从 github 检索旧的 ssh 密钥并将其放入/home/user/.ssh/id_rsa?
谢谢你。
对于工作,我通过 SSH 连接到服务器。我已经几个月没有这样做了,所以现在要求我输入密码的地方发生了一些变化。以前,经过身份验证后它会起作用。这是我通常写入 ssh 的内容:ssh -p2222 username@123.12.123.123
我查看了调试信息,它表明服务器甚至没有要求提供适当的密钥文件。相反,它首先提供一个我删除的公钥 (id_rsa)..然后它变成了私钥......然后它要求输入一个我不需要的密码。
debug1: Found key in /Users/myname/.ssh/known_hosts:40
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/myname/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Trying private key: /Users/myname/.ssh/id_rsa
debug1: Trying private key: /Users/myname/.ssh/id_dsa
debug1: Next authentication method: password
Run Code Online (Sandbox Code Playgroud)
但是,当我指定身份文件时,它可以工作:ssh …
我是一个私人 Github 存储库(由其他人拥有)的合作者,虽然我在我自己的 GitHub 帐户中添加了一个 SSH 密钥,它允许我在访问我自己的存储库时进行身份验证,但它总是要求我输入密码尝试访问我只是合作者的存储库。
您知道为什么它不使用我的 SSH 密钥对我进行身份验证吗?
我试图将我的密钥作为“部署密钥”添加到共享存储库本身,但 GitHub 总是拒绝我的提交,并显示错误消息“密钥已在使用中。”。
我的遥控器如下所示:
$ git remote -v
origin https://example-user@github.com/example-owner/example-project.git (fetch)
origin https://example-user@github.com/example-owner/example-project.git (push)
Run Code Online (Sandbox Code Playgroud) puttygen.exe有一个很好的简单界面,用于生成公钥和私钥对。下面是生成的SSH-2 RSA公钥的示例,我在保存时填写了注释字段:
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20171211"
AAAAB3NzaC1yc2EAAAABJQAAAQEAijhKs074/PGGNhGbrgBTF6E/OrAd/pQSP68m
+fVbiho8AAl2z88F7x5VM0AOg7m5ZHVBc5PAjArXcZPVy2bh5xk488zGcnavvy1y
sFqiXGWb99Mp4xPRZ1E/qQD7gQjeRLCKUjQFAoH+jEuBpOWTrlmakeiVA8v9EmdX
6Kgi2SIA1nKAuZ+mBldPMAAisqFzUA2A2208LLc+U+FHRcnrTyNedDRLZOyfXaEt
1QeXoMA0wa3/UeLv5lTvWHVrQJtGOlwQdOrhfyrARIPY3IozcQ==
---- END SSH2 PUBLIC KEY ----
Run Code Online (Sandbox Code Playgroud)
然而,我在阅读OpenBSD时注意到,虽然允许使用注释#字段(第二行),但注释应该在行首进行。所以我实际上有几个问题:
我计划通过bitbucket 界面添加类似的密钥(步骤 2),所以我是否需要删除第一行和最后一行,或者至少添加一个#来注释它们?
OpenBSD 密钥示例在ssh-rsa密钥行的开头有,我是否也需要添加这些单词?
连接到同一主机时,我需要使用两个不同的 ssh 密钥。
我需要用来连接的机器(因为IP地址限制)不是存储ssh密钥的机器,所以我在这里使用ssh-agent。此外,这些 ssh 连接是在中间计算机上运行的脚本的控制下发生的。
如果 ssh 密钥位于该计算机的本地,我想我可以使用 ssh -i (或者可能是嵌套代理中的 ssh-add )来指定我想要使用的身份,并且我可以将脚本和/或脚本上下文更新为为我的案例做正确的事情(可能使用配置文件来指定相关详细信息)。
但是,由于密钥不在执行 ssh 连接的计算机上,因此 ssh -i 失败(该计算机上不存在私钥文件)。同样,ssh-add 希望我通过提供私钥的文件名来指定密钥。(或者我怀疑情况确实如此 - 我实际上还没有弄清楚如何嵌套 ssh-agents,但 ssh-add 上的文档怀疑这是否是一种可行的方法。)
所以我的问题是:如何让 ssh 在与目标系统联系时仅使用我指定的密钥?
[当然,其他人也需要使用这些脚本,但这是我自己使用后可以解决的问题。]
换句话说,我有这样的情况:
$ ssh-add -l
2048 SHA256:A8PFww3boSTRe8sPvXDgir09KNVqu+JvWNw7/GLCiwM /home/account/.ssh/key1.pem (RSA)
2048 SHA256:Em5p4B++GIm0l/zDYgZ26VaHbIb07T6MViu5ioMPTiA /home/account/.ssh/key2_rsa (RSA)
4096 SHA256:JON2JaTTk1r3ufUrGm4C/cE9IG9edyfDxE1zTel/0u8 /home/account/.ssh/key3_rsa (RSA)
Run Code Online (Sandbox Code Playgroud)
在一种情况下,我需要 ssh 来使用 key2_rsa,而在另一种情况下,我需要 ssh 来使用 key3_rsa
此处使用错误的密钥会导致与目标系统的连接失败(因为它将另一个密钥识别为有权访问计算机,但无权访问该子系统)。
我该如何进行这项工作?
我有一个设备接受以下 SSH 连接交换算法:
curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group14-sha256,kexguess2@matt.ucc.asn.au
我下载了最新版本的Putty,它说它支持:diffie-hellman组交换、diffie-hellman组14、diffie-hellman组1和基于RSA的密钥交换。
我想它应该可以工作,因为在两种配置中我都看到 diffie-hellman 组 14。但是,当我尝试连接到设备时,我收到错误:
Couldn't agree on a key exchange algorithm (available: curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group14-sha256,kexguess2@matt.ucc.asn.au)
Run Code Online (Sandbox Code Playgroud) 我用puttygen生成了Ed25519密钥对,并将私钥保存在我的计算机上。
当我尝试用它进行身份验证时,我得到
Unable to load private key file "my_private_key.ppk" (file format error)
Run Code Online (Sandbox Code Playgroud)
我检查了一下,它确实是一个私钥文件,文件格式应该是正确的,因为它是由 puttygen 生成的。
有什么想法如何解决它吗?
当我使用 ssh 从 Linux 桌面计算机连接到 MacOS 笔记本电脑时,我的公钥被拒绝。我可以使用密码进行连接。
我看过几个与此类似的问题(例如522652、1335103和471753),但没有一个提供我尚未尝试过的适用解决方案。
通常在这一点上我会怀疑我的代理中没有密钥或者文件.ssh/authorized_keys不正确。
从 Mac 笔记本电脑(目标):
$ /bin/ls -ld ~/.ssh{,/authorized_keys}
drwx------ 11 rik staff 352 Oct 30 21:49 /Users/rik/.ssh
-rw-r--r-- 1 rik staff 1981 Oct 30 21:27 /Users/rik/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
从 Linux 桌面(来源):
$ ssh-add -L
ssh-rsa AAAAB3[...]2akN7r /Users/rik/.ssh/id_rsa
ssh-rsa AAAAB3[...]Ig+DS3 /home/rik/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
我已将其复制authorized_keys到树莓派并能够通过 ssh 访问它。对每台机器的使用ssh -vvv提供了更多线索。
到树莓派:
...
debug1: rekey after 134217728 blocks
debug2: key: /home/rik/.ssh/id_rsa (0x55a9f8044310), agent
debug2: key: /Users/rik/.ssh/id_rsa (0x55a9f8049330), agent
debug2: …Run Code Online (Sandbox Code Playgroud) 我正在编写一个使用 libssh 库的应用程序。我正在尝试建立从应用程序运行的客户端到服务器的连接。但是,我没有连接,而是收到一条错误消息:
[ERR]: Starting the SSH session failed (kex error : no match for method server host key algo: server [ssh-rsa], client [ssh-ed25519,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384,ecdsa-sha2-nistp256,rsa-sha2-512,rsa-sha2-256]).
Run Code Online (Sandbox Code Playgroud)
我想更改服务器主机密钥算法以便可以建立连接,但我不知道在哪里执行此操作。我已经重新创建了我的服务器主机密钥。我认为我可以通过 进行配置/etc/ssh/sshd_config,但我无法找到正确的标志。我在服务器上的文件如下所示:
# $OpenBSD: sshd_config,v 1.97 2015/08/06 14:53:21 deraadt Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default …Run Code Online (Sandbox Code Playgroud) 我已经创建了一个 RSA 密钥对ssh-keygen。我/etc/dropbear-initramfs/authorized_keys有公钥,在我的客户端计算机上,我的/home/<name>/.ssh/目录中有密钥对。运行后update-initramfs -u,我仍然无法连接Dropbear。
这是我在服务器上设置的方式:
/etc/dropbear-initramfs/authorized_keys:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCi3gJaNC89jJSdzlD/qxjwzKC33PpERqpyt7q2PIHFM7hoDk7M/MU9/5k+jmIy80Xt0ZvswLdxAi4p26wr+13vtwNHJIdsLdswCNmKxz+nyBvIw2g/pT7I3368B6KZ1MKokQ4Nz4HQu5WuEDZXTZSnsvP/7n732+zwhFZDPz+NZ4HdY0cveTeb6hW+peZEe3xCBQ4PeGNaH1U+VTuNveyAnFPxEjHvQhG39CtAn4SAEYd7UMNmyVFWDf2+ymlgWRwq2joAQKg/vB4qrdwX6MWEPf0r0H2jtnm+y8ZFrEdmjJTWmUKhliE928Oc63exAPaGmwJ4+tjrSUU0twHe+v9HnTrMiJHvOUQDoUuMsyqsO5auo3RNUMXMKEhA/tJbZjpAMj5wMtdcvHJ0u5VJ/oZQavm0uYUBAhOc94JUr6qRVfNk1PbCGgBx1hCfIKORVHz05bsMZUYeUaruhfMGg3jGTpfojgBRWZ0gbQTnEaxNcXeZnSEoTmX8jOhSsOmhqjU= root@ubuntu
Run Code Online (Sandbox Code Playgroud)
ls -la /etc/dropbear-initramfs显示:
drwxr-xr-x 2 root root 4096 Apr 17 23:11 .
drwxr-xr-x 99 root root 4096 Apr 17 21:33 ..
-rw------- 1 root root 565 Apr 17 23:11 authorized_keys
-rw-r--r-- 1 root root 579 Apr 17 22:48 config
-rw------- 1 root root 458 Apr 17 21:33 dropbear_dss_host_key
-rw------- 1 root root 140 Apr 17 21:33 dropbear_ecdsa_host_key
-rw------- 1 root root …Run Code Online (Sandbox Code Playgroud)