我知道可以工作,但是我正在寻找公钥身份验证。
我正在尝试使用SSH.NET和公钥建立一个连接。
在Git终端中,我可以使用我的公钥连接和运行命令,但是当我尝试使用SSH.NET连接到同一台主机时,我会得到一个异常。
以下是我试图连接的方式:
using (var client = new SshClient("host.name.com", port, "username"))
{
client.Connect(); // exception thrown here
}
我也尝试过这条路线:
var authMethod = new PrivateKey
在Gitlab中创建私有项目。在个人帐户中添加公共SSH密钥。在新的空存储库中发送提交时:
git push origin master
我得到了错误:
identity_sign: private key /c/Users/user/.ssh/id_rsa contents do not match public
git@gitlab.com: Permission denied (publickey).
fatal: Could not read from remote repository.
怎么啦?
当显式地将标识文件指定为ssh时:
ssh -i ./id_rsa ...
我在ssh调试跟踪中有以下几行:
debug1: Offering public key: ./id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
它是否意味着ssh生成的id_rsa包含公共RSA指数?id_rsa格式似乎相当明确,它包含私钥和它的“开始私钥”块,所以“提供公钥”必须意味着“向服务器发送公钥”。
编辑:
为了澄清这一点,我想知道在“提供公钥”的背后到底发生了什么。如果客户端持有多个密钥,则
我不能使用ssh id_rsa/id_rsa.pub密钥,因为看起来ssh认为输入密码是错误的。但我肯定这是对的。以下是它的外观:
ssh myuser@myhost_ip -i ~/.ssh/id_rsa.pub
The authenticity of host 'myhost_ip (myhost_ip)' can't be established.
RSA key fingerprint is SHA256: (some hash).
Are you sure you want to continue connecting (yes/no)? yes
Warni
我的印象是PEM文件只是另一个公钥,就像在SSH PubKeyAuthentication中一样,但是我完全错了。
我不想每次在ssh命令中添加标识文件,所以我尝试在我的蔚蓝vm中执行一个ssh-copy-id,这样我就可以使用一个简单的ssh user@ip命令直接验证和登录
但是,这个命令未能执行All keys were skipped because they already exist on the remote system.命令,当我检查/etc/ssh/sshd_config时,PubKeyAuthentication行被注释掉了。
这让我想知道,是哪一行允许IdentityF
是否有可能访问只有公共SSH密钥的存储库?关键内容看起来像
ssh-ed25519 <key> <username>
我尝试将.pub密钥放入~/..ssh文件夹,但没有生效。
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
如果是这样的话,如何在Ubuntu上建立这样的连接?