ssh主机互信

Posted wonchaofan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ssh主机互信相关的知识,希望对你有一定的参考价值。

SSH主要用于远程登录。假定你要以用户名user,登录远程主机host,只要一条简单命令就可以了。

$ ssh user@host

如果在hosts文件中配置了别名,就可以直接使用别名登录了。

SSH之所以能够保证安全,原因在于它采用了公钥加密。

整个过程是这样的:(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。

所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

这种方法要求用户必须提供自己的公钥。如果没有现成的,可以直接用ssh-keygen生成一个:

 $ ssh-keygen

重要参数解析:

-t:指定加密方式,有四种“dsa”, “ecdsa”, “ed25519”, or “rsa”,一般用rsa.

-P:提供(旧)密码短语.

-f:指定密钥文件名。可以使用绝对路径也可以使用相对路径,但文件必须放在登陆用户的家目录的.ssh/目录中。不提供此参数,默认放在家目录的.ssh/下面。

在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥,后者是你的私钥。

这时再输入下面的命令,将公钥传送到远程主机host上面:

$ ssh-copy-id user@host

如果还是不行,就打开远程主机的/etc/ssh/sshd_config这个文件,检查下面几行前面"#"注释是否取掉。

  RSAAuthentication yes
  PubkeyAuthentication yes
  AuthorizedKeysFile .ssh/authorized_keys

然后,重启远程主机的ssh服务

// ubuntu系统
  service ssh restart

远程主机将用户的公钥,保存在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。公钥就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。

这里不使用上面的ssh-copy-id命令,改用下面的命令,解释公钥的保存过程:

  $ ssh user@host mkdir -p .ssh && cat >> .ssh/authorized_keys < ~/.ssh/id_rsa.pub

这里只是完成了本地机免密登录远程主机。

假设要配置几台主机之间的互信。

那就在每台主机下面都生成秘钥文件:

 $ ssh-keygen -t rsa -P   -f id_rsa

然后把每台主机的公钥互相追加保存在每台主机的 .ssh/authorized_keys 文件中。

最后也可以给主机起个别名保存在/etc/hosts 文件中

比如192.168.2.100 node1

  192.168.2.101 node2

这样就可以用别名登录了

ssh node1

 

以上是关于ssh主机互信的主要内容,如果未能解决你的问题,请参考以下文章

ssh主机互信

Linux 多台主机配置 ssh 互信脚本

Linux 多台主机配置 ssh 互信脚本

利用Python Fabric配置主机间SSH互信和添加公钥

linux主机基于ssh互信配置

Linux 多主机SSH互信操作---noob....