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,那里放密钥,怎么用多个密钥一直迷迷糊糊。今天中午查了点资料都清晰了,记录并共享一下。