Linux服务器间无需密码的SSH配置

来源:互联网 发布:淘宝e5620电脑能买吗 编辑:程序博客网 时间:2024/04/30 08:22

openSSH的默认设置是允许root可以直接login. (PermitRootLoginyes), 暂且保留这种设置,我们先考虑如何用SSH直接从A到B不需要密码,假设用用户root登录到A,想SSH到B也作为root不需要密码。 lv"eZ#Sx0

  1. 分别从A和B上登录作为root后运行ssh-keygen,目的是简单地在/root下创建目录.ssh,当提示输入51Testing软件测试网'eS+`2c8z Z*N,Ly
      passphase时打入两次回车。这将生成/root/.ssh/identity and/root/.ssh/identity.pub
  2. 测试一下,从A登录作为root,打入#ssh B,会要求提示root password。
  3. 现在从A登录作为root,运行scp /root/.ssh/identity.pubB:/root/.ssh/authorized_keys。
    P Yw/M-v0文件名必须不能弄错。
  4. 现在再从A运行#ssh B则不需要密码了:)
基本原理:

M(F4g)P!A0    如果你希望从A作为用户user1 SSH 到B作为用户user2,若要用RSA键对法认证且不需要密码,则B上的ssh后台程序拿出~user2/.ssh/authorized_keys中的与A有关的RSA公钥来对A上的以user1身份运行的ssh客户程序进行挑战,前面我们已经把A上的identity.pub拷贝到B上作为authorized_keys了。则A保持私钥identity,而B上的sshd又拿出A的公钥来挑战,因此成功,你可以加很多行到authorized_keys以允许其它服务器的公钥可以加进来。

k^3u.vmbj0

实际应用举例:

51Testing软件测试网l#E!h1F l5r!D/I~q

使用SSH命令连接一台服务器,默认情况下会提示我们输入密码:51Testing软件测试网JE%{e%ov
willis:~ # ssh 192.168.4.24951Testing软件测试网bLwE-D Ud qa
Password:51Testing软件测试网_/rnFMz

51Testing软件测试网1]8R"W[^2I,Uk&k0m

创建密钥:51Testing软件测试网:~ufQV M{Z0K6_
willis:~ # ssh-keygen -t rsa51Testing软件测试网:_q6w^*I^%uv/
Generating public/private rsa key pair.51Testing软件测试网-}1TL)hn4b+d[
Enter file in which to save the key (/root/.ssh/id_rsa):
&jS`,{4oN%^0Enter passphrase (empty for no passphrase):
6U�T8bzI�p0Enter same passphrase again:51Testing软件测试网W!Yr,l#XMI
Your identification has been saved in /root/.ssh/id_rsa.51Testing软件测试网G8}5nA ] k/vlI(gR
Your public key has been saved in /root/.ssh/id_rsa.pub.51Testing软件测试网 Up0Zh4|hW�Q /2z
The key fingerprint is:
0Ks'E)ksW?;S0ae:1e:a6:49:b9:51:1e:27:bc:a6:7d:dd:bb:6b:1a:55root@willis
"j5N1xK.tT5V0willis:~ #51Testing软件测试网.H'V_6yGR `�wy

51Testing软件测试网PJ mIE

注意:输入上面的ssh-keygen命令后,不用输入任何信息,直接按回来就可以了,其中参数-t rsa是加密的类型,创建后的密钥在用户主目录中的隐藏目录.ssh中,

[~VcB-]051Testing软件测试网5c3vBndFCh }%n"g$B

willis:~/.ssh # ls51Testing软件测试网5^:M z-d;~v5eo
authorized_keys id_rsa id_rsa.pub known_hosts
&RZ&k/v D0willis:~/.ssh #51Testing软件测试网n&M~T&J:/Rp4V

G3g caeS%P0id_rsa.pub是公钥,id_rsa是私钥,known_hosts保存着所有已发生连接服务器的信息,需要将公钥里的信息拷贝到登陆服务器用户主目录中的隐藏目录.ssh的文件authorized_keys中,

4k/aug3d(Lg-{U)m!N}051Testing软件测试网f*`Ni Ai5n

先看看*.pub文件的内容:
.]d9/7mt6FK$u0willis:~/.ssh # cat id_rsa.pub51Testing软件测试网:P#DLcz3D n
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAz61yRO3qGkjNPFpYd9nW4O5F1byghbrCXlxMtB3IKDVHxX9ojybRzZcDDl6KN8w0hq08vWpgjlC
~CM8k2B"R0GkYcU75BXCk7zA/5jABejIUOMzgzC+A9b0eNm9ebTInXmfWlYf3P+axDgUlJ84MTAxa68l+Q/6uYc3KbVSsttB6/F37DRZGlTdSyKn51Testing软件测试网[,@9qG3CQ
19BimZtZ/M7lyMtqJpYovypxkesbkJjW85sIr2lZeuxqRZWz1ixBwMQyljUvwbHvCS91mzjS76ngKchOCyt9XbwHuL/cXHKMOHgcb
q7o)L{+JrM0uDqZS8kZFycwVkaNc5f+pZuQ/W8X9Iei35yUEa8qI53Z9o/09fBdOJbl7W5eXLyw==root@willis
#_|�@YK NR j8/0willis:~/.ssh #

M?TF7B9h$Wq"I051Testing软件测试网6UsMa&rY7|b"X

拷贝文件:51Testing软件测试网r-v5jyg;TZ*W
willis:~/.ssh # scp id_rsa.pubroot@192.168.4.249:/root/.ssh/192.168.4.49
9B_|K"a(Sk^H4yM0Password:
RU+Z6b*[6`0id_rsa.pub 100% 394 0.4KB/s 00:0051Testing软件测试网 Ko}7U3b n+N�k
willis:~/.ssh #51Testing软件测试网"i m {"OaM7I2T

