环境描述

两台linux服务器 172.16.1.22[client],172.16.1.33[server],想要实现client服务器ssh无密码访问server服务器。

使用技术 linux 的ssh密匙,加密方式选 rsa|dsa均可以,默认dsa。

配置过程

1.登录client机器,生成密匙文件和私匙文件

1)进入当前用户根目录下的隐藏目录 .ssh下

  [root@client ~]# cd  ~/.ssh

2)生成client 服务器的私钥和公钥

  [root@client ~]# ssh-keygen -t rsa             <----ssh-keygen -t dsa 表示加密算法未dsa,后续生成文件对应显示dsa
  Generating public/private rsa key pair.
  Enter file in which to save the key (/root/.ssh/id_rsa): <---按enter,生成密匙默认保存在该目录下
  Enter passphrase (empty for no passphrase): <---按enter
  Enter same passphrase again: <---按enter
  Your identification has been saved in /root/.ssh/id_rsa.
  Your public key has been saved in /root/.ssh/id_rsa.pub.
  The key fingerprint is:
  ec:df:3d:c4:0f:9c:6d:c6:ec:fd:fc:d3:63:e0:f1:43 root@tesb

  将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub

3) 查看生成密匙文件

[root@client .ssh]# ll -a
总计 20
drwx------ 2 root root 4096 05-20 10:29 .
drwx------ 18 root root 12288 2015-10-19 ..
-rw------- 1 root root 1675 05-20 10:29 id_rsa
-rw-r--r-- 1 root root 391 05-20 10:29 id_rsa.pub
-rwx------ 1 root root 788 2015-11-05 known_hosts

  

2. 将 .pub 文件复制到Server机器的 ~/.ssh 目录下, 并添加到authorized_keys文件中

1)若server机器上~/.ssh 目录下不存在authorized_keys文件  

[root@client .ssh]# scp id_rsa.pub root@172.16.1.33:~/.ssh/authorized_keys  <---注意:此时尚未建立信任,远程传输还是需要密码滴;scp:command not found参考下方异常处理

 2)若server上已经配置过其他的authorized_keys文件  

[root@server .ssh]# cat id_rsa.pub >> authorized_keys

检查server服务器端,~/.ssh目录下是否存在authorized_keys文件,且文件中包含.pub中信息。

3.设置文件和目录权限,注意是server端    

[root@server .ssh]# chmod  authorized_keys    #设置authorized_keys权限
[root@server ~]# chmod  -R .ssh  #设置.ssh目录权限

4.大功告成,从Client机器登录Server机器的目标账户,不再需要密码了  

[root@client .ssh]# ssh 172.16.1.33 

延伸-双向登陆的操作过程

1、ssh-keygen做密码验证可以使在向对方机器上ssh ,scp不用使用密码.具体方法如下:

2、两个节点都执行操作:#ssh-keygen -t rsa 
  然后全部回车,采用默认值.

3、这样生成了一对密钥,存放在用户目录的~/.ssh下。
将公钥考到对方机器的用户目录下 ,并将其复制到~/.ssh/authorized_keys中(操作命令:#cat id_dsa.pub >> ~/.ssh/authorized_keys )。

4、设置文件和目录权限:
设置authorized_keys权限
$ chmod 600 authorized_keys 
设置.ssh目录权限
$ chmod 700 -R .ssh
 
5、要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。
 
注意事项
1、文件和目录的权限千万别设置成chmod 777.这个权限太大了,不安全,关键是密匙不生效了。
2、生成的rsa/dsa签名的公钥是给对方机器使用的。公钥内容集中拷贝到远程机器的authorized_keys文件中。
3、linux之间的访问直接 ssh 机器ip
4、某个机器生成自己的RSA或者DSA的数字签名,将公钥给目标机器,然后目标机器接收后设定相关权限(公钥和authorized_keys权限),这个目标机就能被生成数字签名的机器无密码访问了

异常处理:

1.Client端,仍然在.ssh目录下,执行命令:

ssh-add id_rsa
系统如果提示:Identity added: id_rsa (id_rsa) 就表明加载成功了
下面有几个异常情况处理:
 1)如果系统提示:could not open a connection to your authentication agent
  则需要执行一下命令:ssh-agent bash
  然后再执行上述的ssh-add id_rsa命令
 2)如果系统提示id_rsa: No such file or directory
   这是系统无法找到私钥文件id_rsa,需要看看当前路径是不是不在.ssh目录,或者私钥文件改了名字,例如如果建立的时候改成 aa_rsa,则这边命令中也需要相应改一下
 3)如果系统提示 command not found,那肯定是你命令敲错字符了
 4)如果提示Agent admitted failure to sign using the key,私钥没有加载成功,重试ssh-add

注意id_rsa/id_rsa.pub文件不要删除,存放在.ssh目录下

2.无法实现无密码访问,可能是权限设置不对,重新检查下权限

注意 $ chmod 700 -R .ssh #设置.ssh目录权限,不要漏掉 -R参数,表示递归修改;或者在.ssh目录下使用命令 $ chmod 700 . 和 $ chmod 700 . .

3. scp: command not found

