SSH 基于公钥授权的无用户名,密码输入

有时候想通过一台服务器调用另一台(或一批)服务器提供的程序或脚本,以实现一个简单的集中控制方式。使用linux现成的SSH就可以做到。
  但是在使用SSH调用时,每次被访问服务器都要求提供用户名和密码。这对于程序调用来说过于烦琐,也不利于程序控制的调用。
   有什么办法在使用SSH时不用每次都输入用户名和密码呢?

先来看SSH的安全认证机制(摘自《维基百科》http://zh.wikipedia.org/wiki/SSH)

在客户端来看,SSH提供两种级别的安全验证。

  • 第一种级别(基于密码的安全验证),知道帐号和密码,就可以登录到远程主机,并且所有传输的数据都会被加密。但是,可能会有别的服务器在冒充真正的服务器,无法避免被“中间人”攻击。
  • 第二种级别(基于密匙的安全验证),需要依靠密匙,也就是你必须为自己创建一对密匙,并把公有密匙放在需要访问的服务器上。客户端软件会向服务器 发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的用户根目录下寻找你的公有密匙,然后把它和你发送过来的公有密匙进行比 较。如果两个密匙一致,服务器就用公有密匙加密“质询”(challenge)并把它发送给客户端软件。从而避免被“中间人”攻击。

在服务器端,SSH也提供安全验证。 在第一种方案中,主机将自己的公用密钥分发给相关的客户端,客户端在访问主机时则使用该主机的公开密钥来加密数据,主机则使用自己的私有密钥来解密数据, 从而实现主机密钥认证,确定客户端的可靠身份。 在第二种方案中,存在一个密钥认证中心,所有提供服务的主机都将自己的公开密钥提交给认证中心,而任何作为客户端的主机则只要保存一份认证中心的公开密钥 就可以了。在这种模式下,客户端必须访问认证中心然后才能访问服务器主机。

第二种级别的密钥授权的具体做法为:

1. 在访问服务器上输入命令,生成公钥:

  #cd

  #ssh-keygen

  将在目录"/root/.ssh/"下生成公钥。

2. 复制公钥

  #cd /root/.ssh/

  #cat id_rsa.pub

  复制整个公钥。

3. 在被访问服务器上输入命令,生成密钥:

  #cd

  #ssh-keygen

  #cd /root/.ssh/

  #vim authorized_keys2

  【Ctrl v】将访问服务器的公钥复制到文尾,保存并退出。

4. 在访问服务器上调用被访问服务器的脚本时将不再需要输入用户名和密码。

   ssh -l root 被访问服务器IP地址 /被访问服务器脚本或程序的路径/test.pl

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北雨南萍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值