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。
我今天碰到的问题是:申请了台免费的ssh服务器来tunnel,我用密钥配置的话生成了
这里有个问题:
如果有两台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的认证
1.ssh-keygen  //设置密钥名 id_rsa.HostA 自动生成id_rsa.HostA.pub的公钥
2.ssh-keygen  //设置密钥名 id_rsa.HostB 自动生成id_rsa.HostB .pub的公钥
3.ssh-copy-id -i id_rsa.HostA.pub
4.ssh-copy-id -i id_rsa.HostB.pub
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使用不同密钥对登录了。
这个问题以前就碰到了,对于在那里运行ssh-keygen,那里放密钥,怎么用多个密钥一直迷迷糊糊。今天中午查了点资料都清晰了,记录并共享一下。