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

假设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
具体方法如下:
ssh-keygen -t rsa
然后全部回车,采用默认值。
这样生成了一对密钥,存放在用户目录的/.ssh下。
将公钥考到对方机器的用户目录下,并拷到
/.ssh/authorized_keys中。
3、将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_rsa.pub >> ~/.ssh/authorized_keys
或直接执行下面的操作:
将公钥(.pub文件)从A机器复制到B机器上面

1
2
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、设置文件和目录权限:
设置authorized_keys权限
$ chmod 600 authorized_keys
设置.ssh目录权限
$ chmod 700 -R .ssh
5、大功告成,从A机器登录B机器的目标账户,不再需要密码了。

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

总结注意事项

  1. 文件和目录的权限千万别设置成chmod 777,这个权限太大了,不安全,数字签名也不支持。
  2. 生成的rsa/dsa签名的公钥是给对方机器使用的,这个公钥内容还要拷贝到authorized_keys。
  3. linux之间的访问直接 ssh 机器ip
  4. 某个机器生成自己的RSA或者DSA的数字签名,将公钥给目标机器,然后目标机器接收后设定相关权限(公钥和authorized_keys权限),这个目标机就能被生成数字签名的机器无密码访问了。

在windows下面安装了git后,没有使用 git bash 去生成key时,可能会出现以下错误

1
2
3
4
5
6
7
8
9
10
11
12
13
Microsoft Windows [版本 6.3.9600]
(c) 2013 Microsoft Corporation。保留所有权利。

C:\Users\Loftor>ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (//.ssh/id_rsa):
Could not create directory '//.ssh': No such file or directory
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
open //.ssh/id_rsa failed: No such host or network path.
Saving the key failed: //.ssh/id_rsa.

C:\Users\Loftor>

这个错误的原因是我们没有配置环境变量HOME目录,从而找不到目录。

所以我们只要在环境变量中增加HOME就能解决问题了!~

环境变量HOME配置.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
C:\Users\Loftor>ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Loftor/.ssh/id_rsa):
Created directory '/c/Users/Loftor/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Loftor/.ssh/id_rsa.
Your public key has been saved in /c/Users/Loftor/.ssh/id_rsa.pub.
The key fingerprint is:
04:14:6f:66:3f:f5:71:d0:d7:36:82:c6:09:94:fe:45 Loftor@LOFTOR-PC
The key's randomart image is:
+--[ RSA 2048]----+
| .+..o+ o ...|
| o . = E o=|
| B . o o.+|
| = o . o o |
| S + . . |
| o |
| |
| |
| |
+-----------------+

C:\Users\Loftor>

参考地址:
Window下 使用自带命令行使用ssh-keygen
使用ssh-keygen设置ssh无密码登录
ssh-keygen 的 详解