【问题标题】:How to hide ssh:// and port in URL如何在 URL 中隐藏 ssh:// 和端口
【发布时间】:2016-04-22 17:08:05
【问题描述】:

目前我使用 Gitblit 作为 repo 管理器,它被部署为 apache tomcat (centOS 6.7) 后面的 WAR。

要连接到存储库,我使用 URL(当前状态):

git <command> ssh://<user>@<host>:29418/<repo>

预期的方式是(“通缉”状态):

git <command> <user>@<host>:<repo>

我的虚拟主机:

<VirtualHost *:80>
    ServerName <host>
    ErrorLog logs/gitblit_error_log

    ProxyRequests     off
    ProxyPreserveHost on

    RewriteEngine on
    RewriteLog logs/apache-mod_rewrite
    RewriteCond %{REQUEST_URI} !^/gitblit-1.7.1.*
    RewriteRule ^/(.*)$ /gitblit-1.7.1/$1 [L,PT]

    JkMount /gitblit-1.7.1* worker1
</VirtualHost>

我怎样才能做到这一点并仍然保持使用 SSH 密钥连接的能力?

【问题讨论】:

    标签: git ssh


    【解决方案1】:

    这看起来像是 Apache 的配置文件,它是一个 Web 服务器。是错误的配置文件。相反,更改 SSH 的客户端配置。它位于您的客户端(不是您的服务器)上的~/.ssh/conf。请务必获取正确的权限,否则 SSH 将拒绝读取它。

    这是我的 SSH 配置中的一段。

    Host myserver
    HostName example.com
    Port 22000
    User john
    

    这样,当我做git remote add时,我可以这样做:

    git clone myserver:swordfish.git
    

    而不是这个:

    git clone ssh://john@example.com:22000/swordfish.git
    

    如果您愿意,您甚至可以为每个主机指定不同的身份密钥。

    【讨论】:

    • .ssh/config 的正确权限设置是什么?我有以下内容: 访问权限:-rw-r--r-- 内容:Host * Port 29418 但它仍然不起作用..
    • .ssh 文件夹必须为 700。
    • 谢谢,现在可以了!有没有办法在服务器端配置它?
    • @Dlike:不,没有。
    【解决方案2】:

    使用 git 协议代替 ssh,您将不需要用户名和端口

    https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols#The-Git-Protocol

    SSH,又名 git@:而不是 ssh://git@.com/

    使用公钥认证。您必须生成一个密钥对(或“公钥”),然后将其添加到您的 GitHub 帐户。

    使用密钥比密码更安全,因为您可以将多个密钥添加到同一个帐户(例如,您需要连接到服务器的每台计算机的密钥)。

    您计算机上的私钥可以使用密码进行保护。

    【讨论】:

    • 问题是“我如何做 X”,而你的答案是“根本不做 X,而是做 Y”。
    • 同意。一些开发人员不知道不同的选项。这也是一种更通用的方式,因为您不会传递以后可能会更改的参数端口(用户/端口等)这就是为什么我发布它并且没有像您一样放置相同的答案,这当然会起作用。
    猜你喜欢
    • 2019-10-18
    • 2016-11-07
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 2014-01-17
    相关资源
    最近更新 更多