这样做的好处是,不用输入密码,很方便。 当然弄好之后最好还是加密备份下。 以下是内容来源于网络,经过编辑之后更加完善,经我测试成功。

服务器A:192.168.1.1 服务器B:192.168.1.2

服务器A配置(可以认为是本地客户端):

ssh-keygen -b 2048 -t rsa 或 ssh-keygen –t rsa –C "youremail@gmail.com"

这里的-b 2048 是密钥加密长度,设大点,直接回车3次。

key文件会保存在/root/.ssh目录下

这时候.ssh目下会多出几个文件 idrsa 私钥文件 idrsa.pub 公钥文件,这个文件里的内容要放到其它主机里面去。

查看idrsa.pub文件。 cat /root/.ssh/idrsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIcAvh6Lz9ghftghtfghSv+kSrxVLC9UDKq27mg5vhfghAaWcgFgllZhfg2DLnGotmeL/08bp6jMW/ekSq1BY1eiouiluiliuliul2Rr84x0bB5YShhpgJwuPbwr/pymgukyukyukyuthjkiytiliunzdfkuykyuIZgVvgPTzNdN/RDwJMsafsdvgsdsfsdfdsfsdaflozStYcWjrwzYxsroDPBy4zjd0gH5zMYhj+vS4OOAZZ8rtHEfx+sTE0= root@localhost.localdomain

服务器B配置:

新建文件夹与文件 mkdir /root/.ssh vim /root/.ssh/authorized_keys

.ssh 文件夹 700 权限 chmod 700 .ssh/ authorizedkeys 600权限 chmod 600 .ssh/authorizedkeys

把A服务器上查看的KEY文件内容,复制到B服务器的authorized_keys中 主要是将root@localhost.localdomain修改为root@192.168.1.1 这样方便查看是哪台服务器的KEY,可能会有多台服务器的key(一条key一行)。

退出B,在A服务器上测试执行:

ssh root@192.168.1.2

首次登陆会需要你输入YES。 看是不是不需要密码就可以登陆B服务了。

上面已经可以使用key登陆,接下来是关闭密码登录,登录B后,修改sshd 的主配置文件。 vim /etc/ssh/sshd_config

找到 PasswordAuthentication yes 改成 PasswordAuthentication no

service sshd restart

如果你还想不需要输入完整的IP便可直接登录的话(比如:ssh git@github.com,想要只输入ssh github)。 那么,编辑本机的~/.ssh目录下的config文件(vim config): 添加命令

Default github user(first@mail.com)

Host github HostName github.com User git IdentityFile C:/Users/username/.ssh/id_rsa

second user(second@mail.com)

Host github-second HostName github.com User git IdentityFile C:/Users/username/.ssh/idrsasecond

然后保存此修改,就OK了。

------------------分割线-----------------------------------

接下来说一下SSH登陆的原理,就可以让我们弄明白这种共用Key的方法的由来。 1. 什么是SSH SSH是一种网络协议,用于计算机之间的加密通信。

  1. 公钥Public Key与私钥Private Key SSH Key SSH需要生成公钥Public Key和私钥Private Key, 常用的是使用RSA算法生成idrsa.pub和idrsa。 公钥Public Key(idrsa.pub)是可以暴露在网络传输上的,是不安全的。而私钥Private Key(idrsa)是不可暴露的,只能存在客户端本机上。 所以公钥Public Key(idrsa.pub)的权限是644,而私钥Private Key(idrsa)的权限只能是600。如果权限不对,SSH会认为公钥Public Key(idrsa.pub)和私钥Private Key(idrsa)是不可靠的,就无法正常使用SSH登陆了。 同时在服务端会有一个~/.ssh/authorizedkeys文件,里面存放了多个客户端的公钥Public Key(idrsa.pub),就表示拥有这些Public Key的客户端就可以通过SSH登陆服务端。

  2. SSH公钥登陆过程 客户端发出公钥登陆的请求(ssh user@host) 服务端返回一段随机字符串 客户端用私钥Private Key(idrsa)加密这个字符串,再发送回服务端 服务端用~/.ssh/authorizedkeys里面存储的公钥Public Key去解密收到的字符串。如果成功,就表明这个客户端是可信的,客户端就可以成功登陆

由此可见,只要多台电脑上的的公钥Public Key(idrsa.pub)和私钥Private Key(idrsa)是一样的,对于服务端来说着其实就是同一个客户端。所以可以通过复制公钥Public Key(idrsa.pub)和私钥Private Key(idrsa)到多台电脑来实现共享登陆。 这里也需要强调的是,一定要确保公钥Public Key(idrsa.pub)和私钥Private Key(idrsa)的安全,不要随意乱扔,乱扔它会污染环境,砸到小朋友怎么办?就算砸不到小朋友砸到花花草草也不好嘛! Keep SSH Public/Private Keys Safe