Linux下SSH跳转无密码登录或执行命令

来源:互联网 发布:数据截取 威布尔分布 编辑:程序博客网 时间:2024/06/05 15:10

 概述

        在开发过程当中我们经常会在两台linux系统服务器之间传输文件,每次登陆都需要手动输入密码,这样重复性的工作浪费时间。如果能实现一次操作永久登陆这样会提高不少工作效率。因此提出以下需求。

       

需求:

          实现两台linux系统服务器之间无密码登陆和执行脚本或shell命令。


实现方式

        建设我们有两台服务器IP分别是A,B. 要从服务器A上访问服务器B,即实现A无密码登陆服务器B或执行命令。执行以下步骤即可完成:

       1. 首先在IP为A的服务器上执行

ssh-keygen 命令

       一路回车,内容如下

        [user_a@ ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/export/home1/inms_col/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /export/home1/inms_col/.ssh/id_rsa.
Your public key has been saved in /export/home1/inms_col/.ssh/id_rsa.pub.
The key fingerprint is:

这样,就在当前用户目录下的.ssh文件夹下生成了两个文件id_rsa和id_rsa.pub文件        

2. 将id_rsa.pub文件用scp命令传输到Ip为B的服务器用户的.ssh目录下。

          如:scp id_rsa.pub user_b@B:/export/home1/B/.ssh/id_rsa.pub

         如果在b的/user_b/.ssh/目录下有 authorized_keys 这个文件的话,则直接利用cat命令将id_rsa.put文件内容添加到 authorized_keys后

命令如下: cat id_rsa.pub >>  authorized_keys

注意,不能利用手工的拷贝,否则会导致失败,只能用cat >>

3. 修改authorized_keys 的权限为600,如下:chmod 600 authorized_keys

然后删除id_rsa.pub就可以了,大功告成,到A的机器上试试 ssh user_b@B ,看看直接进去了吧,不用再输入密码了!


如果想实现A服务器又可以访问C服务器,那么参照2,3步骤在服务器C上也做下操作即可。