另一个用户名的无密码 ssh?

另一个用户名的无密码 ssh?

我想为 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,之后就运行顺利了。

相关内容