51Testing软件测试网&[8q+Q-Tj2ydb

scp命令和ssh命令都属于同一个包,前面的s都表示secure,这样无论在传输数据或是远程连接都是经过加密的,不用担心数据被直接截获。拷贝过去之后,先登陆到这台服务器上。
/O0?{em0willis:~/.ssh # ssh 192.168.4.249
D+Lx,]"U a2u7h0Password:51Testing软件测试网'Tqk,L;a.eK
Last login: Sun Jul 8 11:15:18 2007 from 192.168.4.49
)F4l bgw0Have a lot of fun...
't ?6wn4Jc0amd64:~ #51Testing软件测试网b^|5kw#zm

,Tq;^/k.Gv4|N0amd64:~ # cd .ssh
,c9~l!I$?PCm0amd64:~/.ssh # ls51Testing软件测试网Bp^)z&k4L(k1u!y0Q0D
192.168.4.49 authorized_keys authorized_keys2 id_rsa id_rsa.pub known_hosts
Bvp.j4_KF8L0amd64:~/.ssh #

8ukX+{ e;I l051Testing软件测试网9q7?VM-R@H'D y

192.168.4.49就是刚才传过来的公钥文件,为了保证文件的唯一和可管理性,建议用这个文件命名的方式,要不然信任关系建多了就不好管理了,将这个文件的内容复制到authorized_keys文件中:51Testing软件测试网1w)q@$I6j[S
amd64:~/.ssh # cat 192.168.4.49
4I/?T}@pC#Pqi/x0ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAz61yRO3qGkjNPFpYd9nW4O5F1byghbrCXlxMtB3IKDVHxX9ojybRzZcDDl6KN8w0hq08vWpgjlCGkYcU75BXCk7zA/5jABejIUOMzgzC+A9b0eNm9ebTInXmfWlYf3P+axDgUlJ84MTAxa68l+Q/6uYc3KbVSsttB6/F37DRZGlTdSyKn19BimZtZ/M7lyMtqJpYovypxkesbkJjW85sIr2lZeuxqRZWz1ixBwMQyljUvwbHvCS91mzjS76ngKchOCyt9XbwHuL/cXHKMOHgcbuDqZS8kZFycwVkaNc5f+pZuQ/W8X9Iei35yUEa8qI53Z9o/09fBdOJbl7W5eXLyw==root@willis51Testing软件测试网)KkN@@ _L1{V2m
amd64:~/.ssh # cat 192.168.4.49 >> authorized_keys

p,UVR1OGG&FtL1a0

@(w8Z0wF0注意:要用“>>”这个符号,该符号表示追加,不会将以前的内容删掉,默认情况下,authorized_keys这个文件是不存在的,需要手动来创建,因为比较长不太好记忆,可以通过这个方法来查找:51Testing软件测试网6/_s)Jvc x

51Testing软件测试网d(KaQK'|.zS0P

amd64:~/.ssh # man ssh-keygen
m#{B]/?0显示帮助信息后,搜索"auth"这个关键字就可以了,下面就让我们重新登陆测试一下,先退出当前登陆的主机环境:51Testing软件测试网K(Uk|!/

51Testing软件测试网V1hAu:/Q0^/H

amd64:~/.ssh # exit

krF WQ}051Testing软件测试网*Xl+ta+ADo

重新SSH连接:
j)MwN!e*@V+rRc*L0willis:~/.ssh # ssh 192.168.4.249
,kd'x8fMPt-leJ0Last login: Sun Jul 8 11:26:41 2007 from 192.168.4.49
&_)CZ o1_@F tG0Have a lot of fun...
?zsiQ�sH0amd64:~ #

+X#G&` iD9D7E3f051Testing软件测试网C/nk'v8_ x`如果配置和文件名的拼写都正确,那么将不会再提示输入密码的信息,根据我的经验,大多数配置失败都是因为authorized_keys的文件命令有误,所以要多多注意。好了!配置到这里,SSH的信任关系就成功了,虽然很简单,但有很多概念性的东西需要我们掌握,如果想进一步了解,可以看看相关的帮助文档,还有/etc/ssh目录中的SSH配置文件51Testing软件测试网h#i(Jv0N,?}

原创粉丝点击