环境描述

两台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. OC 线程操作 - GCD队列组

    1.队列组两种使用方法2.队列组等待 wait /** 新方法 队列组一般用在在异步操作,在主线程写队列组毫无任何作用 */ - (void)GCD_Group_new_group___notify{ ...

  2. [SoapUI] 将科学计数法转化为普通数字,并且只保留小数点后几位

    方案一: import java.text.NumberFormat class CompareHashMap { def regEx_Numeric = '-?[1-9]\\d*$|-?([1-9] ...

  3. Spring boot 默认静态资源路径与手动配置访问路径的方法

    这篇文章主要介绍了Spring boot 默认静态资源路径与手动配置访问路径的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下   在application.propertis中配置 ##端口号 ...

  4. 如何修改路由器的登录IP地址?

    如何修改路由器的登录IP地址? 因为有多个路由器,为了区分不同路由器,我们可以修改它的登录IP,而且修改后,可以在连接的电脑上直观地知道所连接的是哪一台路由器 买回来的路由器,一般默认的登录地址是19 ...

  5. Devexpress VCL Build v2013 vol 14.1.3 发布

    我修,我修,修修修. New Major Features in 14.1 What's New in VCL Products 14.1 Breaking Changes To learn abou ...

  6. 一款非常好用的boostrap的验证插件、再也不用自己手写正则表达式和js了

    基于jquery.bootstrap数据验证插件bootstrapValidator教程 bootstrap:能够增加兼容性的强大框架. 因为项目需要数据验证,看bootstrapValidator ...

  7. @GeneratedValue和@GenericGenerator(转)

    一.JPA通用策略生成器 通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id, 其生成规则由@GeneratedValue设定的.这里 ...

  8. Part 2 - Fundamentals(4-10)

    https://simpleisbetterthancomplex.com/series/2017/09/11/a-complete-beginners-guide-to-django-part-2. ...

  9. arduino一些内容

    arduino 套件使用说明书V1.0.pdf, 步进电机 DHT11 传感器另外一脚要接A0 /* Web client This sketch connects to a website (htt ...

  10. k8s容器挂载配置文件

    1.新建ConfigMap apiVersion: v1 kind: ConfigMap metadata: name: test-conf namespace: default labels: na ...