我想为 subversion 项目建立无密码 ssh 连接。现在我正在使用 ssh+svn,这有点烦人,因为我每次想与服务器进行交易时都必须输入密码。
我在网上找到了几个关于如何生成无密码 ssh 密钥的教程,但它们似乎都假设我在远程系统上使用与家庭系统相同的用户名。但是,我用于 ssh+svn 的用户名与我正在运行的系统上的用户帐户名不同。我该如何正确设置?我没有运气只更改密钥文件中的名称。
答案1
您只需在命令中提供其他系统的用户名svn
:
$ svn co svn+ssh://otheruser@othersystem/path/to/repo
也回答你的问题的标题:
$ ssh otheruser@othersystem
这会导致sshd
远程计算机上查找~otheruser/.ssh/authorized_keys
与您正在输入命令的计算机上的私钥相对应的公钥。
答案2
有两种方法可以做到这一点:
1)将user@放入svn url中;这告诉 svn+ssh 以该用户身份登录。我认为从维护的角度来看这是一个坏主意,因为指向存储库其他部分的外部内容将无法正常工作。
2)创建一个~/.ssh/config(记录为ssh_配置)说的是这样的:
Host othersystem
User otheruser
这边走任何尝试 ssh 到其他系统将默认使用其他用户。当您手动执行 ssh 以及使用 svn 时,这对您来说很方便。
答案3
您不必在两台计算机上拥有相同的用户名。只要生成密钥 ( 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'
如果您不想remoteuser
每次都输入,请附加到~/.ssh/config
:
Host remoteserver
User remoteuser
附注姓名密钥的形式可能是localuser@localhost
但它是只有一个名字。也可以这样myfavouritekey@myfavouritecomputer
,没有人会在乎。
答案4
创建.ssh/config
并运行后:
cat ~/.ssh/id_*.pub | ssh remoteuser@remoteserver 'cat >> .ssh/authorized_keys'
我收到错误:
Bad owner or permissions on /usr/share/eprints3/.ssh/config
然后我添加了chmod 600 .ssh/config
,之后就运行顺利了。