我有一个设置,可以从我的本地计算机 ssh 到我的远程服务器(即 Google 计算实例)。我曾经能够从远程实例上的存储库进行克隆、推送和拉取,而无需向远程实例添加任何密钥,也无需向在线存储库添加任何新密钥(只需本地计算机中的公钥)。我相信远程实例正在使用本地的密钥来验证我的 Git 推送和拉取操作。
然而,当我在本地计算机上重新安装操作系统时,系统崩溃了。现在,当我尝试从远程实例连接 Github 服务器时,我得到以下信息:
无法克隆:
[lucas@ecoinstance]~/node$ git clone git@github.com:lucasExample/test.git test
Cloning into 'test'...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
无法推送:
[lucas@ecoinstance]~/node/nodetest1$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
[lucas@ecoinstance]~/node/nodetest1$ git push
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
附加信息:
[lucas@ecoinstance]~/node/nodetest1$ ssh-add -l
Could …Run Code Online (Sandbox Code Playgroud) 我刚刚删除了完整的 ec2-user/.ssh/ 文件夹,我想恢复密钥,这样我就可以访问我的 EC2 服务器,而无需停止和启动它。
我的计算机上有一个 PPK 文件,其中包含“Private-Lines”之类的内容,所以我猜它同时具有私钥和公钥......我已经尝试了很多方法但没有成功,所以,一步一步是什么使用此 PPK 密钥将我的密钥恢复到服务器的说明?
我仍然通过 SSH 连接:)
我使用 PuTTYgen 创建了公钥和私钥,并将公钥复制到.ssh/authorized_keys我的用户帐户下。
然后我尝试在尝试登录时指定私钥,但显然它没有选择它并继续询问我最初拥有的用户名/密码。我正在使用 WinSCP 进行连接并在“高级/身份验证”部分中指定私钥。我是否遗漏了 WinSCP 中的任何步骤?
内容authorized_keys如下所示
ssh-rsa AAAAB3NzaC1yc2EAAAABpEVSiiRXi7tOHpkOyFa9w2OLpBep31k9lePCK7RQxsdfs9u11+rdu0XCidRKOY5j4anD1eDaNBj87wqZbsreRe5cFcsakyGUAYXAvqgGApvsep31k9lePCK7RQxlOY5j4anD1eDaNBj8LJO++K3SkUN8E0srRBO8YyMT6Y03/F7+AAAAB3NzaC1yc2Q4h2RLGtr12CDKSBVAnFEc+JucuF4uF0WY4Sh66MSFI63mCQFu9iYNYwWyT6lUo6sks4WypEVSiiRXi7tOHpkOyFa9w2OLpBzAlTA/VSQwdNTFYUI1vquaufZ9ORzTa6dkbBRo/mLVdevYSRMSDw1BUcinYz/ogdxRvw==
Run Code Online (Sandbox Code Playgroud)
我将权限更改为.ssh700 和authorized_keys600。
虽然我进入 WinSCP 中的身份验证部分并指定私钥(如屏幕截图所示),但它看起来仍然需要用户名和密码,并且没有选择它。
当我使用 PuTTY 并指定私钥时,输入登录用户名后会显示
服务器拒绝我们的密钥
这是 PuTTY 的日志
2018-04-28 17:43:05 Connecting to 158.85.98.202 port 22
2018-04-28 17:43:05 We claim version: SSH-2.0-PuTTY_Release_0.70
2018-04-28 17:43:05 Server version: SSH-2.0-OpenSSH_7.4
2018-04-28 17:43:05 Using SSH protocol version 2
2018-04-28 17:43:05 Doing ECDH key exchange with curve Curve25519 and hash SHA-256
2018-04-28 17:43:05 Server also has ecdsa-sha2-nistp256 host key, but we don't know …Run Code Online (Sandbox Code Playgroud) 我有一堆 ssh 密钥半永久性地加载到 ssh-agent 中。ssh-add -L列出 6 个键。
我还有其他单独存储的密钥;比方说,在 USB 记忆棒上。我正好不希望妥善保管所有的时间。让我给其中之一打电话square.key。
问题是:在我需要的时候square.key,我可以插入 USB 记忆棒并指定-i /path/to/square.key— 但它不起作用。-v揭示了原因:
debug1: Will attempt key: /home/ulidtko/.ssh/key1 RSA SHA256:<redacted> agent
debug1: Will attempt key: /home/ulidtko/.ssh/key2 RSA SHA256:<redacted> agent
debug1: Will attempt key: key3@localhost ED25519 SHA256:<redacted> agent
debug1: Will attempt key: key4@localhost RSA SHA256:<redacted> agent
debug1: Will attempt key: key5@localhost ed25519 ED25519 SHA256:<redacted> agent
debug1: Will attempt key: key6@localhost ECDSA SHA256:<redacted> agent
debug1: …Run Code Online (Sandbox Code Playgroud) 是否可以解决,哪个公钥用于授予用户对服务器的访问权限?
例如,~/.ssh/authorized_keys文件中存储了 5 个公钥。我想知道哪个密钥的使用频率最高,并根据密钥而不是密码进行身份验证来计算每个身份验证事件。
通过 RSA 密钥进行 SSH 身份验证:~/.ssh/authorized_keys。好的。
有没有办法设置系统范围的授权密钥,以便我可以登录任何帐户,包括新创建的帐户?
原因:我有一台服务器并且是唯一的管理员。用户帐户用于将网站彼此隔离,以防万一它们中的任何一个被黑客入侵。
我经常使用 SFTP 并创建新帐户,因此,我厌倦了复制 ~/.ssh/authorized_keys :)
我尝试将 ssh 配置为使用公钥身份验证
/etc/ssh/sshd_config 有这个参数。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
Run Code Online (Sandbox Code Playgroud)
但我仍然被提示输入密码。如果我使用
PasswordAuthentication no
Run Code Online (Sandbox Code Playgroud)
我无法登录
有什么建议吗?
它有效,但仅适用于 root 用户。
我的问题是,我有这个参数
PermitRootLogin 号
如果我使用,我可以使用 root 用户的密钥登录
PermitRootLogin 是的。
系统中只有一个/root/.ssh目录,这个目录下有一个authorized_keys文件
如果在这个系统中没有每个用户的 home/$USER/.ssh 目录和authorized_keys 文件,我如何将它添加到其他用户?
有没有办法为每个用户配置?我需要为每个用户使用不同的 authorized_keys 文件。
是否可以为不同的主机、域或 ip 进行配置?类似于 httpd.conf
当我尝试使用 ssh-agent 中保存的加密密钥 ssh 时,我得到以下信息(使用ssh -vvv):
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/cowens/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug2: input_userauth_pk_ok: BLAH
debug3: sign_and_send_pubkey: RSA BLAH
debug3: input_userauth_banner
Access denied
Access denied
Connection closed by BLAH
Run Code Online (Sandbox Code Playgroud)
如果我强制它使用密码 ( ssh -o PreferredAuthentications=keyboard-interactive -o PubkeyAuthentication=no),我可以登录,然后在我断开连接后(所以它不是 ControlMaster 的事情),我可以使用密钥 ssh 没有问题:
debug1: Offering RSA public key: /home/cowens/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey …Run Code Online (Sandbox Code Playgroud) 除了SSH密钥验证之外,我还想获得手机验证或其他东西。
如何为 SSH 密钥添加防御?
我有一台 Centos 5.9 服务器,我之前已将其配置为通过 SSH 密钥登录进行访问,并且这已经运行了好几个月。我最近不得不远程解决一个问题,这需要我暂时重新启用 root 登录。解决此问题后,我通过在 sshd_config 文件中设置“PermitRootLogin no”来禁用 root 登录,但是,我还设置了“密码验证否”,我认为这是我搞砸的地方。执行此操作后,我无法再登录到服务器,我只收到消息:
Permission denied (publickey,gssapi-with-mic).
Run Code Online (Sandbox Code Playgroud)
我基本上没有其他方法可以通过 SSH 访问服务器,所以我解脱了!我相当肯定这是因为我已经将密码身份验证设置为 no 这就是问题所在,我没有更改服务器上的任何其他设置,这些设置应该会影响以前正常工作的密钥。
如何通过 SSH 重新获得对服务器的访问权限?
ssh-keys ×10
ssh ×8
linux ×3
amazon-ec2 ×1
centos ×1
git ×1
private-key ×1
public-key ×1
root ×1
security ×1
ssh-agent ×1
ssh-keygen ×1
winscp ×1