`

使用ssh-keygen设置ssh无密码登录

 
阅读更多

也知道这个东西,大家都会,就当是谁忘了的时候,做个提醒的吧。。。

 ssh 是一个专为远程登录会话和其他网络服务提供安全性的协议。默认状态下ssh链接是需要密码认证的,可以通过添加系统认证(即公钥-私钥)的修改,修改后系统间切换可以避免密码输入和ssh认证。以下将创建过程简单介绍下。

 

假设 A 为客户机器,B为目标机;

 

无密原理:

A作为客户端,要实现无密码公钥认证,连接到服务器B上时,需要在A上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的B上。当A通过 SSH连接B时,B就会生成一个随机数并用A的公钥对随机数进行加密,并发送给A。A收到加密数之后再用 私钥解密,并将解密数回传给B,B确认解密数无误之后就允许A进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密 码。重要过程是将客户端A复制到B上。

要达到的目的:
A机器ssh登录B机器无需输入密码;
加密方式选 rsa|dsa均可以,默认dsa

做法:
1、登录A机器
2、ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
3、将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys
4、大功告成,从A机器登录B机器的目标账户,不再需要密码了;

 

ssh-keygen做密码验证可以使在向对方机器上ssh ,scp不用使用密码.
具体方法如下:
ssh-keygen -t rsa
然后全部回车,采用默认值.

这样生成了一对密钥,存放在用户目录的~/.ssh下。
将公钥考到对方机器的用户目录下,并拷到~/.ssh/authorized_keys中。

要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。(今天就是遇到这个问题,找了好久问题所在),其实仔细想想,这样做是为了不会出现系统漏洞。

 

 

 

一、用ssh-keygen创建公钥

haifeng@haifeng-EX38-DS4:/$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/haifeng/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/haifeng/.ssh/id_rsa.
Your public key has been saved in /home/haifeng/.ssh/id_rsa.pub.
The key fingerprint is:
7b:75:98:eb:fd:13:ce:0f:c4:cf:2c:65:cc:73:70:53 haifeng@haifeng-EX38-DS4
The key's randomart image is:
+--[ RSA 2048]----+
|                E|
|                .|
|              ...|
|             + =.|
|        S   + +.*|
|         . . + Bo|
|        . . . = =|
|         . . . * |
|            . ..=|
+-----------------+

 

##输入后,会提示创建.ssh/id_rsa、id_rsa.pub的文件,其中第一个为密钥,第二个为公钥。过程中会要求输入密码,为了ssh访问过程无须密码,可以直接回车 。

2.查看钥匙。

[root@localhost .ssh]# ls ~/.ssh/
id_rsa  id_rsa.pub  known_hosts

###可以发现 ssh目录下的两枚钥匙。

3.将公钥复制到被管理机器上面

[root@localhost .ssh]# scp id_rsa.pub root@192.168.36.194:~/.ssh/authorized_keys
root@192.168.36.194's password:
id_rsa.pub                                    100%  408     0.4KB/s   00:00

 

4.访问

# ssh 192.168.36.194
The authenticity of host '<Game2> (<192.168.36.194>)' can't be established. 
RSA key fingerprint is 34:b9:92:06:53:e6:91:4d:47:92:73:57:78:6a:5d:09. 
Are you sure you want to continue connecting (yes/no)?yes 
Warning: Permanently added '
<Game2> (<192.168.36.194>' (RSA) to the list of known hosts. 

这是因为首次访问后,ssh会在.ssh/known_hosts中保存各个认证过的主机信息:

192.168.36.194 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAppStzIRxeFn0e737z7KO1tdm6CJUoLapaaoBDZqHy0Z11cUAmpg02dbrqwU7TBY9lDFwWQcry+W8X8qk1CoPdzu8YcMCpw5425mai0/RxkB/RPZ1putL2DQrRBMRTU1m5meLOYRXYlnU5E+YElCgH+ZJ8EXiurOzDvw6vi7pASi9wMQuJosFyNmv5E9/8ULgaKg3LtvP+0O1wPxrHOBDwVq2u9Oi7T2pX8deBEnOI4uG4CGXn/p0ml+uuS4DO3Up2VjqoRtqtuzWExnTyAGS/wQNnN3mera1ERya3FomEVHJRV5K2zJRkgSF8WfETXzQ2rAliOsW/YLTGF8vVvjo5w==

5.再次访问,ssh登录发现可以不用密码登录。

[root@localhost .ssh]# ssh 192.168.36.194
Last login: Fri Apr 22 00:56:45 2011 from 192.168.18.44
[root@Game2 ~]#
 

本文出自 “海风的linux之路” 博客,请务必保留此出处http://lhflinux.blog.51cto.com/1961662/526122

分享到:
评论

相关推荐

    ssh-keygen 兼容方案

    在IT行业中,SSH(Secure Shell)是一种用于在网络之间安全传输数据的协议,广泛应用于远程登录、文件传输等场景。SSH密钥对的生成是SSH安全性的基础,`ssh-keygen`命令是Unix/Linux系统中用于生成这些密钥的工具。...

    ssh-keygen 中文手册

    ssh-keygen 中文手册

    Linux 配置SSH免密登录 “ssh-keygen”的基本用法

    SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。 SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。 为了在不同平台/...

    SSH的ssh-keygen命令基本用法详解

    SSH(Secure Shell)是一种网络...总的来说,`ssh-keygen`是SSH公钥认证的关键工具,通过合理使用它可以提高远程访问的安全性,同时简化登录流程。了解其基本用法和安全实践,能帮助你更好地管理你的SSH密钥和认证。

    使用ssh-keygen,实现免密码登陆linux的方法

    ### 使用ssh-keygen实现免密码登录Linux的方法 在日常运维工作中,频繁地通过SSH协议登录服务器进行管理和操作是常见的需求之一。为了提高工作效率并确保安全性,实现免密码登录Linux主机是一种非常实用的方法。...

    详解SSH如何配置key免密码登录

    ### SSH Key 免密码登录详解 #### 一、SSH Key 的基本概念与原理 SSH(Secure Shell)是一种网络协议,用于计算机之间的加密登录。通过SSH,可以在非安全的网络环境中提供安全的远程登录服务,其安全性主要依靠...

    ssh-keygen-web:在Web浏览器上生成ssh-keygen的密钥对

    本文将深入探讨`ssh-keygen`的原理、使用方法以及`ssh-keygen-web`项目,它允许用户在Web浏览器上生成SSH密钥对。 首先,让我们了解SSH密钥对的工作原理。SSH基于非对称加密技术,其中包含两个密钥:公钥和私钥。...

    Linux系统下如何做到SSH免密码登录

    本文将详细解释如何在Linux系统中设置SSH免密码登录。 首先,我们要理解SSH免密码登录的基本原理。这依赖于SSH密钥对,即一个公钥和一个私钥。公钥存储在远程服务器上,而私钥保留在本地机器上。当本地机器尝试连接...

    js-keygen:浏览器中的ssh-keygen

    使用webcrypto API生成ssh密钥对 观看现场演示,为 ... 在其他任何地方,您都应该可以使用ssh-keygen,这是为SSH生成密钥对的推荐方法。 如何从OpenSSH公钥格式转换为PEM 有关如何转换,请参见 。

    ssh-key秘钥无密码登录和批量分发详细笔记文档实战案例

    在使用SSH秘钥无密码登录时,可能会遇到一些常见问题,如秘钥权限问题、网络连接问题等。解决这些问题需要检查秘钥权限、网络连接状态和服务器配置等。 六、实战案例 以下是一个实战案例,A机器的IP地址为192.168....

    postgres用户下ssh无密码登录

    然后,可以使用ssh命令从node1服务器无密码登录到node2服务器: su - postgres ssh-keygen exit cat /var/lib/pgsql/.ssh/id_rsa.pub &gt;&gt; ~/.ssh/authorized_keys cat /var/lib/pgsql/.ssh/id_rsa.pub &gt;&gt; /var/lib/...

    generate-ssh:ssh-keygen 的封装

    generate-ssh 是一个围绕 ssh-keygen 工具的小包装。 它支持正确的错误处理,不会多次调用回调 (:&lt;) 并且支持在 Windows 上定位 ssh-keygen 可执行文件。 生成(选择{附加路径,评论,位},cb(错误,数据{私人,...

    OpenSSH登录SSH2

    这里假设上传到IP地址为`192.168.0.1`的机器上,并且OpenSSH机器将使用`root`用户免密码登录SSH2机器。 ##### 2. SSH2端操作步骤 - **步骤1**: 在SSH2机器上的用户主目录下创建`.ssh2`子目录,如果该目录已存在,...

    使用ssh、scp不需要密码

    ssh 和scp 是 Linux 系统中常用的远程登陆和文件传输工具,但是使用它们需要输入密码,这就带来了不便。为了解决这个问题,文章介绍了一种使用 ssh 和 scp 不需要密码的方法。 密钥对的生成 密钥对是公钥和私钥的...

    ssh-keygen:在node.js中生成SSH密钥对

    ssh-keygen 生成SSH密钥对 安装 确保您拥有ssh-keygen(如果不确定,请尝试$ ssh-keygen ) npm软件包安装 npm install ssh-keygen 或从github下载并放在./node_modules中 用法 var keygen = require ( 'ssh-...

    ssh(ssh-keygen)配置免输入密码登录远程主机的方法

    在SSH中,`ssh-keygen`是一个用于生成公钥和私钥对的工具,这是实现无密码登录的关键。本篇文章将详细讲解如何通过`ssh-keygen`配置免输入密码登录远程主机。 首先,我们需要在本地主机上生成SSH密钥对。在本地主机...

Global site tag (gtag.js) - Google Analytics