SSH Key认证

我们ssh连接到某台linux主机时,需要输入账号密码。为了免密码登录,我们通常使用SSH Key认证的方式。原理大概如下:

我们要从A主机ssh登录到B主机,通常我们在A主机上生成密钥对,然后将A主机的公钥传到B主机的某个账户家目录下的.ssh/authorized_keys文件中。比如我们需要从A主机上的root账户下用B主机的root账号来登录B主机,则需要将A主机上root账号的公钥传到B主机的root账户下的authorized_keys文件中。

实验环境:

主机A:172.16.206.132

主机B:172.16.206.131

1、首先在A主机上生成密钥对:

[email protected]:~/.ssh# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
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:
82:6d:c4:a8:84:d4:f9:5f:05:42:c9:e5:64:0a:cb:c9 [email protected]
The key‘s randomart image is:
+--[ RSA 2048]----+
| .. ..ooo=.      |
|.. ooo+o*  .     |
|. . oEo. ..      |
| . . =   .       |
|  . . = S        |
|     . o         |
|                 |
|                 |
|                 |
+-----------------+

查看生成的文件,注意文件权限

[email protected]:~/.ssh# ll
total 16
-rw-r--r-- 1 root root  392 Feb 17 01:02 authorized_keys
-rw------- 1 root root 1675 Jun 14 21:36 id_rsa
-rw-r--r-- 1 root root  396 Jun 14 21:36 id_rsa.pub
-rw-r--r-- 1 root root 1976 Jun 14 21:19 known_hosts

id_rsa:私钥文件

id_rsa.pub:公钥文件

authorized_keys:存放其他主机上的公钥文件,实现SSH 认证的

known_hosts:ssh登录过的主机

2、将A主机的公钥传到B主机的root账户下

此操作需要输入B主机上root用户的密码

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
The authenticity of host ‘172.16.206.131 (172.16.206.131)‘ can‘t be established.
RSA key fingerprint is 74:d8:e6:2a:9e:86:22:a7:1e:82:01:f5:79:0d:35:5a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘172.16.206.131‘ (RSA) to the list of known hosts.
[email protected]‘s password: 
Now try logging into the machine, with "ssh ‘[email protected]‘", and check in:
  .ssh/authorized_keys
to make sure we haven‘t added extra keys that you weren‘t expecting.

注意:上面的方法等效于直接在B主机的root账户的/root/.ssh/目录下创建authorized_keys文件,然后将A主机的公钥复制到这个文件中。注意文件的权限。

3、登录B主机查看authorized_keys文件,可以看到A主机的root账户的公钥

[[email protected] .ssh]# cat authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAsZOYbiGl5zu1BNETCDNJQryHIwz1rVgE/Bhp/dWpJBHTUkTASWBdAe9AP85ADe5rXtjt9atFkXZ/v4O8e2C8fPyY1qXaGcTq2qaB1x62SVrsYvL0eE3TEr0T7eIIC3I1540t/NNe4Tc6ao5/kC+NOFJPfFNqQ+UOdZTdkuHWsCZqd0aFLrXkgLaMe1ZFhBeG54ncmZ6heAbmbtpmc19qrPY9C8HY5FsV851MMjRvMohRiAMvB0JuHrneJwRKQ3OJLsgm4gDs3rfDj1cjveLzFSihsikVB9XKGmPquoY5BfZ2zQo6Mu3OwJ+5lhbe9ObSCoC9bkZnTJd9Rwz2sUlEiQ== [email protected]

4、从A主机ssh登录B主机

[email protected]:~# ssh [email protected]
Last login: Thu Jun 16 11:05:21 2016 from 172.16.206.1

A主机登录B主机无需输入密码,直接可以登录。

扩展:从上面的案例我们可以知道谁想要SSH连接到其他主机,则需要在本机上生成密钥对,然后将公钥传到对方账户下的authorized_keys文件中即可。但是如果假设有这样一种情况,现在有很多个主机,都想要SSH登录A主机,但是不希望在每一台主机上都创建密钥对,怎么办呢?

可以将A主机的私钥文件拷贝到每台主机上面,然后A主机的公钥拷贝到A主机的authorized_keys文件中,这样A主机拿公钥,其他主机拿私钥,就可以实现SSH key认证了。

总结:SSH Key认证很灵活,只要密钥对是匹配的,就可以实现认证,不管这个密钥对是由谁生成的。

时间: 2024-07-28 13:10:06

SSH Key认证的相关文章

git使用ssh key认证步骤摘要

