我理解非对称密钥加密的逻辑步骤,因为它与TLS有关,但是,为了避免使用密码进行身份验证,我已经开始使用Git,并且为了避免使用密码进行身份验证,我设置了用于无密码身份验证的ssh密钥。我知道这些ssh密钥是相互补充的,但我不知道实际的身份验证是如何发生的。我将公钥复制到Git,并在本地存储私钥。因此,我能够完成我开始做的事情(无密码身份验证),但是我不知道为什么认证是成功的基本步骤。我试过搜索网页,但是到目前为止,我找到的每一个答案都太高了,因为它们没有指定步骤。例如,如果我寻找TLS步骤,我会期望类似这样的东西:检查https页面( server )的证书--获取公钥并用它加密秘密--安全地
我知道可以工作,但是我正在寻找公钥身份验证。
我正在尝试使用SSH.NET和公钥建立一个连接。
在Git终端中,我可以使用我的公钥连接和运行命令,但是当我尝试使用SSH.NET连接到同一台主机时,我会得到一个异常。
以下是我试图连接的方式:
using (var client = new SshClient("host.name.com", port, "username"))
{
client.Connect(); // exception thrown here
}
我也尝试过这条路线:
var authMethod = new PrivateKey
我有一个系统,SSH-ing仍然要求输入密码,尽管:
我的公钥在远程服务器的authorized_keys文件中是正确的。
我的私钥作为id_rsa存储在我的.ssh目录中。
本地客户端和远程服务器上的权限是正确的。这包括主目录、.ssh目录、authorized_keys文件和密钥文件本身。
客户端和服务器上都禁用了SELinux。
此外,服务器上的/var/log/secure在每次登录尝试时都报告以下错误:
sshd[17110]: error: Could not get shadow information for
我用字符串替换了实际的用户名。
造成这种情况的原因是什么和/或如何
我基本上把自己锁在我的副驾驶证之外了。没有什么,所以没有太多的担心,但我真的想知道如何解决这个问题。
通过禁用根访问,然后覆盖id_rsa,我把自己锁在了外面。我学到了我的教训,从现在起我将命名我所有的密钥对。
不管怎样,每当我试图通过ssh登录时
ssh username@xxx -p 2222
我明白了:
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
d
Received disconnect from xxxxx: 2:
我目前丢失了服务器数据,需要从备份中恢复服务器。但是备份太老了,服务器无法知道机器的ssh键。
Server ----------------------------------- Machine
(doesn't know public key of machine) --------------------- (has private and public key)
机器每10秒尝试连接到服务器。我能在日志里看到尝试。
如何让机器(至少是暂时的)访问服务器?使用ssh似乎不可能禁用身份验证?
机器太远了,所以我不能再去那里拿公钥,也不能给它一个新
我的理解是,openssh客户机只需要私钥,相应的公钥必须在服务器中。但是,当我将详细级别提高到3时,我在ssh客户机中看到了以下内容。
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/test/.ssh/id_rsa
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: