use*_*394 15 password ssh subversion
我想为一个颠覆项目做一个无密码的 ssh 连接。现在我正在使用 ssh+svn,这有点烦人,因为我每次想与服务器进行交易时都必须输入密码。
我在网上找到了几个关于如何为无密码 ssh 生成密钥的教程,但它们似乎都假设我在远程系统上使用与我的家庭系统相同的用户名。但是,我用于 ssh+svn 的用户名与我正在运行的系统上的用户帐户名不同。我该如何正确设置?我只是更改密钥文件中的名称并不走运。
War*_*ung 15
您只需要在svn命令中提供其他系统的用户名:
$ svn co svn+ssh://otheruser@othersystem/path/to/repo
Run Code Online (Sandbox Code Playgroud)
要回答你的问题的标题,太:
$ ssh otheruser@othersystem
Run Code Online (Sandbox Code Playgroud)
这会导致sshd在远程机器上查找~otheruser/.ssh/authorized_keys与您正在键入命令的机器上的私钥相对应的公钥。
有两种方法可以做到这一点:
1) 将 user@ 放入 svn url ; 这告诉 svn+ssh 以该用户身份登录。我认为从维护的角度来看,这是一个坏主意,因为诸如指向存储库其他部分的外部对象之类的东西将无法正常工作。
2)制作一个 ~/.ssh/config (记录为ssh_config),内容如下:
Host othersystem
User otheruser
Run Code Online (Sandbox Code Playgroud)
这样,任何ssh 到其他系统的尝试都将默认使用其他用户。当您手动执行 ssh 以及使用 svn 时,这对您来说很方便。
您不必在两个 mashine 上使用相同的用户名。只要您生成密钥 ( ssh-keygen),您就必须从本地服务器复制行~/.ssh/id_rsa.pub或~/.ssh/id_dsa.pub(取决于密钥类型)并将其附加到~/.ssh/authorized_keys远程服务器上。
% ssh-keygen
% cat ~/.ssh/id_*.pub | ssh remoteuser@remoteserver 'cat > .ssh/authorized_keys'
Run Code Online (Sandbox Code Playgroud)
如果您不想remoteuser每次都输入 append to ~/.ssh/config:
Host remoteserver
User remoteuser
Run Code Online (Sandbox Code Playgroud)
附注。键的名称可能是形式,localuser@localhost但它只是一个名称。它可以一样好myfavouritekey@myfavouritecomputer,没有人会在意。