【问题标题】:Git SSH over remote PowerShell (PS-Session)远程 PowerShell 上的 Git SSH(PS-Session)
【发布时间】:2016-12-12 08:51:35
【问题描述】:

我正在尝试使用 PowerShell 远程连接到 git (Windows)。

我在目标机器上创建了一个正确运行的 PowerShell 脚本(如果我使用远程桌面访问该机器)。

我正在使用 SSH 使用公共 SSH 密钥连接到 PowerShell。

我使用Enter-PSSession -ComputerName servername连接远程机器,省去了使用远程桌面连接的需要。这也是因为有些用户需要在不直接访问机器的情况下运行此脚本。

我已经在远程机器上克隆我直接在远程机器上执行的存储库。

当我远程运行相同的 PowerShell 脚本时,我在尝试执行 Pull 时收到以下消息:

主机密钥验证失败。:String

我正在使用漫游配置文件,因此我在服务器上生成的密钥将与两台机器上我的用户目录中存储的密钥相同。

我对使用 SSH 密钥非常陌生,我认为这是一项安全功能。

有没有人能够帮助解决这个问题以使其远程工作。 如果有帮助,我不需要它直接在远程机器上工作。

【问题讨论】:

    标签: powershell ssh remote-access


    【解决方案1】:

    我无法理解你问题的真正本质,但也许你能从我的评论中得到一些线索。

    当 SSH 客户端连接到 SSH 服务器时,后者会将其密钥发送给客户端。通常,服务器有一个永远不会改变的 SSH 密钥。客户端必须信任服务器的密钥——这一事实存在于 SSH 信任模型的根目录中。

    因此,SSH 客户端软件在逻辑上将服务器密钥的指纹与您用于连接服务器的 IP 或主机名相关联。通常,当客户端 SSH 软件检测到它尚未连接到您要连接的特定服务器时,它会显示服务器密钥的指纹并询问您是否信任它。

    理论上,这意味着你先写下了那个指纹,而 坐在服务器的控制台上,当 SSH 客户端询问时 你关于信任服务器的密钥,你比较指纹它 用你写下的那个给你看。

    好的,因此您“接受”密钥,然后客户端通常会保存该对 IP+fingerptint 和/或主机名+fingerpting 并且不会再问那个问题——除非它检测到指纹与它保存的不同(在这种情况下它会大声抱怨,因为这可能意味着试图制造一个 Man-in-the - 中间攻击你)。

    我要引导你的是几点:

    • SSH 客户端和服务器在某种意义上不可互换 可以通过 SSH 从机器 A 连接到机器 B,但反之则不行:A 上的客户端密钥只是客户端的密钥。

    • 即使您从 A 连接到 B,并不意味着可以 从 C 连接到 B:A 可能信任 B 的密钥,但 C 不会。

    不知道它是否有帮助,但评论太多了。

    【讨论】:

    • 基于上述是否意味着我应该能够从机器 C 生成一个公钥来连接到机器 A(并放弃我当前的密钥)?
    猜你喜欢
    • 1970-01-01
    • 2018-04-21
    • 2012-07-30
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 2015-11-23
    • 2011-10-23
    相关资源
    最近更新 更多