总的来讲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等工具设置。