多用户密钥

SSH 密钥 认证配置 挺简单的,就是ssh-keygen生成密钥公钥对。然后让服务器端放好公钥,本地有密钥就能实现认证。同时这对密钥在兼容ssh协议下都能用的。

LocalHost:L  
ServerHost:S

ssh-keygen可以在L或S上运行,不过最终是让S上有公钥,L上有密钥。

推荐在L上运行ssh-keygen,然后用ssh-copy-id把公钥传到S上,这样有几个好处:
   1. 公钥在网络上传输相对安全。
   2. 使用ssh-copy-id会自动把公钥放到S上的$HOME/.ssh/authorized_keys 并且保证权限OK。

这里有个问题:
如果有两台S,这样本地就会有两份密钥,这样如何存放呢?
开始想到的方法:使用一套公钥密钥。使用ssh-copy-id到不同的server,同时维护config方便登录。 (相对不×××全,下面是我刚了解到的)
{还想到个方法是两台机器使用不同类型的密钥,rsa和dsa,这样就用两个密钥文件了,但是如果和很多台机器想不同密钥呢?密钥不像公钥那样放在同一个文件里的吧?
[Ref ~/.ssh/id_rsa and ~/.ssh/id_dsa for protocol version 2 from man ssh]}

怎么在登录不同服务器使用不同的密钥呢?man ssh就看到有个 -i 参数可以指定不同的密钥。我习惯.ssh/config里放服务器信息,那对应的密钥信息怎么写呢 man ssh_config发现有个IdentityFile配置项。

现在要设置HostA和HostB的认证



ssh-keygen //设置密钥名 id_rsa.HostA 自动生成id_rsa.HostA .pub的公钥   
ssh-keygen //设置密钥名 id_rsa.HostB 自动生成id_rsa.HostB .pub的公钥   
  
ssh-copy-id -i id_rsa.HostA.pub [email protected]   
ssh-copy-id -i id_rsa.HostB.pub [email protected]


5.本地.ssh/config文件

Host HostA  
    HostName HostA.domain.net  
    User useratA  
    IdentityFile  ~/.ssh/id_rsa.HostA  
  
Host HostB  
    HostName HostB.domain.net  
    User useratB  
    IdentityFile  ~/.ssh/id_rsa.HostB

然后就可以直接ssh HostA 或者HostB使用不同密钥对登录了。

********************************************************************************************************************


多用户公钥

如果服务器的目录中没有authorized_keys 文件,只需要将id_rsa.pub公钥文件的名称更改为authorized_keys,如果已经有了authorized_keys文件,使用 “>>”重定向符将用户公钥追加到authorized_keys文件中

cat id_rsa.pub >> ~/.ssh/authorized_keys

或者

ssh-copy-id [-i [identity_file]] [user@]machine


原文:http://blog.csdn.net/sdq4700/article/details/7231168