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
我终于发现以下配置有效:
myorg-webapp
ssh
对于此阶段进行故障排除,您可以使用给定的
cmd.exe
ssh -vT [email protected]
文件,以及使用哪个私有密钥身份文件。
在我的情况下,我的.ssh/config
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 poolVirtual用户:要以这种方式配置文件,您必须: 可继承 所有其他用户的权限。 ADD
C:\ProgramData\ssh\ssh_config
作为用户。
thanks tohttps://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_rsa
允许我检查
myorg-webapp-id_rsa
运气好!