如何在IIS,ASP.NET MVC,C#应用程序中配置Libgit2Sharp SSH身份验证?

问题描述 投票:0回答:1
IAM在C#中的ASP.NET MVC应用程序wittein中使用

libgit2sharp

,并在IIS v.10.0上运行(Windows Server 2019)。执行对本地服务器的
git
存储库的执行
git
命令非常有效。
,但是,我还希望能够使用

SSH

身份验证推送/拉到远程存储库(GitHub)。 libgit2sharp支持SSH,因为发布0.31.0(是的!)。但是我正在努力在运行的IIS应用程序的背景下使SSH身份验证工作。 ASP.NET MVC应用程序在其自己的IIS应用程序池中以.NET CLR版本v4.0的“集成”托管管道模式运行。应用程序池名称为(假装)myorg-webapp

。 (应用程序池名称为Web应用程序运行为IIS虚拟用户的名称。)

我终于发现以下配置有效:

asp.net-mvc github iis ssh libgit2sharp
1个回答
0
投票
确定远程存储库(在我的情况下,在GitHub上)配置了有效的用户帐户的读/写入权限,并且用户帐户具有有效的SSH键。就我而言,github用户名是

myorg-webapp

确保您可以通过命令提示符访问存储库。 (可能最好使用

ssh
    对此进行测试。)
  • 对于此阶段进行故障排除,您可以使用给定的
    cmd.exe
  • 命令
  • Herey。这很有用,因为详细的命令输出显示了使用哪个
    ssh -vT [email protected]
    文件,以及使用哪个私有密钥身份文件。
    在我的情况下,我的
  • .ssh/config
  • URL看起来像:
    git remote -v
    文件中的ssh公共密钥和私钥分别包含在
        origin  ssh://[email protected]/MyOrganizationName/MyWebAppRepository.git (fetch)
        origin  ssh://[email protected]/MyOrganizationName/MyWebAppRepository.git (push)
    
    文件夹中。 我的文件包含以下内容:
myorg-webapp_id_rsa.pub

工程配置

为Web应用程序制作此工作的关键是确保正确设置了系统级的SSH配置文件,并且将私有SSH键配置为to
允许访问IIS应用程序池

VIrtualuser

服务器的
myorg-webapp_id_rsa
文件包含以下(特定于github的):
%USERPROFILE%\.ssh

您可以找到GitHub的最新SSH键指纹

HEREY。 (如果您要连接到其他远程GIT存储库,则应该能够从您的

%USERPROFILE%\.ssh\config
文件中查找并将主机的SSH键指纹复制到

ServerAliveInterval 30 ServerAliveCountMax 20 # TCPKeepAlive no recommended by https://unix.stackexchange.com/a/616355 TCPKeepAlive no ConnectionAttempts 5 Host github.com HostName github.com User myorg-webapp IdentityFile ~/.ssh/myorg-webapp_id_rsa PreferredAuthentications publickey
文件。
服务器的

C:\ProgramData\ssh\ssh_known_hosts

包含:

github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk= github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg= I创建了%USERPROFILE%\.ssh\known_hosts

文件夹,并将

C:\ProgramData\ssh\ssh_known_hosts

SSH私有密钥文件复制到该文件夹中。
至关重要的是,必须将the文件的权限设置为to,允许访问IIS App pool
Virtual

用户:

要以这种方式配置文件,您必须:

可继承 所有其他用户的权限。 ADD

C:\ProgramData\ssh\ssh_config

作为用户。

thanks to
https://stackoverflow.com/a/36597241/1086134
用于显示正确的方法来指定“选择用户或组”对话中的IIS虚拟用户。
IIS虚拟用户匹配您的IIS应用程序池的名称:

要进行故障排除并最终到达上述配置,我配置了全局Git配置文件KbdInteractiveAuthentication no
PasswordAuthentication no

Host github.com
    HostName github.com
    User myorg-webapp
    IdentityFile C:/Users/Public/ssh/myorg-webapp-id_rsa
    PreferredAuthentications publickey
如下:
C:/Users/Public/ssh/

特别,设置myorg-webapp-id_rsapermissions for SSH private key file允许我检查myorg-webapp-id_rsa

文件以确定正在尝试的是什么以及在哪里失败。 (日志文件报告的“未受保护的私钥文件”,直到最终令人满意。)

运气好!

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.