如何通过 ssh 链接 svn checkout?

如何通过 ssh 链接 svn checkout?

假设我在私有网络上有一个 svn 主机,我们将其称为my_work_svn。我无法从外部访问它,但我可以从一台我们称为 的机器上访问它my_work_ssh(假设我在一台名为 的计算机上工作my_home)。

现在,如果我想检出存储库,我可以执行以下操作:

ssh my_work_ssh
svn co my_work_svn/master my_checked_out_repo
# CTRL+D to quit ssh session from my_work_ssh
scp my_work_ssh:my_checked_out_repo my_local_repo

但这看起来很长而且很复杂,我如何用一个命令来完成这个任务?

答案1

这可以通过使用 ssh 隧道(和/或 ProxyCommands)来简化

这住在.ssh/config。如果你没有窗户就不知道。

  • 定义你的堡垒主机 Host my_work_ssh Hostname some.hostname.com User usename IdentityFile ~/.ssh/id_rsa_work_ssh

  • 定义你的 svn

Host my_work_svn HostName svn.internal.domain IdentityFile ~/.ssh/root/id_rsa_work_ssh ProxyCommand ssh my_work_ssh exec nc %h %p 2>/dev/null

  • 至少连接一次my_work_ssh并将my_work_svnknown_hosts 条目复制到您的桌面。
  • 现在您可以ssh my_work_svn从台式机执行,并且会发生以下情况:
    • 你将首先自动连接到 my_work_ssh
    • 将举行一次 nc 会议my_work_svn
    • 所有通信都将通过此 nc 会话转发

最终效果是,您使用中间主机绕过 FW。这适用于 ssh 和 scp(svn+ssh 只是其中的 ssh 和 svn 命令)。

请注意:

  • 公钥设置更受欢迎且速度更快
  • ProxyCommand 有时很挑剔
  • my_work_ssh必须在计算机上启用 AgentForwarding

相关内容