建议用Git Bash进行SSH生成及认证 1.看看~/.ssh目录下有无文件,有则直接跳至第三步. $ ls ~/.ssh 2.生成一个新的SSH key $ ssh-keygen -t rsa -C "[email protected]" 3.启动ssh代理(有两种方法,第一种不行,可以选第二种试试) $ ssh-agent -s 或者 $ eval `ssh-agent -s` 4.将key存入ssh代理 $ ssh-add ~/.ssh/id_rsa 5.将pub ssh ke

Linux SecureCRT ssh key认证登录

通过SecureCRT创建key登录认证 一.生成公钥/私钥 使用SecureCRT的工具->创建公钥,加密算法选择RSA,因为sshd配置文件中选择了RSA算法. 通行短语可以不输入.但要求输入,登陆的时候会要求你输入通行短语. 并修改Comment 相关信息,采用个人账户名称@服务器信息方式 填写密钥长度,默认是1024 这里选择生成的密钥使用 OpenSSH Key 格式.如果选择默认的格式,上传到服务器的时候需要执行格式转换的工作,需要通过命令行来连接的也需要通过securecrt来转换

ssh以及ssh的key认证

1.什么是openssh 是一个提供远程访问控制的软件. 2.通过ssh远程登陆 ssh [email protected]  #登陆 louout           #登出 2.ssh的key认证 key分为公钥与私钥      # 公钥相当于锁  私钥相当于钥匙 (1) 创建key ssh-keygen  #生成key [[email protected] Desktop]# ssh-keygen             #创建key Generating public/private r

ssh key密钥认证实现批量分发、管理、部署

在实际生产环境中,如果需要批量管理和部署服务器,可以采用ssh+key秘钥认证,然后可以免密码进行数据分发,服务部署及管理. SSH服务(TCP端口号22):安全的命令解释器 为客户机提供安全的Shell 环境,用于远程管理 SSH基于公钥加密(非对称加密)技术: 数据加密传输: 客户端和服务器的身份验证: 公钥 和 私钥   是成对生成的,这两个密钥互不相同,两个密钥可以互相加密和解密:不能根据一个密钥而推算出另外一个密钥: 公钥对外公开,私钥只有私钥的持有人才知道. ssh批量分发 首先需要

ssh基于key认证登陆

ssh基于key认证登陆一.在客户端生成密钥对 ssh-keygen -t rsa [-P ''] [-f "~/.ssh/id_rsa"] ## -r rsa:指定算法 ## -P :加对称秘钥口令 ## -f :可以指定生成路径 ## /.ssh/id_rsa 生成秘钥默认路径 我们简单操作就不加密码了 [[email protected] .ssh]# ssh-keygen Generating public/private rsa key pair. Enter file in

ssh自动化认证

设置SSH自动化认证需要两步. (1)在本机创建SSH密钥. (2)将生成的公钥传到远程主机,并将其加入到~/.ssh/authorized_keys中. 创建SSH密钥,输入命令ssh-keygen,并规定加密算法类型为RSA: [[email protected] tmp]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_

google关于ssh key的解释(转)转的google的wiki的

SSH keys (简体中文) SSH 密钥对可以让您方便的登录到 SSH 服务器,而无需输入密码.由于您无需发送您的密码到网络中,SSH 密钥对被认为是更加安全的方式.再加上使用密码短语 (passphrase) 的使用,安全性会更上一层楼. 同时,我们可以使用 SSH agent 来帮助我们记住密码短语,无需我们记住每一个密钥对的密码短语,减轻了我们的负担. 本文将为您介绍如何管理密钥对,以方便的连接到您的 SSH 服务器.本文默认您已经熟知 Secure Shell (简体中文),并安装好

第三十天-ssh key企业批量分发自动化管理案例

本文实现一个应用ssh key 批量分发案例 目录 一.ssh key 原理及案例原理简图 1.ssh key 简介 2.rsa和dsa区别 3.ssh-copy-id的特殊应用 4.ssh-copy-id的原理 5.案例简图 二.操作步骤 三.具体实现步骤 服务端A: 客户端B: 客户端C: 四.ssh 批量分发与管理方案小结 五.企业级生产场景批量管理,自动化管理方案 一.ssh key 原理及案例原理简图 1.ssh key 简介 特别提示:在整个方案实现中,公钥(public key)和

ssh公钥认证原理及设置root外的其他用户登录ssh

1)创建其他用户 useradd [-d 登录目录] [-G ssh][用户名] 一定要将用户添加到ssh组不然无法没有权限登录ssh 2)设置ssh不允许root登录 vi /etc/ssh/sshd_config 找到 PermitRootLogin yes 修改为PermitRootLogin no 并在尾部添加 AllowUsers  [用户名列表] 然后重启ssh服务,/etc/init.d/ssh restart 3)如何使用公钥认证 先解释下什么是公钥密钥: 公钥私钥是不对称加密方