注:如果使用过程中提示“scp: command not found”这句,则说明你的服务器没有安装scp,请使用下面的命令安装。另外要注意的是,使用scp的时候,需要两台服务器都要安装scp,任何一方没有安装都不能正常使用:

安装代码如下:

yum -y install openssh-clients

实现liunx之间无密码访问——ssh密匙的更多相关文章

  1. ssh密匙互信操作【原创】

    1.简便ssh密匙信任方法 只在一台服务器上创建ssh-keygen [root@SMSJKSRVBJ02 ~]# ssh-keygen Generating public/private rsa k ...

  2. 普通用户之间的ssh无密码访问设置方法

    两台CentOS6.2服务器,客户端是node1,服务器是node2,先都用root用户配置,方法如下: 第一步:在客户端Node1:生成密匙对,我用的是rsa的密钥.使用命令 "ssh-k ...

  3. 多节点ssh免密匙登录

    1,在所有节点上,使用yourname用户名执行: ssh-keygen -t dsa -P '' -f /home/yourname/.ssh/id_dsa 2,在node1的/home/yourn ...

  4. ssh无密码访问设置(ssh-keygen 的详解)

    [原文链接]http://blog.csdn.net/wh_19910525/article/details/7433164 为了让两个linux机器之间使用ssh不需要用户名和密码.所以采用了数字签 ...

  5. Linux服务器SSH无密码访问

    1.编辑Hosts文件: [root@yqtrack-elk01 /]# vim /etc/hosts

  6. SSH 无密码访问其它机器 和 Windows 上 putty 无密码访问 Linux 机器

    1. 从一台 Linux 机器(ubuntu1)上无密码访问其它机器(ubuntu2) (1)登录 ubuntu1 并切换到用户比如 s1 (2)运行 ssh-keygen -t rsa (3)运行c ...

  7. ssh自动分发密匙脚本样板

    #!/bin/bash rom=/media/cdrom dir=/etc/yum.repos.d Use=$ mima=$ function yumj(){ [ -d "$rom" ...

  8. ssh的两种连接方法(包括无密码访问)

    一.正常连接方法:ssh root@10.0.0.20 二.无密码连接方法(有两台机器:此处我把被连接的称为服务器,另一台则称为客户端): 1.先在服务器添加目录 .ssh: mkdir  .ssh ...

  9. 无密码通过ssh执行rsync

    默认情况下,在执行rsync命令时通常需要我们输入密码.但有时我们并不希望如此,那么如何实现无密码执行rsync呢? 1. 测试通过ssh可以执行rsync(需要密码) 执行rsync,确保你帐户的密 ...

随机推荐

  1. 苹果 重置APPID密保问题及更新开发者协议

    [链接]重置AppleID密保问题 https://www.jianshu.com/p/37e7f2852eda [链接]苹果开发者计划许可协议更新:持续更新 https://www.jianshu. ...

  2. docker搭建nginx

    在Docker下部署Nginx,包括: 部署一个最简单的Nginx,可以通过端口访问默认的网站 设置记录访问和错误日志的路径 以交互模式创建centos容器,如果本地没有镜像,会从仓库获取, 等待即可 ...

  3. 『SpringMVC』<context:include-filter>&<context:exclude-filter>爬坑

    原文地址:https://segmentfault.com/a/1190000012972619 大家好,我是猪弟,猪在我心中从来不是蠢的代名词,而是懒的代名词,本次准备记录一个在开发测试过程中遇到的 ...

  4. 原生JS获取url汇总

    在WEB开发中,许多开发者都比较喜欢使用javascript来获取当前url网址,本文就此为大家总结一下比较常用获取URL的javascript实现代码 URL即统一资源定位符 (Uniform Re ...

  5. DB2 SQL1477N问题

    ERROR [55019] [IBM][DB2/NT] SQL1477N  For table "DB_YHJX.YHJX_FHDKFHZ" an object "521 ...

  6. c++ tricks

    1 关于virtual关键字的实验 1.1 在派生类中改变virtual函数访问权限 定义两个类A,B,其中B公有派生于A.A中定义一个private成员虚函数func,B中覆写此函数,但是将其访问权 ...

  7. 教你如何制作饼干icon教程

    Hello,不露又和大家见面了,今天给大家带来的是一个可爱Q弹的icon~ 看起来像块饼干是吧~ 做起来非常简单哦,快打开PS一起躁起来吧. 先来看看效果图: 步骤1:打开PS,新建一个800*600 ...

  8. javascript的一些札记

    1. 原来放在不同js文件里面的$(document).ready(function(){})都会执行到. 2. $(window).scroll(function(){})  窗口滚动事件. 3.  ...

  9. Android framework层实现实现wifi无缝切换AP

    http://www.linuxidc.com/Linux/2013-12/93476.htm Android市场上有一款叫Wifijumper的软件,实现相同ssid的多个AP之间根据wifi信号的 ...

  10. [转载红鱼儿]Delphi实现微信开发(3)如何使用multipart/form-data格式上传文件

    开始前,先看下要实现的微信接口,上传多媒体文件,这个接口是用Form表单形式上传的文件.对我来说,对http的Form表单一知半解,还好,查到这个资料,如果你也和我一样,必须看看这篇文章. 在xali ...