SSH密钥登陆(ssh-keygen)

总的来讲SSH方式验证有两种:shell

1 用户名密码方式,很常见。问题在于(根据网上资料)你可能登陆的不是你想登陆的服务器,可能存在中间机器进行欺骗(我本身理解,例如使用域名登陆而域名被篡改,就可能登陆到另外的机器上。还有一种状况就是堡垒机)。安全

2 密钥登陆。服务器

“若是你要链接到ssh服务器,ssh客户端会向ssh服务器发出请求,请求用你的密钥进行安全验证。ssh服务器在收到该请求以后,会先在ssh服务器上,检查你登录的用户的主目录下寻找对应的公钥,而后把它和你发送过来的公钥进行比较。若是两个公钥一致,ssh服务器就用公钥加密“质询”(challenge)并把它发送给ssh客户端。ssh客户端在收到“质询”以后就能够用你的私钥解密该“质询”,再把它发送给ssh服务器。”dom

 

下面介绍SSH密钥登陆设置方法:ssh

两台服务器A和B,要实现B用无密码方式登陆A。ide

1 在B机器上生成密钥:工具

[wcadmin@BLPCGT002 ~]$ uname -a
Linux BLPCGT002.lenovo.com 2.6.32-573.el6.x86_64 #1 SMP Wed Jul 1 18:23:37 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux
[wcadmin@BLPCGT002 ~]$ pwd
/home/wcadmin
[wcadmin@BLPCGT002 ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/wcadmin/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/wcadmin/.ssh/id_rsa.
Your public key has been saved in /home/wcadmin/.ssh/id_rsa.pub.
The key fingerprint is:
04:d0:72:aa:1e:08:ab:40:59:61:4c:c7:dd:be:3c:d9 wcadmin@BLPCGT002.lenovo.com
The key's randomart image is:
+--[ RSA 2048]----+
|  o+++o .        |
|  .oo.oo .       |
|  o  +  o        |
|.o  .  . .       |
|oo .    S +      |
|+ o      = E     |
|o. .      .      |
|. .              |
|                 |
+-----------------+
[wcadmin@BLPCGT002 ~]$ ll .ssh
total 12
-rw------- 1 wcadmin wcgrp 1675 Dec 21 09:56 id_rsa
-rw-r--r-- 1 wcadmin wcgrp  410 Dec 21 09:56 id_rsa.pub
-rw-r--r-- 1 wcadmin users 2365 Dec 20 17:54 known_hosts
[wcadmin@BLPCGT002 ~]$

2 在A机器上配置。加密

将B机器上~/.ssh/id_rsa.pub文件上传到A中,并将其内容放入在A中~/.ssh/中。以下:.net

wcadmin@BJLTPGPLM1001T.lenovo.com-/home/wcadmin/.ssh->scp wcadmin@10.99.200.46:/home/wcadmin/.ssh/id_rsa.pub id_rsa_10.99.200.46.pub
The authenticity of host '10.99.200.46 (10.99.200.46)' can't be established.
RSA key fingerprint is 78:73:74:20:e9:78:5b:27:68:be:c1:f4:71:a6:44:b6.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.99.200.46' (RSA) to the list of known hosts.
wcadmin@10.99.200.46's password: 
id_rsa.pub                                                                                                                 100%  410     0.4KB/s   00:00    
wcadmin@BJLTPGPLM1001T.lenovo.com-/home/wcadmin/.ssh->ll
total 8
-rw-r--r-- 1 wcadmin wcgrp  410 Dec 21 10:00 id_rsa_10.99.200.46.pub
-rw-r--r-- 1 wcadmin wcgrp 1968 Dec 21 10:00 known_hosts
wcadmin@BJLTPGPLM1001T.lenovo.com-/home/wcadmin/.ssh->cat id_rsa_10.99.200.46.pub  > authorized_keys
wcadmin@BJLTPGPLM1001T.lenovo.com-/home/wcadmin/.ssh->ll
total 12
-rw-r--r-- 1 wcadmin wcgrp  410 Dec 21 10:00 authorized_keys
-rw-r--r-- 1 wcadmin wcgrp  410 Dec 21 10:00 id_rsa_10.99.200.46.pub
-rw-r--r-- 1 wcadmin wcgrp 1968 Dec 21 10:00 known_hosts
wcadmin@BJLTPGPLM1001T.lenovo.com-/home/wcadmin/.ssh->rm id_rsa_10.99.200.46.pub

上面是最简单的方法。code

 

下面进行一些说明。

1 B中密钥文件id_rsa必须保证访问权限为600,不然登陆仍是会提示输入密码。

[wcadmin@BLPCGT002 .ssh]$ pwd
/home/wcadmin/.ssh
[wcadmin@BLPCGT002 .ssh]$ ll
total 12
-rw------- 1 wcadmin wcgrp 1675 Dec 21 09:56 id_rsa
-rw-r--r-- 1 wcadmin wcgrp  410 Dec 21 09:56 id_rsa.pub
-rw-r--r-- 1 wcadmin users 2365 Dec 20 17:54 known_hosts
[wcadmin@BLPCGT002 .ssh]$

2 ssh-keygen默认加密方式为rsa,能够经过文件名或者查看文件内容得知。

[wcadmin@BLPCGT002 .ssh]$ more id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAw75ZqWFoMU66VUYB7IJmGKT2x5iVyujcK1B99LyBXNgQ1BFdElw6zEG8Gb+95T3Q35P8QVVG6yGe9vpIJ6fFuvePgK6Ssd4GfG41Jpwc3Yiics0mR7ENijyaE
1gIwIxwxfn/BNjymXS8lA8yhRdYpg68H+jh2E/qGlJ/wrYFSfunrWp5LtJHrnNDHbfjGKZn2ZhMZsrTkj2WdZjhB9QlxC64SJpCTcAFXW0MutvZkm7XXg0IBCoYLkbLYkMGlO7moU4BwfBNVAFv4mJaMurzNA
kr2JuVcPXHqfGklGEzQm+L/AZpo3QZEuuyoC/nI+VmMnFZdswZ4gbIhgroiYfmxw== wcadmin@BLPCGT002.lenovo.com
[wcadmin@BLPCGT002 .ssh]$

如上,ssh-rsa开头。

另外ssh-keygen能够指定加密方式,例如ssh-keygen -t dsa。

还有其余参数好比密钥长度,能够参考帮助。

 

3 ssh-keygen生成密钥时,能够设置私钥加密,可是通常咱们都不设置。

4 在window下也能够设置,例如使用xshell等工具设置。

 

这里有比较详细的说明:https://my.oschina.net/lanni654321/blog/414523